Avatar billede stich Nybegynder
15. december 2003 - 02:44 Der er 14 kommentarer og
1 løsning

redirect-system

Jeg vil gerne have et system, hvor jeg kan sende brugerne hen til div. sider, blot ved at skrive et link-nummer. Som man fx har det på newz.dk. Jeg er lidt i tvivl om hvordan det skal bygges op, men forestiller mig en side redir.php, så noget med tjek af linket, og if blabla == dether ($header = blabla.dk) else if osv. Men er det den nemmeste/bedste måde? Eller kan man køre det gennem mysql i stedet? Eller er jeg helt afsporet? :S

mvh STICH
Avatar billede detox Nybegynder
15. december 2003 - 02:51 #1
Hvis du ligger dine links i MySQL behøver du blot at hente linket med det pågældende id og redirect. Det vil osse gøre det mere praktisk når du skal vise de forskellige links, fx alfebetisk eller i kategorier.
Avatar billede stich Nybegynder
15. december 2003 - 02:58 #2
Oki! Ja sådan noget jeg havde lidt i tankerne...selv om det ikke er det vigtigste. Meneh, kan du hjælpe mig lidt på vej med koden? jeg skal lave en tabel til links cføli, og har en ide om at gemme med id-int, header-text, og evt. beskrivelse-text. Men jeg er først lige startet ordentligt på skidtet for en uge eller to siden, så hvis du/I nu skulle være en ørn til det, ville je gblive meget glad for et lille stykke kode eller to =) Men jeg går dog i gang med at prøve selv...med lidt held finder jeg selv ud af det, inden folk står op :)
Avatar billede detox Nybegynder
15. december 2003 - 03:11 #3
Jeg bruger selv en tabel med denne struktur:

CREATE TABLE my_links (
  id mediumint(11) unsigned NOT NULL auto_increment,
  dato datetime default NULL,
  kat_id smallint(5) unsigned NOT NULL default '0',
  keywords text NOT NULL,
  url varchar(255)NOT NULL default '',
  PRIMARY KEY  (id),
  FULLTEXT KEY keywords (keywords)
) TYPE=MyISAM;

Den har så et felt 'kat_id' det refererer til en tabel med kategorier:

CREATE TABLE my_kat (
  id mediumint(11) unsigned NOT NULL default '0',
  kategori varchar(64) NOT NULL default '',
  beskrivelse varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM
Avatar billede stich Nybegynder
15. december 2003 - 03:30 #4
Aaah christ... nu gik det ellers lige så godt, og en god kop kaffe og et par gulerødder... så kommer ego cføli til at ramme reboot-knappen på toweret med storetåen...DOOH. Så kan man lære at gemme sine sager :S Oh well, det gode ved det er, at det ikke sker igen nu....150 stykker tape på toweret nu =)

Anyways... kool nok! Jeg havde bare oprettet en med 3. Men hvorfor bruge unsigned? Og hvad skal datoen bruges til!? Jeg må nok hellere lige læse et par tutorials mere om mysql før jeg går i gang med det her... Dit system ser dog ud til at være avanceret - må man høre hvad du bruger det til? Jeg skal bare bruge det her til en skakside, så der kommer ikke alt for mange links; blev bare træt af altid at skulle finde de lange stier osv.

Men tak for det! Og hvis du så bare lige vil smide et svar.. =)
Avatar billede detox Nybegynder
15. december 2003 - 03:47 #5
Ja, det behøver jo ikke være så indviklet. Hvis du ikke har brug for at opdele i kategorier eller have en beskrivelse, så dropper du bare det.
Datoen er heller ikke noget must, jeg synes bare det er rart at vide hvornår de enkelte link er oprettet.
Faktisk behøver du kun 'id', 'url' og evt. et navn eller en beskrivelse. Så er du kørende.
Avatar billede detox Nybegynder
15. december 2003 - 04:20 #6
Her er et eksempel på en form der indsætter links i tabellen:

