2017-08-14 4 views
-1

Je viens d'écrire un code de datalist du nom de la ville qui va trouver la ville de l'id d'état donné. Mais lors de la sélection du nom de la ville, il affiche aussi l'identifiant de l'état et, après sélection, affiche uniquement l'identifiant de l'état au lieu d'afficher le nom de la ville. Voici le code.Comment renvoyer le nom de la ville en tant que valeur au lieu de l'identifiant?

<?php 
    echo '<input type="text" list="city" class="form-control" /> 
       <datalist id="city" >'; 
    $con = mysql_connect("localhost","root",""); 
    $db = mysql_select_db("placedb",$con); 

    $query = mysql_query("SELECT * FROM `cities` WHERE state_id BETWEEN 1 AND 41 ORDER BY name ASC ") or die(mysql_error()); 

    $items = array(); 
    while ($row = mysql_fetch_array($query)) { 
     $items[] = $row; 
    } 

    foreach($items as $item){ 

     printf('<option id="city" value="%s">%s</option>', $item['id'], $item['name']); 
    } 
    echo '</datalist>'; 

    ?> 
+0

Supprimer '$ item [ 'id']' Je suppose? Si vous venez d'écrire cela, vous le sauriez sûrement. À moins que je ne manque quelque chose? – Script47

+0

** Ne pas ** utiliser les fonctions ** dépréciées et non sécurisées ** _mysql _ * -. Ils ont été déconseillés depuis PHP 5.5 (en 2013) et ont été complètement supprimés en PHP 7 (en 2015). Utilisez MySQLi ou PDO à la place. 2. Vous êtes ** largement ouvert à ** [Injections SQL] (http://php.net/manual/en/security.database.sql-injection.php) et devriez vraiment utiliser [Prepared Statements] (http://php.net/manual/fr/mysqli.quickstart.prepared-statements.php) au lieu de concaténer vos requêtes, ce qui peut être utilisé si vous utilisez MySQLi ou PDO. –

+0

Cela ressemble à une pâte de copie. – Sand

Répondre

0

Vous devez utiliser $item['name'] au lieu de $item['id']

0

Je pense que le printf devrait être

printf('<option id="city" value="%d">%s</option>', $item['id'], $item['name']);