Concatenation

Eléphanteau du PHP | 20 Messages

07 févr. 2015, 19:33

Bonjour !
J'ai un problème : je veut donc mettre du texte dans une page que je met ensuite en include ... c'est pas très claire pour vous je suppose ... voici mon code :

<?php
if(isset($_POST['ok'])){
$titre = $_POST['titre'];
$contenu = $_POST['contenu'];

$message_html_03 = include("haut.php");
$message_html_03 .= $titre;
$message_html_03 .= include("milieu.php");
$message_html_03 .= $contenu;
$message_html_03 .= include("bas.php");
echo $message_html_03;

}
?>

Mais ça ne marche pas ... je suppose que l'include n'est pas le même que celui de php
Comment faire ? peut on concaténer des commande php ?
Aidez moi svp

Mammouth du PHP | 688 Messages

07 févr. 2015, 19:45

tu remplaces tes include par un appel d'une fonction qui retourne une chaine de caractères (getHaut() dans mon exemple).
un fichier include.php
function getHaut(){
return "texte";
}
function printHaut(){
echo getHaut();
}

ynx
Mammouth du PHP | 586 Messages

10 févr. 2015, 12:10

Salut,

Une autre solution possible : si tes fichiers à inclure (haut.php, milieu.php et bas.php) ne contiennent pas de code php à interpréter, autrement dit s'ils ne contiennent que du texte/html, tu peux remplacer tes appels de la fonction include() par la fonction file_get_contents(). http://php.net/manual/fr/function.file-get-contents.php

Bonne journée

ViPHP
xTG
ViPHP | 7331 Messages

10 févr. 2015, 13:42

Pour que ceci fonctionne :
$message_html_03 = include("haut.php");
Il faut que haut.php soit de ce genre :
$contenu = "....";
//.....
$contenu .= "....";

return $contenu; // c'est cette ligne qui va faire le lien

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 févr. 2015, 15:54

La fonction include fait appel au code contenu par le fichier appelé comme s'il était physiquement présent à l'endroit où se fait l'inclusion. Il n'a pas pour objectif de retourner une valeur (c'est le rôle des méthodes et fonctions) mais d'insérer une portion de code.

La solution la plus simple serait alors simplement d'inclure tes script et d'afficher directement tes valeurs plutôt que de les stocker dans une variable :
<?php
include("haut.php");
echo $titre;
include("milieu.php");
echo $contenu;
include("bas.php");
?>
Attention à contrôler les données transmises par l'utilisateur avant de les afficher pour se protéger des injections javascript (XSS) :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 2278 Messages

16 févr. 2015, 10:00

Ou alors définir des consantes dans l'include.
ou un truc comme ça:
$
messages = array
	(
			"J" => "",
				
			"T" => "Vous avez écrit ###. L'auteur de la dictée avait écrit ##. On aurait pu admettre #.",
		"JT" => "Vous avez écrit ### comme l'auteur de la dictée. On aurait pu admettre ##.",
		"U" => "Vous avez écrit ###. L'auteur de la dictée avait écrit ##. On admet # plus proche de la prononciation.",
		"TT" => "Vous avez écrit ###. L'auteur de la dictée avait écrit ## qui remplace # qu'on peut toujours employer.",
		"UU" => "Vous avez écrit ###. L'auteur de la dictée avait écrit ## qui remplace # qu'on peut toujours employer.",
				
	);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD