Page 1 sur 1

[Résolu] insertion d'un script php dans echo

Posté : 19 mai 2006, 19:05
par Lucifer
Bonjour à tous.

Je développe un site web perso en multilangues (ce qui fonctionne très bien) et je souhaiterai intégrer un sondage personnalisé pour chaque langue supportée par le site.

J'utilise un script existant (Alex_poll) avec lequel j'ai créé les différents sondages mais je n'arrive pas à l'intégrer dans ma gestion des langues de mon site.

Voici un extrait du code que je tente de faire passer :
if (LANGUAGE=="FR") {
echo '<div id="layer4" style="position: absolute; top: 850px; width: auto">
<div style="text-align: center"><font color="#CC0000">'.$site_lang['Main_poll'].'</font></div>
<div style="text-align: center">'.unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);$id_poll_apoll2 = 1;$chem_script_apoll2 = "./poll/";include($chem_script_apoll2."poll.php");.'</div></div>';
...
La variable $site_lang me retourne bien un texte dans la langue considérée, preuve que la langue est prise en compte. Par contre, la partie suivante me retourne un Parse error :
.unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);$id_poll_apoll2 = 1;$chem_script_apoll2 = "./poll/";include($chem_script_apoll2."poll.php");.
Est-il possible de réaliser ce que je souhaite faire ? Et si oui, comment ?

Merci d'avance pour votre aide.

Amicalement,

Eric

Posté : 20 mai 2006, 12:23
par Lucifer
Personne ne sait m'apporter de réponse ?

Bah, je ne suis pas une foudre en Php mais j'ai le sentiment que je me débrouille mal sur ce coup. Je dois faire une erreur quelque part mais je n'arrive pas à trouver où.

Aidez moi svp !

Amicalement,

Eric

Posté : 20 mai 2006, 13:19
par Cyrano
Deux trucs :
- à quoi servent les points qui commencent et finisent cette ligne de code;
- Ne peux-tu mettre des retours de ligne histoire de rendre ton code lisible ?
unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);
$id_poll_apoll2 = 1;
$chem_script_apoll2 = "./poll/";
include($chem_script_apoll2 ."poll.php");

Posté : 20 mai 2006, 13:59
par Lucifer
Salut et merci pour ta réponse.

En fait, j'ai essayé pas mal de possibilités pour insérer mon code et l'une d'entre elles était de tenter un concaténation d'où la présence des points. Mais çà ne marche pas.

J'ai essayé aussi en mettant les balises <? php... Pas mieux.

C'est vrai aussi que j'ai jeté mon code un peu à l'arrache. Le voici complet avec les identations :
<? php
if (LANGUAGE=="FR") {
echo '
<div id="layer4" style="position: absolute; top: 850px; width: auto">
      <div style="text-align: center">
            <font color="#CC0000">'.$site_lang['Main_poll'].'</font>
      </div>
      <div style="text-align: center">'
            <? php unset($id_rubrique_apoll2, $id_poll_apoll2,$voter_apoll2);
            $id_poll_apoll2 = 1;
            $chem_script_apoll2 ="./poll/";
            include($chem_script_apoll2."poll.php"); ?>
      '</div>
</div>';
} elseif (LANGUAGE=="EN") {
echo '
<div id="layer4" style="position: absolute; top: 850px; width: auto">
      <div style="text-align: center">
            <font color="#CC0000">'.$site_lang['Main_poll'].'</font>
      </div>
      <div style="text-align: center">'
            <? php unset($id_rubrique_apoll2, $id_poll_apoll2,$voter_apoll2);
            $id_poll_apoll2 = 2;
            $chem_script_apoll2 ="./poll/";
            include($chem_script_apoll2."poll.php"); ?>
      '</div>
</div>';
}
?>

Posté : 20 mai 2006, 14:08
par Shrell
La balise n'est pas <? php mais <?php.
Après, à première vue je dirais de faire ça :
 
<div id="layer4" style="position: absolute; top: 850px; width: auto"> 
      <div style="text-align: center"> 
            <font color="#CC0000"><?=$site_lang['Main_poll'] ?></font> 
      </div> 
      <div style="text-align: center">
<?php
unset($id_rubrique_apoll2, $id_poll_apoll2,$voter_apoll2); 
$id_poll_apoll2 = (LANGUAGE=="FR")? 1 : 2; 
$chem_script_apoll2 ="./poll/"; 
include($chem_script_apoll2."poll.php");
?> 
</div> 
</div>

