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
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
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
11 mars 2008 à 10:00
Bonjour,
concatènes avec un espace comme ça:
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:
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:
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];
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
27 févr. 2009 à 22:06
bonjour,
il semble que la concatenation avec un "pipe" ne marche pas avec 3 (ou plus) variables?
ou j'ai raté quelque choses?
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?
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
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?
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?
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
28 févr. 2009 à 10:45
si tu récupères par un explode('|',
l'espace ne devrait pas géner
l'espace ne devrait pas géner
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
28 févr. 2009 à 10:53
salut alain_42,
voilà la ligne:
et cela ne marche pas s'il y a un espace :-/
voilà la ligne:
$array_nom_createur_date_sortie_licence=explode("|",$_POST['test']);
et cela ne marche pas s'il y a un espace :-/
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
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>'; } ?>
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
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
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
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
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>'; }
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
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 :-/
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
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 ,
si tu fais afficher la source de ta page, est ce que tu vois bien toutes les valeurs de ta liste select correctement ,
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
28 févr. 2009 à 19:17
oui les valeurs (même ceux avec les espaces) sont affichés
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
28 févr. 2009 à 19:24
Bizarre
si tu fais:
ça va t'afficher tout ce qui est posté et la as tu tes chaines complètes avec les |
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 |
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
28 févr. 2009 à 19:31
les mots avec les espaces ne sont pas afficher, j'obtines quelque choses de style:
à la place de "Trés [linux1] =>" devrais avoir "Trés bien"
|blabla|blabla|N/a|Trés [linux1] =>
à la place de "Trés [linux1] =>" devrais avoir "Trés bien"
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
28 févr. 2009 à 21:22
Trés [linux1]
d'où sort ce [linux1] ??
Dis moi tu creer ton code avec Notepad++ ?
d'où sort ce [linux1] ??
Dis moi tu creer ton code avec Notepad++ ?
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
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
merci pour ton aide
P.S non j'utilise bluefish sous debian lenny
11 mars 2008 à 10:05
Pour l'espace ca marche impéccable merci beaucoup .. je test le reste et je te dis ca d'ici peu .
Merci !
11 mars 2008 à 10:14
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
11 mars 2008 à 10:23
$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
11 mars 2008 à 10:33
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 ?
11 mars 2008 à 11:04
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