Gå til innhold

Mappe x3 i includescript


Anbefalte innlegg

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 av php_user
Lenke til kommentar
Videoannonse
Annonse

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 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
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 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 av php_user
Lenke til kommentar

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
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

:)

 

 

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 :p

 

Nå er aalt løst:D

Endret av php_user
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...