2010-10-14 7 views
1

Je suis confus ici.php mysql sélectionner une liste déroulante sélectionnée et distincte

$sql_n = mysql_query("SELECT * FROM table1 WHERE n='{$row['n']}'"); 
$row_n = mysql_fetch_array($sql_n); 

$sql= mysql_query("SELECT DISTINCT p FROM table1"); 
while($row = mysql_fetch_array($sql)) { 

    if($row['p'] == $row_n['p']) { 
     $selected = " selected"; 
    } 

    $np .= "<option value='{$row['p']}'$selected>{$row['p']}</option>"; 
} 

Quand j'utilise requête SELECT DISTINCT p, $selected ne fonctionne pas, si j'utilise SELECT p. Son fonctionnement, aucune idée pourquoi?

+0

D'où vient le '$ row ['n']' dans la première requête? Est-ce que tout cela fait partie d'une autre boucle? Si c'est le cas, vous écrasez la variable '$ row'. – Alec

+0

'$ selected' ne fonctionnera pas correctement en dehors des problèmes de requête. Dès que vous avez 1 match, tous les suivants seront marqués comme "sélectionnés". Aussi, '$ selected' devrait être' "selected = 'selected'" ' – thetaiko

+1

Essayez un print_r ($ row) pour voir ce qu'il y a dans chaque ligne de la base de données. – Mike42

Répondre

0

Ma première réaction est que la solution à votre problème serait d'ajouter DISTINCT dans votre première requête.

0

Sans faire PHP, mais de savoir comment les moteurs vont parfois faire des noms de colonne si vous ne signifient pas explicitement le « comme » nom de la colonne, il peut faire quelque chose avec le distinct, comme

select DISTINCT p comme DISTINCT_P

et ainsi votre nom de colonne "p" dans la requête de résultat n'existe pas.

Vous voudrez peut-être essayer

Sélectionnez P P DISTINCT

de sorte que le nom de la colonne de résultat implicite est « P » et qualifier le reste de votre routine.

+0

J'ai déjà essayé cela avant, c'est encore pareil :( – cicakman

0

En pensant que c'était la requête, maintenant je ne pense pas que ce soit ça ... mais à la place, votre variable $ selected. Sa non déclarée nulle part tant que la

réelle
if($row['p'] == $row_n['p']) { 
     $selected = " selected"; 
    } 

vous avez besoin probablement « autre » et a fixé

$ selected = " « ; Il ne doit donc pas exister de variable qui échoue lorsque vous essayez de le concaténer dans le bâtiment de chaîne ci-dessous lors de la création de la liste OPTIONS.

Questions connexes