Thoraxxx Skrevet 11. mai 2008 Del Skrevet 11. mai 2008 (endret) Beklager missvisende tittel, men vanskelig å finne noe passende. Jeg jobber med å lage nyhetsside hvor artikler skal vises etter en type mal. Malen inneholder tabeller hvor artiklene skal bli plassert. I tabellene putter jeg {} som skal bli funksjonen som henter ned artiklene fra mysql. Eksempel her <table> <!-------- Mal1.php ------> <tr> <td>{rad1}</td> <td>{rad2}</td> </tr> </table> <!------- Funskjoner.php ---> {rad1} skal bli til funksjonen: $result = mysql_query("SELECT * FROM {$prefix}pub_artikler where katid='$katid' && rad='rad1' ORDER BY sortering ASC,id DESC"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("%s<br>", $row["tittel"]); printf("%s<br>", $row["forfatter"]); printf("%s<br>", $row["innhold"]); } Jeg har sett at flere publiseringsværktøy gjør det på denne måten, men lurer på hvordan jeg i en annen inkludert fil kan få {rad} til å bli funksjonen som henter data ned fra mysql. Tenker meg noe slikt: - Nyhetsside.php (inkluderer mal1.php og funksjoner.php. Henter ned nyheter i tabeller etter hvordan mal1.php er lagt opp) - Mal1.php (inneholder utseendet) - Funskjoner.php (omgjør {rad} til funsksjon som henter ned data fra mysql) Hva skriver jeg i funksjoner.php for å få {rad} til å bli en funksjon i steden for "{rad}" i nyhetsside.php? På forhånd takk for hjelp! Endret 12. mai 2008 av mariusmk Lenke til kommentar
Lokaltog Skrevet 12. mai 2008 Del Skrevet 12. mai 2008 Foreslår at du tar en titt på preg_replace_callback(): $var = preg_replace_callback('`\{rad([0-9]+)?\}`is', 'functionName', $var); Lenke til kommentar
Thoraxxx Skrevet 12. mai 2008 Forfatter Del Skrevet 12. mai 2008 Takk Jeg valgte å bruke functions i stedet, siden jeg trolig missforsto litt. Likevel har jeg et problem. Nå har jeg gjort det slik: Index.php (inkluderer funksjoner.php og mal.php) Funksjoner.php (har alle funksjonene som nettstedet trenger) Mal.php (inneholder html-malen) Nå har jeg det problemet at hvis jeg går inn på f.eks index.php?katid=214, så vil ikke funksjonene hente ut data fra database med $katid som utgangspunkt. Eks: <!---- index.php ---> <? $katid = $_GET["katid"]; include("funksjoner.php"); include("mal.php"); ?> <! ----- mal.php ---- > <div><?= innhold(); ?></div> <! ----- funksjoner.php --> <? innhold();{ $result = mysql_query("SELECT * FROM {$prefix}pub_modul where katid='$katid' ORDER BY sortering ASC,id DESC"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { } ?> Det virker som funksjoner.php ikke får definert hva $katid er. Hva er feil? Lenke til kommentar
Lokaltog Skrevet 12. mai 2008 Del Skrevet 12. mai 2008 Prøv å skrive global $katid; øverst i funksjonen som skal bruke variabelen. Lenke til kommentar
Thoraxxx Skrevet 12. mai 2008 Forfatter Del Skrevet 12. mai 2008 (endret) Det virket! Takk! Må jeg gjøre det på alle funksjonene, eller kan jeg jeg gjøre en endring på serveren? Endret 12. mai 2008 av mariusmk Lenke til kommentar
Lokaltog Skrevet 12. mai 2008 Del Skrevet 12. mai 2008 (endret) Les om variable scope på php.net. Du er nødt til å bruke global i alle funksjonene dine hvis du skal lage scriptet ditt på den måten. Du kan eventuelt bruke $_GET direkte, siden det er en såkalt superglobal variabel som alltid er tilgjengelig i alle scopes. Endret 12. mai 2008 av Lokaltog Lenke til kommentar
Thoraxxx Skrevet 13. mai 2008 Forfatter Del Skrevet 13. mai 2008 Les om variable scope på php.net. Du er nødt til å bruke global i alle funksjonene dine hvis du skal lage scriptet ditt på den måten. Du kan eventuelt bruke $_GET direkte, siden det er en såkalt superglobal variabel som alltid er tilgjengelig i alle scopes. Ok, takk! 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å