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

Petit nouveau ! | 8 Messages

19 mai 2006, 19:05

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
Modifié en dernier par Lucifer le 20 mai 2006, 16:50, modifié 1 fois.

Petit nouveau ! | 8 Messages

20 mai 2006, 12:23

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

Mammouth du PHP | 19672 Messages

20 mai 2006, 13:19

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");
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 8 Messages

20 mai 2006, 13:59

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>';
}
?>

Eléphant du PHP | 377 Messages

20 mai 2006, 14:08

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>
Petit scarabée deviendra grand

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 mai 2006, 14:09

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 8 Messages

20 mai 2006, 16:18

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

Petit nouveau ! | 8 Messages

20 mai 2006, 16:49

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.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 mai 2006, 17:01

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>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 8 Messages

20 mai 2006, 20:47

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 mai 2006, 23:27

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute