8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai un vrai souci mais je vais être bref. En Php, pour faire passer une variable dans une variable, il y a cette possibilité : index.php:

<?php

$textMot1 = "fois";
$text1 = "Il était une $textMot1 dans la ville de Foix...";
echo $text1;

// donne : Il était une fois dans la ville de Foix...";
?>

// 2ème possibilité (2 fichiers) :

// 1er fichier : textes.php

<?php

$textMot1 = "fois";

?>

// second fichier: index.php

<?php

require("textes.php");
$text1 = "Il était une $textMot1 dans la ville de Foix...";
echo $text1;

// donne Il était une fois dans la ville de Foix...";
?>

Mon problème, c'est de créer un second fichier dans lequel j'ai tous mes textes. Le premier ne servant, qu'à travers un switch,; à définir quel texte appeler, en fonction de la page, et donc à l'afficher :

// 1er fichier : textes.php

<?php

$text1 ="Il était une $textMot1 dans la ville de Foix...";
$text2 ="bla bla $textMot2 Bla bla...";
$text3 ="bla bla $textMot3 Bla bla...";
$text4 ="bla bla $textMot4 la bla...";

?>

// second fichier : index.php
<?php

$textMot1 = "fois";
$textMot2 = "blabla";
$textMot3 = "zouzou";
$textMot4 = "dingding";

require ("textes.php");

swithch ($page) {
case 1:
$leText = $text1
break;
case 2:
$leText = $text2
break;
case 3:
$leText = $text3
break;
case 4:
$leText = $text4
break;
default:
$leText = $text1
}

echo $leText;

?>

ET Là, ça ne marche pas....

Depuis des heures je tourne dessus. Une grosse fatigue ? C'est devant moi et je ne vois rien ? Ou bien n'est tout simplement pas possible ?

Bref, j'ai essayé des tas de formules. Outre que souvent je me prends une erreur Php, rien ne s'améliore. Il me déclare chaque fois que la variable textMot (textMot1, textMot2, etc...) est inconnue..

Si vous pouviez m'aider...

Merci d'avance et sincèrement à tous,

Cordialement,

whombat
Salut,

A priori, pas d'erreur (un swithch et quelques Smiley cligne ...
En tout cas, ceci fonctionne :

$page = '';

$textMot1 = "fois";
$textMot2 = "blabla";
$textMot3 = "zouzou";
$textMot4 = "dingding";

$text1 ="Il était une $textMot1 dans la ville de Foix...";
$text2 ="bla bla $textMot2 Bla bla...";
$text3 ="bla bla $textMot3 Bla bla...";
$text4 ="bla bla $textMot4 la bla...";

switch ($page) {
case 1:
	$leText = $text1;
	break;
case 2:
	$leText = $text2;
	break;
case 3:
	$leText = $text3;
	break;
case 4:
	$leText = $text4;
	break;
default:
	$leText = $text1;
}
echo $leText;


tm
Sujet déplacé dans le salon approprié.

Par ailleurs, merci de bien vouloir mettre le code en forme au moyen des balises apporpriées [ code] ... [/ code]
requires apelle un fichier qui utilise une variable qui n'existe pas à ce moment là.

Il faut faire le switch, puis appeller le fichier, puis faire l'echo. La ça devrait fonctionner.
Merci de votre réponse tm.

Ce que vous me dites est déjà écrit comme "marchant bien"...
Là où ça se complique c'est lorsque les textes sont dans un fichier à part, un fichier réservé à cette compilation. Le cas n°3 des exemples de mon post.
Hello,

pas de raison que ça ne fonctionne pas mais comme cela a été dit plus haut il faut corriger le code du switch :

index.php :
$textMot1 = 'fois';
$textMot2 = 'blabla';
$textMot3 = 'zouzou';
$textMot4 = 'dingding';

require ('textes.php');

switch ($page) {
	case 1:
		$leText = $text1;
		break;
	case 2:
		$leText = $text2;
		break;
	case 3:
		$leText = $text3;
		break;
	case 4:
		$leText = $text4;
		break;
	default:
		$leText = $text1;
}

echo $leText;
D'une manière générale les langages (dont PHP) Smiley cligne demandent beaucoup de rigueur (et de relecture).
Merci à tous,

En fait mes switch(s) étaient parfaits. C'est l'exemple que je vous ai donné qui comportait l'erreur du point virgule. Un oubli dont je tiens à m'excuser.

Vous m'avez donné la solution : il fallait mettre la déclaration de variables avant les textes à lire. Ce qui n'était pas simple car ces variables sont issues d'une fonction php et, donc, il fallait déclarer le fichier des fonctions encore avant. Le tout, sur 7 langues, en français, donc il fallait déclarer le fichier fr encore encore avant. Je m'étais trompé dans l'ordre...

Merci à tous.

J'ai un nouveau souci mais je vais faire un nouveau post (il n'a rien à voir avec celui-là).

Merci encore.

Très cordialement,

whombat