Requete liste déroulante

Résolu/Fermé
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 - 15 févr. 2013 à 09:35
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 - 15 févr. 2013 à 16:00
Bonjour,

J'ai une liste déroulante qui se remplit automatiquement avec les valeurs de ma table.
En dessous, un champ text qui doit se remplir en fonction du choix fait dans la liste.

<td><!-- boucle parcourant la liste des rues -->
<?php $Requete = "select nom from rattachement_secteur where titre != ''";								
$resultat = mysql_query($Requete) or die ("Erreur d'éxécution" ); ?>
								
<select size="1" name="adressemodif" id="adressemodif" onchange="ModifRue();">
<option value="">Adresse</option><?php
								
while ($ligne = mysql_fetch_row($resultat))
  {
$i = 0;
?>
<!--  Remplissage de la liste déroulante avec les communes -->
<option value="<?php echo $ligne[$i]; ?>"><?php echo $ligne[$i] ?></option>
<?php
								
								
$i++;
}
?>
</select>
								
</td>	
</tr>
<?php  echo "<tr><td>Titre :</td><td><input type=\"text\" name=\"titremodif\" value='".$ligne[$i]."'></td></tr>" ;?>
<tr>



Je n'y arrive pas et ne vois pas comment faire, pouvez-vous m'aider svp ?
Merci

24 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 09:45
Bonjour

qu'est ce qui ne fonctionne et qu'est ce qui ne fonctionne pas ?

Ton select fonctionne mais tu n'arrives pas à faire afficher dans ton input la valeur de ton select, c'est ça ?

Si c'est ça, alors c'est normal, ça ne peut pas fonctionner comme ça en php, il faudrait un rechargement de la page. Il faut que tu passes par du javascript pour faire ça

tu peux regarder cet exemple en jquery :
https://api.jquery.com/val/

le 1er exemple correspond bien à ce que tu souhaites.
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 09:57
Ouais c'est exactement ça.
C'est bien ce que je pensais. Le probleme est que mon adresse est composée de 2 champs : titre (ex : allée des) et nom (ex :asturies).
La value de ma liste déroulante est la concaténation.

Mais une fois avoir récuperer cette valeur en ajax, je récupere "allée des asturies" en une seule valeur. Alors comment faire pour mettre "allée des" dans un champ et "asturies" dans l'autre ? :/

Merci de m'aider en tout cas ;)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 09:59
il faudrait exploser le champ :
https://www.w3schools.com/jsref/jsref_split.asp
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 10:04
Comment faire pour savoir quelle partie correspond au titre et quelle partie correspond au nom ?
Allée des , asturies
Rue de la , motte brûlon

Le nombre de mot n'est pas toujours identique
0

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

Posez votre question
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 10:08
c'est des rues de Rennes ça non ? ^^

là en effet c'est plus compliqué...

Question : pourquoi as-tu concaténé tes 2 champs ?
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 10:13
Ma rue et mon lycée en effet, tu es du coin ? ^^

Concaténation car l'affichage dans la liste s'affiche order by nom.
Sinon on aurait eu toutes les allée en premier, etc..

Bon je suis pas pres de réglé mon problème je pense, en plus pour toi ça va être difficile de m'aider vu que tu n'as pas tout sous les yeux :/
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 10:25
j'habite pas loin de là, j'étais facteur sur H. Fréville un moment ^^

Ok, alors je pense qu'il faut oublier le champ où tu les as concaténer, faut procéder autrement.

Logiquement en mysql on peut concaténer des champs directement, il y a peut être moyen de faire un order by direct dessus.

essaye dans phpmyadmin un truc du genre :

SELECT CONCAT(rue1, " ", rue2) as nomderue FROM table ORDER BY nomderue

je pense que ça devrait marcher comme ça, du coup, tu supprimes carrément le champs ou tu avais concaténé ton nom de rue et tu utilises juste ton alias, comme si c'était un champ à part entière.
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
15 févr. 2013 à 10:25
Pourquoi ne pas faire simple en ajoutant un séparateur dans votre concaténation du genre "|".
<option value="<?php echo $ligne[$i]; ?>">|<?php echo $ligne[$i] ?></option>

Sur votre "select" vous ajoutez une fonction :
onchange="select(this.value);"

Qui correspond à :
function select(texte){
var tableau = texte.split('|');
document.getElementById('selection').value=tableau[0];
document.getElementById('selection1').value=tableau[1];
}

Puis vous récupérez les valeurs dans 2 champs "input":
<input name="selection" id="selection" type="text" value=""/>
<input name="selection1" id="selection1" type="text" value=""/>
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 10:27
Ah c'est ma station de métro, j'habite à 100 mètres^^

Merci pour ton aide, je vais éssayer :)
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 14:25
tryan44,

Merci pour ta réponse.
Je ne vois pas trop l'interet du "|" mais ta technique à l'air interessante?
La tu met comme value $ligne[$i] et tu affiche "|allée des asturies"
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 14:27
Ce qu'il te propose à mon avis, c'est de concaténer ta chaine avec un | au milieu pour ensuite pouvoir le séparer facilement via javascript

Si tu combines ça avec ce que je t'ai déjà conseillé tu devrais t'en sortir
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 14:31
D'accord mais je le met au niveau du value alors, pas de l'affichage ?
Merci pour vos conseil en tout cas ;)

Saleté de stage.. Bon entre Rennais on peut s'aider :p
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 14:32
Ton value, tu le récupères juste pour cet affichage ou tu t'en sers pour autre chose ?
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 14:34
Juste pour celui la, je met le " | " dans la value et je laisse l'affichage tel qu'il est actuellement
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 14:35
il faut le mettre au moment de ta requête, ou bien tu récupères les 2 champs de ta base que tu concatènes en php avec le |, peu importe
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 14:36
value="<?php echo $ligne['titre']."|".$ligne['nom']?>">
?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 14:37
oui
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 14:42
admin.php
<select size="1" name="adressemodif" id="adressemodif" onchange="select(this.value);">


<option value="<?php echo $ligne['titre']."|".$ligne['nom']?>"><?php echo $ligne[$i] ?></option>


<td><input style="width:375px" type="text" name="titremodif" id="titremodif" value=""></td>
<td><input style="width:375px" type="text" name="nommodif" id="nommodif" value=""></td>



js.js
function select(texte){
var tableau = texte.split('|');
document.getElementById('titremodif').value=tableau[0];
document.getElementById('nommodif').value=tableau[1];
}



Ca ne marche pas :/
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
15 févr. 2013 à 14:45
qu'est ce qui ne marche pas ? ça fait quoi ?
0
chedar Messages postés 99 Date d'inscription mardi 29 janvier 2013 Statut Membre Dernière intervention 14 avril 2013 3
15 févr. 2013 à 14:47
Bah ça fais rien ^^ Quand je sélectionne quelque chose dans ma liste ça ne rempli pas les champs
0