Thomas. Skrevet 3. mai 2008 Del Skrevet 3. mai 2008 (endret) Hei Jeg valgte å lage en en ny tråden om spørsmålet mitt, siden i den andre ble det forferdelig mye rot. Jeg tror jeg begynner å nærme meg en løsning. Men trenger deres hjelp litt. Vel, jeg vil gjerne ha slike url'er: http://localhost/tutorials/php/8/ (8 er id på tutorialen) Jeg har noen problemer enda. Så jeg skal prøve å forklare så godt som mulig, slik at dere kan hjelpe Dette er det jeg har skrevet i htacces til nå: <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^([^/.]+)/?$ ?side=php&id=$2 </IfModule> Altså denne linjen: RewriteRule ^([^/.]+)/?$ ?side=php&id=$2 - Jeg vil tro det er det som er problemet. At ikke den linjen er sikkelig. Vis du vil se på hele htaccess koden min, trykk under: <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^([^/.]+)/?$ /index.php?side=$1 RewriteRule ^tutorial/([^/\.]+)/?$ ?side=$1 [L] RewriteRule ^([^/.]+)/?$ ?side=php&id=$2 </IfModule> Og inne på php.php fila, (der alle tutorialene vises(http://localhost/tutorials/php/) har jeg disse 2 kodene: 1) - Der linker jeg til tutorialen slik: (linken vil bli slik, f.eks: http://localhost/tutorials/php/8/) $id = $row[id]; <a href="<?php echo $id; ?>/"><?php echo $row[tittel]; ?></a> 2) - Og henter den ut igjen med koden under på samme side: <?php if($_GET[id]) { $s = mysql_query("SELECT * FROM tuts WHERE id = '8' AND kategori = 'PHP'"); echo $s; $row[STekst]; } - Men det ser ikke ut til å fungere skikkelig. Når jeg går på denne linken: http://localhost/tutorial/php/8/ Fungerer det ikke, da kommer jeg til 404 feil. Men vis jeg endrer til: http://localhost/?side=php&id=8 så kommer siden opp, og jeg får denne meldingen - ut av echo $s;: Resource id #15 Resource id #16 Resource id #17 Resource id #18 Resource id #19 Resource id #20 Resource id #21 Resource id #22 - Jeg aner ikke hva det vil si. Så her trenger jeg deres hjelp, hjelp med å få http://localhost/tutorial/php/8/ til å fungere. Og få til php-delen ordentelig - Vis dere vil se includescriptet jeg bruker, så se under: <?php /* I N N S T I L L I N G A R */ /* Lim inn på toppen av dokumentet * Forandre variablane etter dine ønsker */ $handlername = 'side'; // her blir linkane ?side=xxx. Forandre til det du bruker $defaultSide = 'index.php'; // den fila som blir inkludert dersom inga side er etterspurt i URL-en $includePath = 'sider/'; // stien til mappa sidene som skal inkluderast ligg i $errorPage = 'error/error404.php'; // fila som blir inkludert dersom ei side som ikkje ligg i mappa blir etterspurt $filendelse = '.php'; // filendelsen på filane som skal inkluderast /* S C R I P T S T A R T */ /* Første delen henter variabelen i url-en og alle filnavn i mappa du skal inkludere frå */ /* Treng ikkje endrast */ $URLside = &$_GET[$handlername]; // lagar ein enklare variabel for variabelen sendt gjennom url-en $rep = opendir($includePath); // åpnar mappa som er satt i $includePath while ($file = readdir($rep)) { if($file != '..' && $file !='.' && $file !='' && !is_dir($file)) // unngår mapper { $filer[]=$file; // legg alle filane i mappa inn i $filer-arrayet } } closedir($rep); // lukker mappa if (!isset ($URLside)) // viss det ikkje blir sendt ein variabel gjennom url-en for å bestemma kva side som skal inkluderast { $side = $includePath . $defaultSide; // blir filen satt i $defaultSide inkludert } else { $side = $URLside . $filendelse; // legg til filendelsen satt i $filendelse for å if (in_array ($side, $filer)) { // sjekker om den etterspurte sida er i arrayet $side = $includePath . $side; // inkluder sida } else { // ellers $side = $includePath . $errorPage; // inkluder filmeldinga, satt i $errorPage } } /* I N K L U D E R I N G S D E L */ /* Lim inn der innhaldet skal inkluderast */ include_once $side; // inkluderer sida som er bestemt gjennom diverse testar ?> - Vis det er noe mer dere trenger info om, skrik ut! mvh php_user Endret 3. mai 2008 av php_user Lenke til kommentar
Lokaltog Skrevet 3. mai 2008 Del Skrevet 3. mai 2008 Det byr meg imot å svare deg, grunnet den svært umodne og dårlige oppførselen din i den forrige tråden din. Likevel svarer jeg nå, i håp om at jeg slipper å se mer søppel fra deg i PHP-forumet. Jeg tror ikke du er en moden nok programmerer til å ta i bruk mod_rewrite. Dette er et avansert verktøy, som krever at du har ganske god kjennskap til regulære uttrykk og hvordan HTTP-protokollen fungerer. Mitt inntrykk er at du knapt nok kan PHP, og ikke skjønner hva vi prøver å forklare deg engang. Mitt beste tips er at du legger fra deg mod_rewrite foreløpig, og bruker den "vanlige" måten å sende parametere til et script på (?var=value&var2=value2). Lær deg å skrive PHP, HTML, CSS, etc., lær deg å bruke regulære uttrykk, lær deg hvordan HTTP-kommunikasjon fungerer - DERETTER kan du lære deg mod_rewrite. mod_rewrite er et "prikken over i'en"-verktøy etter min mening. Det er så mange ting som er viktigere å kunne enn mod_rewrite, og som bør læres først. Du besvarer ikke bl.a. disse spørsmålene, som er essensielle for å kunne hjelpe deg med problemet ditt: Får du en 404- eller 500-feilmelding når du går inn på adressen? Får du en annen feilmelding når du går inn på adressen? Støtter includescriptet ditt den typen inkludering du ønsker å utføre? Sender du riktige parametere til scriptet ditt? Har du prøvd andre løsninger? Har du klart å isolere problemet ditt til noe mindre generelt enn "problemet er enten scriptet, konfigurasjonen, serveren min, Apache eller PHP"? Et eksempel på hvordan man bruker mod_rewrite til enkle includescript: 1) Gå inn på adressen du ønsker å skrive om, f.eks. /index.php?vis=artikkel&id=123. Sjekk at alt fungerer som det skal når du er inne på denne adressen. 2) Definer hva du ønsker å skrive om adressen til - f.eks. /artikkel/123/ 3) Skriv RewriteRulen: RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)/?$ index.php?vis=$1&id=$2 Lenke til kommentar
Thomas. Skrevet 4. mai 2008 Forfatter Del Skrevet 4. mai 2008 (endret) Det byr meg imot å svare deg, grunnet den svært umodne og dårlige oppførselen din i den forrige tråden din. Likevel svarer jeg nå, i håp om at jeg slipper å se mer søppel fra deg i PHP-forumet. Jeg tror ikke du er en moden nok programmerer til å ta i bruk mod_rewrite. Dette er et avansert verktøy, som krever at du har ganske god kjennskap til regulære uttrykk og hvordan HTTP-protokollen fungerer. Mitt inntrykk er at du knapt nok kan PHP, og ikke skjønner hva vi prøver å forklare deg engang. Mitt beste tips er at du legger fra deg mod_rewrite foreløpig, og bruker den "vanlige" måten å sende parametere til et script på (?var=value&var2=value2). Lær deg å skrive PHP, HTML, CSS, etc., lær deg å bruke regulære uttrykk, lær deg hvordan HTTP-kommunikasjon fungerer - DERETTER kan du lære deg mod_rewrite. mod_rewrite er et "prikken over i'en"-verktøy etter min mening. Det er så mange ting som er viktigere å kunne enn mod_rewrite, og som bør læres først. Du besvarer ikke bl.a. disse spørsmålene, som er essensielle for å kunne hjelpe deg med problemet ditt: Får du en 404- eller 500-feilmelding når du går inn på adressen? Får du en annen feilmelding når du går inn på adressen? Støtter includescriptet ditt den typen inkludering du ønsker å utføre? Sender du riktige parametere til scriptet ditt? Har du prøvd andre løsninger? Har du klart å isolere problemet ditt til noe mindre generelt enn "problemet er enten scriptet, konfigurasjonen, serveren min, Apache eller PHP"? Et eksempel på hvordan man bruker mod_rewrite til enkle includescript: 1) Gå inn på adressen du ønsker å skrive om, f.eks. /index.php?vis=artikkel&id=123. Sjekk at alt fungerer som det skal når du er inne på denne adressen. 2) Definer hva du ønsker å skrive om adressen til - f.eks. /artikkel/123/ 3) Skriv RewriteRulen: RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)/?$ index.php?vis=$1&id=$2 - Jeg tror at dere tror jeg kan mindre php enn jeg egentlig kan. - Jeg fant løsningen på problemet vil jeg tru: RewriteRule ^tutorial/([a-zA-Z0-9]+)/([0-9]+)/?$ ?side=$1&id=$2 - Hvorfor kommer det så masse "resource" greier ut av echo $s; ?? <?php if($_GET[id]) { $d = $_GET[id]; $s = mysql_query("SELECT * FROM tuts WHERE id = '$d' AND kategori = 'PHP'"); echo $s; $row[STekst]; } Endret 4. mai 2008 av php_user Lenke til kommentar
Lokaltog Skrevet 4. mai 2008 Del Skrevet 4. mai 2008 Hvis du ikke vet hvorfor echo i dette tilfellet printer ut "masse resourcegreier", så kan du nøyaktig like lite som jeg tror du kan. Return Values: For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error. Lenke til kommentar
Thomas. Skrevet 4. mai 2008 Forfatter Del Skrevet 4. mai 2008 Hvis du ikke vet hvorfor echo i dette tilfellet printer ut "masse resourcegreier", så kan du nøyaktig like lite som jeg tror du kan. Return Values: For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error. - Akkurat det der, handler om MySQL. Lenke til kommentar
Lokaltog Skrevet 4. mai 2008 Del Skrevet 4. mai 2008 Hehe, det handler om helt grunnleggende PHP, nemlig returverdien til funksjoner. Uansett, du kan behandle en MySQL-ressurs i PHP med f.eks. mysql_fetch_*-funksjonene. Da får du returnert en datatype som du kan outputte (et objekt eller et array). Lenke til kommentar
Thomas. Skrevet 4. mai 2008 Forfatter Del Skrevet 4. mai 2008 (endret) Nå har jeg fått til slik at bare infoen fra den id'en blir hentet ut. Men den vil ikke skrives ut - hvorfor ikke ? <?php if(isset($_GET[id])) { $d = $_GET[id]; $s = "SELECT * FROM tuts WHERE id = '$d' AND kategori = 'PHP'"; $c = mysql_query($s); echo $s; while($row = mysql_fetch_array($c)) { $row[STekst]; } } Bare glemte en echo Nå er aalt løst:D Endret 4. mai 2008 av php_user Lenke til kommentar
Martin A. Skrevet 4. mai 2008 Del Skrevet 4. mai 2008 Og ikke minst. Bruk fnutter rundt arraynøklene dine! Det forklarte jeg deg her, men man ser tydeligvis at du ikke bryr deg om råd fra litt mer erfarne programmere enn deg selv. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå