Gå til innhold

Noe er feil i "språkskiftescript"


Anbefalte innlegg

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

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

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 :blush: . Skal fikse det.

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