Gå til innhold

Benytte flere htmlsett i samme kode


Anbefalte innlegg

Helloi =)

 

Er ikke så dreven i PHP, men har sittet å knotet litt. Det jeg ønsker er å kunne bruke forskjellige sideoppset (HTML-koder), men samme PHP-kode.

 

La oss si at jeg har to forskjellige brukere. Den ene ønsker at siden skal se slik ut (stil1), og den andre vil at den skal se annerledes ut (stil2).

 

For å slippe å lage en ny php-fil for hver forskjellige HTML-kode, ønsker jeg å kunne importere HTML-koden, konvertere tegn og sende ut.

 

--

 

La oss si at bruker 1 ønsker index.php med hans type oppsett. Da henter vi HTMLOPPSETT_1_INDEX.html:

Hei, kjære {BRUKER{BRUKERID}_KJONN}. God {INS_DAG}

 

Bruker 2 ønsker en annen index.php. Da henter vi HTMLOPPSETT_2_INDEX.html:

Halla {BRUKER{BRUKERID}_KJONN}. Nå er klokka {BBB_BLOKKE}

 

--

 

Ser at det blir tungvindt å måtte lage en ny {} for hver eneste output som varierer. Så jeg lurer på;

 

- Skjønner dere hva jeg vil og mener?

- Har dere forslag til en enklere måte å gjøre alt dette på?

- Mistenker store feil ved koden nedenfor også. Noen som ser problemer? (ingen feilmeldinger)

 

<?php
$Visning = file_get_contents("stilsider/stil" . $_GET["stil"] . "/" . $_GET["side"] . ".php");

preg_match_all("/{([^@]+)}/", $Visning, $Funnene);

for ($i = 0; $i <= count($Funnene); $i++) {
$Visning = str_replace("" . $Funnene[0][$i] . "", "", $Visning);
}

echo $Visning;
?>

Lenke til kommentar
Videoannonse
Annonse

Sjekk ut Smarty. Det er ett template-system ganske likt det du holder på med her. De har god dokumentasjon og mange funksjoner. Mye bedre enn å konte med dette på egenhånd.

 

Men hvorfor gjør du det på denne måten? Kan du ikke bare echoe og kjøre en if-spørring?

 

if ($userid == 1)
echo "Hei, kjære $KJONN. God $DAG";
else
echo "Noe annet";

Lenke til kommentar

Takk =)

 

Joda, men syns PHP-kodene blir for rotete med så mye dilldall i. Mye enklere med rene koder syns jeg, både med tanke på koding og feilsøking.

 

Har planer om ganske mange templates (og kanskje et par hundre brukere), så det blir uansett mye styr :)

Endret av SmartFTP
Lenke til kommentar

Er en del ulike måter å gjøre dette på, og det er ingen fasit. Hvis du ikke har bruk for eller ikke vil bruke et av de eksisterende systemene kan du smelle noe sammen ved bruk av printf.

 

Her har du et ganske basic eksempel:

 

/* Variabler fra $_GET, databaser eller liknended */
$name = 'Bob';
$sex = 'Male';
$time = date('g:i a');
/* I dette eksempelet har jeg bare gitt templatene et nummer, så vi velger nummer 2 her */
$template = 2;

/* Legger inn alle variablene i en array. Kommentarene sier hva de blir substituert for */
$pcont = Array(
 $name, // %1$s
 $sex, // %2$s
 $time, // %3$s
);

/* Funksjon for å hente templates og mate inn variablene */
function get_template($file, $args) {
 return vsprintf(file_get_contents($file), $args);
}

$cont = get_template($template . '.html', $pcont);

echo <<<EOT
<html>
 <body>
   Something ...
   <br />
   $cont
   ... more stuff
 </body>
</html>
EOT;

1.html

<table border="1">
 <thead>
   <tr>
     <td>Name:</td>
     <td>Sex:</td>
   </tr>
 </thead>
 <tbody>
   <tr>
     <td>%1$s</td>
     <td>%2$s</td>
   </tr>    
 </tbody>
</table>

2.html

Hi %1$s, welcome back. The time is %3$s<br />

Så lenge du holder styr på rekkefølgen på argumentene er ikke denne måten så aller verst.

 

Fordelene er at du får HTML-filer uten PHP mikset inn. Ulempen er selvfølgelig at %1$s ikke sier deg veldig mye om hva som blir printet ut.

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å
×
×
  • Opprett ny...