Page 1 sur 1

liste déroulante qui ne se remplie pas

Posté : 21 juin 2006, 14:58
par marie
liste déroulante bonjour ma liste déroulante ne fonctionne pas , et je ne voie pas le probleme :( snif
<select name="correspondant">
<?php
//remplissage de la liste déroulante a l'aide de la base de donnée en concaténant les champs afin qu'ils soit sur une meme ligne
$sql= "SELECT initiales, nom , prenom , num FROM correspondant ORDER BY initiales";
$res = mysql_query($sql);


$i = "SELECT initiales FROM renseignements WHERE num = '.$id.'"; 
$res2 = mysql_query($i);
$val2 = $mysql_fetch_array($res2);
$initiales = $val2['initiales'];
while($val=mysql_fetch_array($res)) 
{ 
    if ($val['initiales']== $initiales)
    {
         echo '<option value="'.$val['initiales'].'" selected="selected">'.$val['initiales'].' , '.($val['nom']).' , '.($val['prenom']).', '.($val['num']).'</option>';
    } 
    else 
    {
        echo '<option value="'.$val['initiales'].'"> '.$val['initiales'].', '.($val['nom']).' , '.($val['prenom']).' , '.($val['num']).'</option>';
    } 
}
?>
</select>

Posté : 21 juin 2006, 15:04
par Ryle
Utilises les balises [ php ] pour du code php, la coloration syntaxique rend le code plus lisible :)

A priori ton erreur viendrait de là :
$i = "SELECT initiales FROM renseignements WHERE num = '.$id.'"; 
Les "." autour de $id ne servent à rien puisque tu n'es pas en train de concatener des chaines. Tu peux faire :
$i = "SELECT initiales FROM renseignements WHERE num = '".$id."'"; 
// ou
$i = "SELECT initiales FROM renseignements WHERE num = '$id'";
Sachant qu'il ne faudrait pas (même si mysql le tolère) mettre d'apostrophes autour d'un nombre
$i = "SELECT initiales FROM renseignements WHERE num = $id";
// ou 
$i = "SELECT initiales FROM renseignements WHERE num = " . $id;

Après tu peux ajouter des or die(mysql_error()) après tes mysql_query pour voir s'il n'y a pas d'erreur sql.. Sachant que s'il y a des messages d'erreur php situés entre les balises <select></select> tu ne pourras les voir qu'en regardant le source html de la page générée :)

Posté : 22 juin 2006, 10:11
par marie
coucou je l'est refet ...mais ca fonctionne pas encore...voi tu une erreur ? :)

<select name="correspondant">
<?php
//remplissage de la liste déroulante a l'aide de la base de donnée en concaténant les champs afin qu'ils soit sur une meme ligne
$sql= "select initiales, nom , prenom , num from correspondant order by initiales";
$query = mysql_query($sql);
$numrow = mysql_num_rows($query);

$sql2= "select initiales from renseignements num = '$id'";
$query2 = mysql_query($sql2);
$initiales2 = mysql_result($query2,0,'initiales');



for($i=0;$i<$numrow;$i++){
$initiales = mysql_result($query,$i,'initiales');
$nom = mysql_result($query,$i,'nom');
$prenom = mysql_result($query,$i,'prenom');
$num = mysql_result($query,$i,'num');


if ($initiales == $initiales2 ){
echo "<option value=\"".$initiales."\"selected='selected'> ".$initiales." , ".$nom." , ".$prenom." , ".$num."</option>";
} else {
echo "<option value=\"".$initiales."\"> ".$initiales." , ".$nom." , ".$prenom." , ".$num."</option>";
}
}
?>
</select> 
			


Posté : 22 juin 2006, 10:13
par ouckileou
Utilises les balises [ php ] pour du code php, la coloration syntaxique rend le code plus lisible :)
:!:

Là, j'ai corrigé...

Posté : 22 juin 2006, 10:17
par guilt92
mais ca fonctionne pas encore
Que se passe t il exactement ? Tu as un message d erreur ? La liste se remplit ou non ?

Il faudrait ajouter un espace avant le selected dans ta liste... Sinon essaye de faire un echo de tes variables, ajoutes comme Ryle l'a suggéré des or die(mysql_error()); et donne nous des informations sur le problème stp.

Posté : 22 juin 2006, 10:21
par Marie
bah enfaite , ca m'affiche bien ma liste déroulante ( je me sert de " initiales " dans un update et ca fonctionne ) ! mais ma variable ne s'affiche pas par défaut dans ma liste déroulante !

