Problème condition

Dlemon
Invité n'ayant pas de compte PHPfrance

25 févr. 2014, 09:42

Bonjour, j'aimerais comprendre pourquoi mon code PHP ne marche pas, il m'indique "Parse error: parse error in - on line 37" (celle où est écrit " } else { ".

<?php
	
	if ($_COOKIE['language'] == "francais") {
	
		/*		header		*/
		
		$accueil = "Acceuil";
		$présentation = "Présentation";
		$photos = "Photos";
		$contact = "Contact";
		
		/*		index		*/
		
		$video_presentation = "Video de presentation";
		
		/*		footer		*/
		
		$footer_creation = "Ce site est en cours de création";
		
	 } elseif ($_COOKIE['language'] == "allemand") {
	
		/*		header		*/
		
		$accueil = "ZuHause";
		$présentation = "Präsentation";
		$photos = "Fotos";
		$contact = "Kontakt";
		
		/*		index		*/
		
		$video_presentation = "Präsentationfilm";
		
		/*		footer		*/
		
		$footer_creation = "Wir schaffen dieses Site";
	
	} else {
	
		//		header		
		
		$accueil = "benvenuto";
		$présentation = "presentazione";
		$photos = "fotos";
		$contact = "contatto";
		
		//		index		
		
		$video_presentation = "Presentazione del film";
		
		//		footer		
		
		$footer_creation = "Il sito è in costruzione";
		
	} 
?>



Merci d'avance, cordialement.
Modifié en dernier par moogli le 25 févr. 2014, 15:12, modifié 1 fois.
Raison : bbcode php

ViPHP
xTG
ViPHP | 7331 Messages

25 févr. 2014, 10:56

Je ne vois pas d'autre souci dans ton code que l'utilisation d'un index sans vérification qu'il existe.
Vérifies avec un logiciel tel que notepad++ si tu n'as pas des caractères non imprimables qui traînent.

N.B : la balise php serait appropriée pour que le code soit lisible sur le forum.

Dlemon
Invité n'ayant pas de compte PHPfrance

25 févr. 2014, 13:30

Re, déjà, merci beaucoup de m'aider. Pouvez vous développer 'utilisation d'un index sans vérification qu'il existe' s'il vous plait.
Et j'utilise coda, je crois qu'il vérifie les caractères non imprimables... :/

Dlemon
Invité n'ayant pas de compte PHPfrance

25 févr. 2014, 13:38

Est-ce mieux ainsi :
<?php
	
	if (!isset($_COOKIE['language'])) {
	
		/*		header		*/
		
		$accueil = "Acceuil";
		$présentation = "Présentation";
		$photos = "Photos";
		$contact = "Contact";
		
		/*		index		*/
		
		$video_presentation = "Video de presentation";
		
		/*		footer		*/
		
		$footer_creation = "Ce site est en cours de création";
		
	 } elseif ($_COOKIE['language'] == "allemand") {
	
		/*		header		*/
		
		$accueil = "ZuHause";
		$présentation = "Präsentation";
		$photos = "Fotos";
		$contact = "Kontakt";
		
		/*		index		*/
		
		$video_presentation = "Präsentationfilm";
		
		/*		footer		*/
		
		$footer_creation = "Wir schaffen dieses Site";
	
	} elseif ($_COOKIE['language'] == "italien") {
	
		//		header		
		
		$accueil = "benvenuto";
		$présentation = "presentazione";
		$photos = "fotos";
		$contact = "contatto";
		
		//		index		
		
		$video_presentation = "Presentazione del film";
		
		//		footer		
		
		$footer_creation = "Il sito è in costruzione";
		
	} 
?>

ViPHP
xTG
ViPHP | 7331 Messages

25 févr. 2014, 14:27

C'est mieux oui.
Par contre tu perds un cas avec cet agencement.
=> $_COOOKIE['language'] existe mais ne contient ni italien, ni allemand.

Dlemon
Invité n'ayant pas de compte PHPfrance

25 févr. 2014, 22:56

Je ne comprends pas pourquoi cela ne marche pas...
Oui, dans ce cas il contiendrait "francais", ce qui en fait le language de base.. :/

phil978
Invité n'ayant pas de compte PHPfrance

25 févr. 2014, 23:53

Ton problème est que tu as mis un "é" dans le nom de ta variable ....
$présentation

Mammouth du PHP | 2278 Messages

26 févr. 2014, 10:17

Voici la structure
<?php
  $a = 3;       
         if ($a==1) {
         
                 print "1";
                                 
          } elseif ($a==2) {
         
              print "2"
         
         } else {
         
                print "3";
                 
         } 
?>
et en voici une autre (je déteste elseif):
<?php
  $a = 3;       
         if ($a==1) 
		{
         
                 print "1";
                                 
          } 
		else
		{
			if ($a==2) 
			{
                 print "2";
        	} 
			else 
			{
         			 print "3";
        	} 
		}
		
?>
et voici plus simple:
<?php
  switch   ($_COOKIE['language']  )
	{
		case "français":
               /*              header          */
                 
                 $accueil = "Accueil sans faute";
                 $présentation = "Présentation";
                 $photos = "Photos";
                 $contact = "Contact";
                 
                 /*              index           */
                 
                 $video_presentation = "Video de presentation";
                 
                 /*              footer          */
                 
                 $footer_creation = "Ce site est en cours de création";
                 
		break;
		case "allemand":
		break;
		case "italiano":
		break;
		default: //toutes les autres langues
		break;
}   
 
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Dlemon
Invité n'ayant pas de compte PHPfrance

26 févr. 2014, 18:29

Merci beaucoup, je vais utiliser le switch qui marche très bien (j'hésitais à le faire). L'autre je ne comprends pas où est l'erreur, en tout cas merci de vous être intéressé à mon problème. :)

Mammouth du PHP | 2278 Messages

26 févr. 2014, 21:53

Ton problème tenait au elseif dont la sémantique et la syntaxe ne sont pas d'une évdence criantes.
Quand tu as un certain nombre de cas dépendant de la même variable, le switch s'impose d'autant plus qu'avec default, il permet d egérer l'impr"vu ou l'oublié.

Tu n'imagines pas le soulagement qua apporté aux programmeurs l'apparition de cettte structure; j'ai quelque part, 30 cas possibles; imagine la pile de if que ça représenterait.

Un truc: l'erreur se trouve le plus souvent à l'endroit signalé ou avant; rarement ou jamais après.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD