Un champs vide dans une liste deroulante. [Résolu]

Signaler
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006
-
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006
-
Bonjour !



J'espere que je poste au bon endroit ma question, j'ai prefere la
mettre ici en debutant, car il me semble que c'est trois fois rien,
mais je me souviens plus comment le faire.

Je m'explique en detail :

J'ai une table ecole dans laquelle les renseignements sont stockes,
chaque ecole a un type particulier, elle peut etre Primaire, college,
etc... et quelques ecoles ont une subdivision du type : Comprehensive,
community, et autre.

Jusque la rien de bien mechant, j'ai un formulaire qui me recupere tout
ca en liste deroulante. Par contre le soucis et donc l'objet de ma
question est que j'aimerai dans ma liste deroulante un champs vide, ou
une entree pour le cas ou l'ecole n'est pas de subdivision. Si mon
ecole est primaire tout simplement, le formulaire me propose le premier
champs dans la liste deroulante des subdivision, ce qui va generer une
erreur lors de l'enregistrement des modification car il va me prendre
cette ID et me l'enregistrer alors que je n'en veux pas.



Pour le moment j'ai fait ca, je pensais que cela fonctionnerait mais non.... Flutte !!



$sqlstype= "SELECT * FROM type limit 4,9";

$resultstype = mysql_query($sqlstype) or die(' '.$error.' : '.$sqlstype.'
'.mysql_error());

while ($stype = mysql_fetch_array($resultstype))

{



echo '<option value="'.$stype['idtype'].'" ';



if ($stype['idtype']==$stypeplus) {



print "selected";}

else {

print " ";}



echo '>'.$stype['type'].'</option>';

}

echo "</select>

J'ai fait un if, pour justement qu'il verifie si la valeur est ok ou
non de la table ecole a la table type, si oui il me donne le nom qui
correspond. Mais au niveau du Else ca bloque, je lui ais demande de
rien mettre, mais il insiste pour m'afficher quand meme la premiere
valeur de ma liste deroulante !!!



Voila, si quelqu'un a une idee, je vous remercie d'avance et j'espere avoir bien explique mon soucis.

5 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



si tu veux un champ vide tu peux faire ceci (ça contiendra un espace en fait)



<option>&nbsp;</option>



à moins que tu ne souhaites autre chose ?



Ensuite dans ta requête évite les SELECT *, ici tu n'as que deux champs à sélectionner, ta requête sera celle-ci :



SELECT idtype,stype FROM type LIMIT 4,9



Ensuite fais un mysql_fetch_row()



while ($stype = mysql_fetch_row($resultstype))

{

echo '<option value="',$stype[0],'"';



if ($stype['idtype']===$stypeplus)

{


echo '
selected="selected"';

}

echo '>',$stype[1],'</option>';

}


echo '<option value="">&nbsp;</option>

</select>';
Messages postés
14
Date d'inscription
lundi 11 août 2003
Statut
Membre
Dernière intervention
12 décembre 2007

Salut les mecs c'est Gauss,

Si j'ai bien compris voici ce que je te propose de faire

tu pourrais simplement prévoir un enregistrement du genre "aucune
subdivision ". // ce te faciliterait la tache non !!!

à coté de ça tu peux essayer ça aussi

/*une variable de type booleen ki te di s'il a trouve $stypeplus dans la table type
si non tu ajoute un champ vide à la fin que tu me en "selected "

voici une proposition de code source
*/

$trouve_type='0' // false;

$sqlstype="SELECT * FROM type limit 4,9";
$resultstype = mysql_query($sqlstype) or die(''.$error.' :
'.$sqlstype.'
'.mysql_error());
while ($stype = mysql_fetch_array($resultstype))
{

echo '<option value="'.$stype['idtype'].'" ';

if ($stype['idtype']==$stypeplus) {
print "selected";
$trouve_type='1' ; true; // le cas écheant
}
echo '>'.$stype['type'].'</option>';
}

if($trouve_type=='0'){

echo " < option value=" blablabla "> ton vide la </option> // bè voila
}
echo "</select>
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006

Je vous remercies beaucoup !



C'est bien ce que je pensais, c'etait tout bete ... Je l'avais deja
fait une fois pour une autre requete mais pas moyen de remettre la main
dessus !

(Enfin j'avais fait un truc du genre)



J'ai accepte vos deux reponses, qui fonctionne toutes les deux, mais en
fait j'ai retenu celle de Gauss, dont j'ai mieux pige le
fonctionnement. Je suis pas encore familliere des methodes avec
mysql_fetch_row que j'ai du mal a bien piger.



Enfin, dans tout les cas, je vous remercie beaucoup et si toutefois
Anthomicro voulait m'expliquer le fonctionnement de sa proposition je
serai ravie
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
en fait lorsque tu sélectionnes des champs dans ta table :



SELECT champ1,champ2 FROM table



tes champs via le mysql_fetch_row() prennent des indices qui commencent à zéro pour le champ 1, 1 pour le champ2, etc...



Ce qui fait que pour récupérer les valeurs au lieu de faire
$row['champ1'] pour le champ1 et $row['champ2'] pour le champ2 dans ton
fetch_array() tu prends un fetch_row() qui est plus rapide et pour
récupérer le champ1 ce sera $row[0] et pour le champ2 ce sera $row[1]

Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006

Merci beaucoup pour ton explication, c'est vrai que ca me semble plus clair et meme carrement evident maintenant !



Maintenant je saurai que je peux utiliser le fetch_row en sachant ce
que je suis en train de faire... Ce qui est tout de meme mieux dans
l'absolue.

Faire des trucs sans savoir ce que l'on fait c'est moyen quand meme !!



Mille mercis !