Posté : 20 mai 2006, 14:09
par Truc
il faut coller "<?" avec "php" => "<?php"

que comptes tu concaténer avec unset() ?

unset() détruit les variables sans retour tu y fait donc appel à la suite du code mais sans l'intégrer au contenu HTML. En clair pas de concaténation dessus :wink:

Posté : 20 mai 2006, 16:18
par Lucifer
La balise n'est pas <? php mais <?php.
Grrr... En plus je le savais... Mais çà ne fonctionne pas non plus : Parse error sur cette ligne.
unset() détruit les variables sans retour tu y fait donc appel à la suite du code mais sans l'intégrer au contenu HTML. En clair pas de concaténation dessus
Cela veut-il dire qu'il me faut passer unset() après la première balise <?php ? Je vais essayer mais j'ai un doute...

Posté : 20 mai 2006, 16:49
par Lucifer
Cà y est ! J'ai trouvé la soluce qui fonctionne :
<?php
if (LANGUAGE=="FR")
{
	echo '<div id="layer4" style="position: absolute; top: 850px; width: auto">
<div style="text-align: center"><font color="#CC0000">'.$site_lang['Main_poll'].'</font></div>
<div style="text-align: center">';
	unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);
	$id_poll_apoll2 = 1;
	$chem_script_apoll2 = "./poll/";
	include($chem_script_apoll2."poll.php");
	echo '</div></div>';
}
elseif (LANGUAGE=="EN")
{
	echo '<div id="layer4" style="position: absolute; top: 850px; width: auto">
<div style="text-align: center"><font color="#CC0000">'.$site_lang['Main_poll'].'</font></div>
<div style="text-align: center">';
	unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);
	$id_poll_apoll2 = 2;
	$chem_script_apoll2 = "./poll/";
	include($chem_script_apoll2."poll.php");
	echo '</div></div>';
}
	elseif (LANGUAGE=="DE")
{
	echo '<div id="layer4" style="position: absolute; top: 850px; width: auto">
<div style="text-align: center"><font color="#CC0000">'.$site_lang['Main_poll'].'</font></div>
<div style="text-align: center">';
	unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);
	$id_poll_apoll2 = 3;
	$chem_script_apoll2 = "./poll/";
	include($chem_script_apoll2."poll.php");
	echo '</div></div>';
}
else 
{
	echo '<div id="layer4" style="position: absolute; top: 850px; width: auto">
<div style="text-align: center"><font color="#CC0000">'.$site_lang['Main_poll'].'</font></div>
<div style="text-align: center">';
	unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);
	$id_poll_apoll2 = 2;
	$chem_script_apoll2 = "./poll/";
	include($chem_script_apoll2."poll.php");
	echo '</div></div>';
}
?>
Merci à tous pour votre aide. Je passe le sujet en résolu.

Posté : 20 mai 2006, 17:01
par Truc
Tu peux pas mal simplifier le code avec un switch() et en sortant le code HTML du traitement php:
<?php

switch(LANGUAGE)
{
	case "FR":		
		$id_poll_apoll2 = 1;
		break;
	case "EN":		
		$id_poll_apoll2 = 2;
		break;
	case "DE":		
		$id_poll_apoll2 = 3;
		break;
	default:
		$id_poll_apoll2 = 2;
}
?>

<div id="layer4" style="position: absolute; top: 850px; width: auto">
<div style="text-align: center"><font color="#CC0000"><?php echo $site_lang['Main_poll']; ?></font></div>
<div style="text-align: center">

<?php
    unset($id_rubrique_apoll2, $id_poll_apoll2, $voter_apoll2);    
    $chem_script_apoll2 = "./poll/";
    include($chem_script_apoll2."poll.php");
?>
</div></div>

Posté : 20 mai 2006, 20:47
par Lucifer
Effectivement. Merci Truc (?).

Comme je débute en Php, j'ai adopté la méthode "brutale" des if... elseif... else. Je vais maintenant essayer ton code.

Par contre, la simplification du code optimise-t-elle son exécution ? C'est à dire, la méthode du switch() est-elle mieux exploitée par les serveurs que les if... ?

Posté : 20 mai 2006, 23:27
par Truc
Truc (?).
Oui oui c'est bien ça :wink:

Les switch sont toujours plus clair dans la lecture en tous cas niveau optimisation ou rapidité faudrait te faire ton propore benchmark. Les bench se contredisent souvent à ce sujet mais en voila un.