Posté : 22 juin 2006, 10:24
par guilt92
Essaye de la facon suivante (j'ai juste ajouté un espace avant le selected et enlevé le ='selected' qui n est pas utile). As tu vérifié la valeur de $initiales2 ?
<select name="correspondant"> 
<?php 
//remplissage de la liste déroulante a l'aide de la base de donnée en concaténant les champs afin qu'ils soit sur une meme ligne 
$sql= "select initiales, nom , prenom , num from correspondant order by initiales"; 
$query = mysql_query($sql); 
$numrow = mysql_num_rows($query); 

$sql2= "select initiales from renseignements num = '$id'"; 
$query2 = mysql_query($sql2); 
$initiales2 = mysql_result($query2,0,'initiales'); 



for($i=0;$i<$numrow;$i++){ 
$initiales = mysql_result($query,$i,'initiales'); 
$nom = mysql_result($query,$i,'nom'); 
$prenom = mysql_result($query,$i,'prenom'); 
$num = mysql_result($query,$i,'num'); 


if ($initiales == $initiales2 ){ 
echo "<option value=\"".$initiales."\" selected> ".$initiales." , ".$nom." , ".$prenom." , ".$num."</option>"; 
} else { 
echo "<option value=\"".$initiales."\"> ".$initiales." , ".$nom." , ".$prenom." , ".$num."</option>"; 
} 
} 
?> 
</select> 

Posté : 22 juin 2006, 10:27
par marie
ouai quand je fait echo("$intiales2"); ca ne maffiche rien mais je ne sais pas pk???

Posté : 22 juin 2006, 10:28
par ouckileou
enlevé le ='selected' qui n est pas utile).
Si, c'est utile si tu veux que ton code soit valide XHTML
Tout doit avoir ce format :

Code : Tout sélectionner

attribut="valeur"

Posté : 22 juin 2006, 10:29
par ouckileou
ouai quand je fait echo("$intiales2"); ca ne maffiche rien mais je ne sais pas pk???
Peut-être que ta requête a échoué
$sql2= "select initiales from renseignements num = '$id'";
$query2 = mysql_query($sql2);
$initiales2 = mysql_result($query2,0,'initiales'); 
Ils t'ont déjà donné des pistes pour débugger, tu peux aussi suivre ce post : PHP+SQL : Etapes à suivre pour résoudre les problèmes

Posté : 22 juin 2006, 10:45
par Marie
OUai je pense que le probleme vient de la...mais je n'arrive pas a le résoudre ...

Posté : 22 juin 2006, 10:47
par guilt92
peut etre qu il manque un WHERE dans ta requete... avant le num= par exemple ;)

Posté : 22 juin 2006, 10:47
par ouckileou
OUai je pense que le probleme vient de la...mais je n'arrive pas a le résoudre ...
Bon et à part ça ? tu as suivi les conseils ?

Dire "je n'arrive pas" ça n'aide personne, ni toi ni nous
Soit tu as fait les opérations pour débugger (afficher le contenu de la requête, afficher les erreurs) et si rien ne t'as alerté il faut nous donner ces résultats

Soit tu ne les as pas faites, et donc il faut les faire, tout simplement, et nous donner les résultats

Posté : 22 juin 2006, 11:10
par marie
lol merci tout le monde !
a force de le voir ce script javais pas vu qu'il manquai le where lol :)

Posté : 22 juin 2006, 11:15
par ouckileou
lol merci tout le monde !
a force de le voir ce script javais pas vu qu'il manquai le where lol :)
Tu vois moi ce qui me saoule c'est que dès le premier message Ryle t'as dit de faire afficher les messages d'erreur MySQL avec mysql_error()

puis guilt92 t'as demandé si tu l'avais fait

Puis moi aussi, et je t'ai filé un lien vers un message qui explique comment débugger

Mais non, malgré tout ça tu ne l'as pas fait, tu t'es contenté de dire "ça ne marche pas je ne sais pas comment résoudre"

En attendant que des gentils membres comme guilt92 continuent d'éplucher ton code et finissent par trouver l'erreur

Alors que la fonction mysql_error() t'aurais direct signalé la faute de syntaxe

Résultat : ton problème est résolu, mais je ne suis pas sûr que tu sois plus capable de débugger seule, et tu reviendras au prochain problème crier au secours

Et en ce moment il y a plein de gens comme toi, qui ne font pas ce qu'on leur dit pour débugger eux-mêmes

Bientôt je sens que je vais verrouiller les messages tant que les opérations élémentaires de débuggage ne seront pas faites, c'est trop simple et pas pédagogique d'attendre que quelqu'un trouve l'erreur

Mais bon, invitée, tu es sûrement déjà loin et tu ne reverras peut-être jamais ce topic, que je vais devoir marquer résolu, et je parle dans le vent... :?