Gå til innhold

Mappe x3 i includescript


Anbefalte innlegg

Skrevet (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 av php_user
Videoannonse
Annonse
Skrevet

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

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

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

Skrevet

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

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

 

Nå er aalt løst:D

Endret av php_user
Skrevet

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.

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