Concaténation de variable

Résolu/Fermé
mikouse - 11 mars 2008 à 09:39
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 - 28 févr. 2009 à 21:50
Bonjour tout le monde ,


Questions ....
observez ce code

<TR><TD>
Nom : <SELECT NAME='nom' size='0,20'>
<?php
$sql = "SELECT * FROM t_beneficiaire ORDER BY nom_beneficiaire" ;
$res= mysql_query($sql);

while($val=mysql_fetch_array($res)) {
echo "<option>".$val['nom_beneficiaire'].$val['prenom_beneficiaire']."</option>\n";


}

1. il m'affiche le résultat dans une liste déroulante mais le nom et le prénom sont collés .. j'ai essayer de mettre un espace un peu partout sur la ligne et nblsp ou jsais plus trop quoi mais rien n'y fait...
"echo "<option>".$val['nom_beneficiaire'].$val['prenom_beneficiaire']."</option>\n";" une solution ?

2.En concaténant le nom et le prénom dans une seule variable c'est bien mais le problème c'est que j'aimerais récupérer les deux dans la page suivant la validation ..
J'ai essayer avec la variable $_POST['nom_beneficiaire'] et $_POST['prenom_beneficiaire'] mais comme vous vous en doutez s ca ne marche pas ..

j'ai aussi essayer après de rajouter ces lignes " $nom=$val['nom_beneficiaire'];
$prenom=$val['prenom_beneficiaire']; "
Pour les récupérer ensuite avec la variable $_POST mais toujours pas ..

Avez vous des idées ?

15 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 mars 2008 à 10:00
Bonjour,

concatènes avec un espace comme ça:

while($val=mysql_fetch_array($res)) {
echo "<option>".$val['nom_beneficiaire']." ".$val['prenom_beneficiaire']."<­/option>\n";


} 



mais il faut obligatoirement mettre une value= dans la balise <option sinon pb avec certains navigateur, tu ne pourra pas récuperer la value sélectionnée alors:

while($val=mysql_fetch_array($res)) {
echo "<option value=".$val['nom_beneficiaire']."|".$val['prenom_beneficiaire'].">".$val['nom_beneficiaire']." ".$val['prenom_beneficiaire']."<­/option>\n";

} 


attention dans value, la concatenation est faite avec un "pipe" (AltGr et touche 6) car il pourrait y avoir un espace dans le nom ou le prenom, donc pb pour récuperer

pour récuperer ensuite tu fais:

$array_nom_prenom=explode("|",$_POST['nom']);
$nom=$array_nom_prenom[0];
$prenom=$array_nom_prenom[1];
0
re alain !

Pour l'espace ca marche impéccable merci beaucoup .. je test le reste et je te dis ca d'ici peu .
Merci !
0
Alors , j'ai bien modifié mon code ainsi

while($val=mysql_fetch_array($res)) {
echo "<option value=".$val['nom_beneficiaire']."|".$val['prenom_beneficiaire'].">­".$val['nom_beneficiaire']." ".$val['prenom_beneficiaire']."<­/option>\n";


}
$array_nom_prenom=explode("|",$_POST['nom']);
$nom=$array_nom_prenom[0];
$prenom=$array_nom_prenom[1];

Aucune erreur dans mon fichier tout se passe bien .
Ensuite dans mon fichier vers lequel je "post" , j'essai d'afficher les variables qui m'interessent ( $nom et $prenom) à l'aide d'un echo .. ca m'affiche bien le nom et prénom mais c'est parceque $nom concatennent toujours le nom et le prénom, donc il ne me les différencie toujours pas .

J'ai rajouter aussi ceci
$name=$_POST['nom'];
$surname=$_POST['prenom'];

pas plus d'effet .. ce qui n'est guere etonnant puisque $\POST['nom'] fait référence à SELECT NAME='nom'( ma liste déroulante ).
Si je n'ai pas été assez clair dans mes explications n'hésitent pas je recommencerais lol
Merci encore
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > mikouse
11 mars 2008 à 10:23
$array_nom_prenom=explode("|",$_POST['nom']);
$nom=$array_nom_prenom[0];
$prenom=$array_nom_prenom[1];


ces lignes il ne faut pas les mettre a la suite de ta liste dans le premier fichier mais dans le fichier appelé celui vers lequel tu postes, pour récupere les nom prenom selectionnes dans la liste avec name="nom"

et:
$name=$_POST['nom'];
$surname=$_POST['prenom'];



$_POST['nom']; c'est ce que la liste qui a comme name="nom" te poste

et $_POST['prenom']; quelle liste te le poste ? puisque prenom est dans la même liste que le nom
0
mikouse > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
11 mars 2008 à 10:33
alain ... merci beaucoup ! ça marche c'est exactement ce que je souhaitais faire .. dsl pour ma lenteur dans la compréhension . juste un dernier détail ..

echo "<option value=".$val['nom_beneficiaire']."|".$val['prenom_beneficiaire'].">­".$val['nom_beneficiaire']." ".$val['prenom_beneficiaire']."<­/option>\n";

Lorsque j'ai copier cette ligne ça a tres bien marché .. vraiment impeccable . J'ai voulu ensuite faire un espace entre ma liste déroulante avec ces valeurs et le bouton submit .
Ca n'a pas marché et ca m'affichait quelque chose dans ce style ..

liste déroulante : nom prenom </option>

Donc je me suis dis l'espace ne marche pas je vais le virer .(ps j'avais utliser   )
Mais mm en le virant maintenant j'ai toujours cette affichage dans ma liste avec </option> derriere .. je suis sur de ne pas avoir touché a la ligne en question et je l'aime mm recopier par rapport à ton post .. rien n'y fait .. j'avoue ne pas comprendre.. une idée ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > mikouse
11 mars 2008 à 11:04
En nelevant les lignes tu as du virer qq chose en trop;