<?php
$out = "";
if (isset($_POST['action']) && $_POST['action'] == "link") {
    if (isset($_POST['url']) && $_POST['url'] != "") {
        require 'db.php'; // Forbind til databasen
        $url = $_POST['url'];
        if (mysql_query("insert into my_links (url) values ('".$url."')")) {
            $out = "<a href='".$url."' target='_blank'>".$url."</a> er nu tilføjet databasen";
        }
    } else {
        $out = "Du skal udfylde link feltet!";
    }
}   
?>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="link">
<table>
<tr><th colspan="2"><h4>Opret Link</h4></th></tr>
<tr>
<td>Opret nyt link</td><td><input name="url" type="text" size="32" /></td>
</tr>
<input name="action" type="hidden" value="link" />
<tr>
<td><input name="submit" type="submit" value="Opret link"></td>
</tr>
</table>
</form>
<?
echo $out;
?>
Avatar billede detox Nybegynder
15. december 2003 - 04:49 #7
Du kan vise dine links sådan:

<?php
$out = "";
require 'db.php'; // Forbind til databasen
$res = mysql_query("select url from my_links order by url") or die(mysql_error());
while ($row = mysql_fetch_assoc($res)) {
    $out .= "<a href='".$row['url']."' target='_blank'>".substr($row['url'], 7)."</a><br />"; // Fjerner http:// fra skærmen
}
echo $out;    // Spyt ud
?>
Avatar billede stich Nybegynder
15. december 2003 - 05:20 #8
oki, mange tak! jeg lurer på det lidt senere....tog mig lige et par timer i en halv-trance....ku være man skulle overveje at pleje sengen =)
Avatar billede stich Nybegynder
15. december 2003 - 17:16 #9
Jeg har valgt at inkludere kat_id og dato også...og droppe keywords. Gør det nok noget nemmere =) Og alt jeg har brug for... Har dog et lille problem mht datoen, gemmer med unix_timestamp(now()), men når jeg henter det frem igen med noget
while ($raekke = mysql_fetch_array($result)) {
$date = date('d.m.y', $raekke[date]); og så printer med en echo, får jeg det forkerte format ud :( Fx 19.01.38 ... oh well, den gemmer i det mindste informationerne som den skal! Men det er cføli også en helt anden kode end den du har skrevet her. Nå, mange tak for hjælpen !!
Avatar billede detox Nybegynder
15. december 2003 - 17:36 #10
Det nemmeste mht. dato er nok at bruge MySQL's DATETIME type ('YYYY-MM-DD HH:i:ss'). Så kan du indsætte med fx: NOW() og hente det "danskformateret" med fx:
SELECT DATE_FORMAT(dato, '%d.%m.%Y') AS dansk osv...
Hvis du vælger at beholde unix_timestamp() behøver du ikke bruge now() som argument. Du kan så få det formateret vha.:
SELECT FROM_UNIXTIME(dato, '%d.%m.%Y') AS dansk osv...
Avatar billede stich Nybegynder
15. december 2003 - 20:30 #11
ok, jeg har skiftet til datetime, og bruger så
$result = mysql_query("SELECT * FROM links order by date");
while ($raekke = mysql_fetch_array($result)) {
$date = date("d.m.y",$raekke[date]); (m.fl) og så
<span class="dato">('.$date.')</span>
men den viser bare 01.01.70, selvom stampet siger 2003-12-15 20:03:18 :-/
Avatar billede detox Nybegynder
15. december 2003 - 20:40 #12
Du skal bruge:
$result = mysql_query("SELECT *, DATE_FORMAT(`date`, '%d.%m.%Y') AS dato FROM links order by date");

og så:
<span class="dato">('.$raekke['dato'].')</span>
Avatar billede stich Nybegynder
15. december 2003 - 21:07 #13
hmm, er du sikker på den mysql_query? og er det ikke <span class="dato">('.$raekke[dato].')</span>!?
Avatar billede detox Nybegynder
15. december 2003 - 21:17 #14
Ja, forespørgslen er jeg sikker på. Den anden skal måske være:
<span class="dato">('.$raekke["dato"].')</span>
men der skal anførselstegn om indekset.
Avatar billede stich Nybegynder
15. december 2003 - 22:54 #15
Okay.
TUSIND TAK!!! Det er dælme længe siden jeg har fået så god og hurtig hjælp!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester