svamp Skrevet 13. august 2004 Del Skrevet 13. august 2004 Hei Prøver å lage et script som skal skifte språk på siden min. Men det virker ikke. Jeg får ingen feilmeldinger, dere kan prøve selv: Link Scriptet er "bygd på" Lokaltogs styleskifte-script. echo'ene av variabelen $sprak i de 3 øverste if'ene og i footer kan kanskje hjelpe i debuggingen. (de gjør forøvrig at header forsvinner, men det gjør ingenting nå) Her er hele index.php: <?php $skjema = $_POST['skjema']; $langs = array( "English" => "English", "Norsk" => "Norsk", ); if($_COOKIE['sprak'] && empty($skjema)) { $sprak = $_COOKIE['sprak']; echo($sprak); echo('1'); } elseif(!empty($skjema)) { $lang = $langs[$skjema]; setcookie("sprak",$lang,time()+14400000); $sprak = $lang; echo($sprak); echo('2'); } else { setcookie("sprak","English",time()+14400000); $sprak = "English"; echo($sprak); echo('3'); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>STS</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" href="stil.css" /> </head> <body> <h1>Something smart</h1> <div id="path"> <?php switch ($s) { case 'main': print ("» <a href=\"index.php?s=main\">somethingsmart</a>"); break; case 'port': print ("» <a href=\"index.php?s=main\">somethingsmart</a> » <a href=\"index.php?s=port\">portfolio</a>"); break; case 'vb': print ("» <a href=\"index.php?s=main\">somethingsmart</a> » <a href=\"index.php?s=port\">portfolio</a>"); break; case 'web': print ("» <a href=\"index.php?s=main\">somethingsmart</a> » <a href=\"index.php?s=port\">portfolio</a>"); break; case 'art': print ("» <a href=\"index.php?s=main\">somethingsmart</a> » <a href=\"index.php?s=art\">articles</a>"); break; case 'con': print ("» <a href=\"index.php?s=main\">somethingsmart</a> » <a href=\"index.php?s=con\">contact</a>"); break; default: print ("» <a href=\"index.php?s=main\">somethingsmart</a>"); break; } ?> </div> <div id="innhold"> <div id="hoved"> <?php switch ($s) { case 'main': if($sprak = "English") { include ("en/main.php"); } elseif($sprak = "Norsk") { include ("no/main.php"); } $side = "index.php?s=main"; break; case 'port': if($sprak = "English") { include ("en/portfolio.php"); } elseif($sprak = "Norsk") { include ("no/portfolio.php"); } $side = "index.php?s=port"; break; case 'art': if($sprak = "English") { include ("en/articles.php"); } elseif($sprak = "Norsk") { include ("no/articles.php"); } break; case 'con': if($sprak = "English") { include ("en/contact.php"); } elseif($sprak = "Norsk") { include ("no/contact.php"); } break; case 'vb': if($sprak = "English") { include ("en/vbprocjects.php"); } elseif($sprak = "Norsk") { include ("no/vbprojects.php"); } break; case 'web': if($sprak = "English") { include ("en/webdesign.php"); } elseif($sprak = "Norsk") { include ("no/webdesign.php"); } break; default: if($sprak = "English") { include ("en/main.php"); } elseif($sprak = "Norsk") { include ("no/main.php"); } $side = "index.php?s=main"; break; } ?> </div> <div id="hkol"> <?php if($sprak = "English") { echo('<h3>It\'s your choice</h3> <h4>Language</h4> <form method="post" action="'); echo($side); echo('" id="sprak"> <dl>'); foreach($langs as $name => $sprakvalg) { echo('<dt><input class="knapp" type="submit" name="skjema" value="'.htmlentities($name).'" /></dt> '); } echo('</dl> </form> <h4>Text size</h4> <dl> <dt>Small</dt> <dt>Normal</dt> <dt>Large</dt> </dl> <hr /> <h3>If you were wondering..</h3> This page is valid <a href="http://validator.w3.org/check?uri=http://home.no.net/thesvamp/sts/index.php">XHTML 1.0 Strict</a> and <a href="http://jigsaw.w3.org/css-validator/validator?uri=http://home.no.net/thesvamp/sts/stil.css">CSS</a>. '); } elseif($sprak = "Norsk") { echo (' <h3>It\'s your choice</h3> <h4>Språk</h4> <form method="post" action="'); echo($side); echo('" id="sprak"> <dl>'); foreach($langs as $name => $sprakvalg) { echo('<dt><input class="knapp" type="submit" name="skjema" value="'.htmlentities($name).'" /></dt> '); } echo('</dl> </form> <h4>Tekststørrelse</h4> <dl> <dt>Liten</dt> <dt>Normal</dt> <dt>Stor</dt> </dl> <hr /> <h3>If you were wondering..</h3> Denne siden validerer <a href="http://validator.w3.org/check?uri=http://home.no.net/thesvamp/sts/index.php">XHTML 1.0 Strict</a> og <a href="http://jigsaw.w3.org/css-validator/validator?uri=http://home.no.net/thesvamp/sts/stil.css">CSS</a>. '); } ?> </div> <div id="meny"> <ul> <li><a id="menu"></a></li> <li><a id="mhome" href="index.php?s=main"></a></li> <li><a id="mport" href="index.php?s=port"></a></li> <li><a id="mart" href="index.php?s=art"></a></li> <li><a id="mcon" href="index.php?s=con"></a></li> </ul> </div> </div> <div id="footer"> <?php echo($sprak); ?> </div> </body> </html> Kan noen si hva som er feil her? Lenke til kommentar
Lokaltog Skrevet 13. august 2004 Del Skrevet 13. august 2004 (endret) Fant flere feil i scriptet ditt. #1: if($_COOKIE['sprak'] && empty($skjema)) { $sprak = $_COOKIE['sprak']; echo($sprak); echo('1'); } elseif... Du kan IKKE kjøre echo før doctype og det der. #2: case 'main': if($sprak = "English") { include ("en/main.php"); } Når du sammenlikner så kan du ikke bruke "="! Du må bruke "==" for å sammenlikne to ting i PHP. if($sprak == "English") er riktig å bruke her. #3: Semantisk feil i HTML'en din. Ser ikke hva de <dl>/<dt>-elementene gjør på bunnen av scriptet ditt.. Alt jeg så i farten.. For øvrig: Synes scriptet du bruker ser unødvendig komplisert ut, med alt for mange switch()'er og if()'er.. Prøv å effektivisere scriptet ditt litt! Endret 13. august 2004 av lokaltog Lenke til kommentar
svamp Skrevet 14. august 2004 Forfatter Del Skrevet 14. august 2004 Takk for mange tips, skal se på det nå. Echo før doctype la jeg bare inn for debugging, for å se hvilken av de 3 mulige måtene som ble brukt for å gi $sprak en verdi (via skjema, fra eksisterende cookie, ny cookie m/default-språk) Det at jeg hadde brukt bare ett likhetstegn er vel roten til det vonde i scriptet. Jeg kan for lite PHP (men det har jeg tenkt å gjøre noe med), er vant med VB. Når det gjelder den semantiske feilen har du rett, jeg falt for fristelsen til å gjøre det på den raske måten og bruke dl/dt (som ikke har noen punkt eller margin) i steden for en stylet ul . Skal fikse det. 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å