As tu bien le </select> de fin de liste ,

sinon donnes moi le code complet ou la partie de code de ton formuliar equi est concernée.

@lain
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
27 févr. 2009 à 22:06
bonjour,

il semble que la concatenation avec un "pipe" ne marche pas avec 3 (ou plus) variables?

echo "<option value= ".$val['nom']."|".$val['createur']."|".$val['pays'].">".$val["nom"]."</option>\n";


ou j'ai raté quelque choses?
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
28 févr. 2009 à 10:37
re,

en fait le soucis réside dans le fait que s'il y a un espace dans la valeur de 2eme variable (ou 3eme, 4eme etc) les valeurs des variables qui suivent ne s'affichent pas.. comment y remédier svp?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 févr. 2009 à 10:45
si tu récupères par un explode('|',

l'espace ne devrait pas géner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
28 févr. 2009 à 10:53
salut alain_42,

voilà la ligne:
 $array_nom_createur_date_sortie_licence=explode("|",$_POST['test']);


et cela ne marche pas s'il y a un espace :-/
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 févr. 2009 à 11:31
j'ai fait ce petit bout de code, il fonctionne parfaitement même avec des espaces

<form name="essai" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="test" value=""><br>
<input type="submit" name="envoi" value="Tester"><br>

</form>

<?php
if(isset($_POST['envoi'])){
	$array=explode('|',$_POST['test']);
	echo '<pre>';
	print_r($array);
	echo '</pre>';
}
?>
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
28 févr. 2009 à 11:46
voici le mien, qui ne marche pas avec les espaces:
$mysql_link = mysql_connect($host,$login,$pass);

mysql_select_db($base, $mysql_link);
?>
<form action="comparer.php" method="post" >
<select name="linux"> 
<?php
$SQL = "SELECT * FROM comparer ";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option value= ".$val['nom']."|".$val['createur']."|".$val['date_sortie']."|".$val['licence'].">".$val["nom"]."</option>\n";
}
?>
</select>

<input type="submit" value="Comparer">
</form>

<?php
if(isset($_POST['linux'])){
$array_nom_createur_date_sortie_licence=explode("|",$_POST['linux']);
$nom=$array_nom_createur_date_sortie_licence[0];
$createur=$array_nom_createur_date_sortie_licence[1]; 
$date_sortie=$array_nom_createur_date_sortie_licence[2];
$licence=$array_nom_createur_date_sortie_licence[3];

}
echo 
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 févr. 2009 à 18:36
Bonsoir,

même celui là chez moi fonctionne avec des espaces, j'ai un peu bidouillé pour faire sans la BDD

<?php
/*$mysql_link = mysql_connect($host,$login,$pass);

mysql_select_db($base, $mysql_link);
*/
?>
<form action="comparer.php" method="post" >
<select name="linux"> 
<?php
/*$SQL = "SELECT * FROM comparer ";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option value= ".$val['nom']."|".$val['createur']."|".$val['date_sortie']."|".$val['licence'].">".$val["nom"]."</option>\n";
}*/
?>
<option value= "le_nom | son_createur |12/10/2008| n° licence">nom</option>;

</select>

<input type="submit" value="Comparer">
</form>

<?php
if(isset($_POST['linux'])){
$array_nom_createur_date_sortie_licence=explode("|",$_POST['linux']);
$nom=$array_nom_createur_date_sortie_licence[0];
$createur=$array_nom_createur_date_sortie_licence[1]; 
$date_sortie=$array_nom_createur_date_sortie_licence[2];
$licence=$array_nom_createur_date_sortie_licence[3];
echo '<pre>';
print_r($array_nom_createur_date_sortie_licence);
echo '</pre>';
}
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
28 févr. 2009 à 18:56
oui mais moi je récupère depuis bdd et peut être qu'il est là le soucis justement :-/
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 févr. 2009 à 19:16
Donc le soucis je suppose vient de la recup dans la BDD

si tu fais afficher la source de ta page, est ce que tu vois bien toutes les valeurs de ta liste select correctement ,
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
28 févr. 2009 à 19:17
oui les valeurs (même ceux avec les espaces) sont affichés
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 févr. 2009 à 19:24
Bizarre

si tu fais:

<?php
if(isset($_POST['linux'])){
echo '<pre>';
print_r($_POST);
echo '</pre>';

$array_nom_createur_date_sortie_licence=explode("|",$_POST['linux']);
$nom=$array_nom_createur_date_sortie_licence[0];
$createur=$array_nom_createur_date_sortie_licence[1]; 
$date_sortie=$array_nom_createur_date_sortie_licence[2];
$licence=$array_nom_createur_date_sortie_licence[3];

}


ça va t'afficher tout ce qui est posté et la as tu tes chaines complètes avec les |
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
28 févr. 2009 à 19:31
les mots avec les espaces ne sont pas afficher, j'obtines quelque choses de style:

|blabla|blabla|N/a|Trés [linux1] => 


à la place de "Trés [linux1] =>" devrais avoir "Trés bien"
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 févr. 2009 à 21:22
Trés [linux1]

d'où sort ce [linux1] ??

Dis moi tu creer ton code avec Notepad++ ?
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
28 févr. 2009 à 21:50
en fait j'ai deux listes (un 'linux' et 2eme linux1) mais en fait j'ai résolu le soucis et le changeant complètement.

merci pour ton aide

P.S non j'utilise bluefish sous debian lenny
0