2013-02-03 2 views
0

J'ai ce script php qui est censé remplir une liste déroulante; Je l'ai intégré dans l'élément mais cela n'a pas fonctionné. voici mon script pour expliquer clairement mon problème:Remplissez la liste déroulante via mysql sélectionnez la requête

<select name="cats"> 
    <?php 
    require_once("connection.php"); 
    $rs = mysql_query("select cat_name from category"); 
    $count = 0; 
    while($array = mysql_fetch_array($rs)){ 
    echo "<option>".$array[$count]."</option>"; 
    } 
    mysql_close($con); 
    ?> 

    </select> 

Si vous pouvez me aider à définir l'erreur et si cela est la mauvaise façon de le faire; quelle est la meilleure façon. Je serais reconnaissant pour les implémentations. merci d'avance :)

+0

[** Veuillez ne pas utiliser les fonctions 'mysql_ *' dans le nouveau code **] (http://bit.ly/phpmsql). Ils ne sont plus maintenus et le [processus de dépréciation] (http://j.mp/Rj2iVR) a commencé dessus. Voir la [** boîte rouge **] (http://j.mp/Te9zIL)? En savoir plus sur [** instructions préparées **] (http://j.mp/T9hLWi) à la place, et utiliser [PDO] (http://php.net/pdo) ou [MySQLi] (http: // php. net/mysqli) - [cet article] (http://j.mp/QEx8IB) vous aidera à décider lequel. Si vous choisissez PDO, [voici un bon tutoriel] (http://j.mp/PoWehJ). –

+0

Je vois aussi que vous préparez une variable $ count. Si vous l'utilisez comme index unique n'oubliez pas de l'incrémenter $ count ++; dans la boucle while –

+0

thx j'ai trouvé que j'ai déjà manqué l'incrément: $ –

Répondre

0

En termes généraux, c'est la bonne façon de le faire. Je suppose que le problème est ici:

echo "<option>".$array[$count]."</option>"; 

Votre $count est nécessairement 0, donc vous serez toujours délivrer en sortie $array[0], qui est le premier champ qui est en cours sélectionné (généralement une sorte d'identité, mais cela dépend de la structure de la table). Cela peut ou peut ne pas être le bon champ dans la table.

Ce que je recommande est d'abord de spécifier les champs exacts que vous sélectionnez. Par exemple:

select `id`, `text` from `category` 

Et puis utilisez le tableau associatif $array pour obtenir ce que vous voulez, par exemple: $array['id']

+0

J'ai essayé toutes les solutions et aucun d'entre eux a travaillé :( –

1

changement:

while($array = mysql_fetch_array($rs)){ 
    echo "<option>".$array[$count]."</option>"; 
} 

à

while($array = mysql_fetch_array($rs)){ 
    echo "<option value='".$array["cat_id"]."'>".$array["cat_name"]."</option>"; 
} 

cat_id est l'identifiant de la table de votre catégorie

+0

J'ai essayé toutes les solutions et aucun d'eux a travaillé :( –

0

Je pense qu'il n'y a pas de problèmes avec votre code, vérifiez à nouveau votre connexion à la base de données et essayez. Parce que j'essaye votre code dans mon localhost et récupère cat_name dans la liste déroulante.

Questions connexes