2013-03-31 46 views
-2

我試圖打印此數組,但它不起作用...組合框爲空。如何才能在組合框中打印名稱的屬性,並且同時獲取NumClient的選項值?在組合框中打印關聯數組PHP

在我的數據庫是30個記錄的客戶端表,然後我想獲得id(NumClient)和名稱(Name)並將它們放在組合框中,但我只想打印Name和id( NumClient),我想在選項的標籤中添加屬性值,例如

<option value="$array["NumClient"]">$array["Name"]</option> 
<option value="1">Layana</option> 

任何想法?

<?php 

$conn = mysql_connect("localhost", "root","") or die(mysql_error()); 
$db = mysql_select_db("bd_musique") or die(mysql_error()); 

$query="SELECT * from client"; 

$result = mysql_query($query) or die(mysql_error()); 

echo $query; 

$array=array(); 

$i=0; 
while ($rows = mysql_fetch_array($result)){ 
    $array=array($i,"NumClient"=>$rows["NumClient"], "Name"=>$rows["Name"]); 
    $i++; 
} 

mysql_close($conn); 

?> 
<select class="input-small" name="Client"> 
    <?php 
    foreach($array as $b){ 
    print("<option value='$array[$b]['NumClient']'>".$array[$b]["Name"]."</option>"." <br>"); 
    }   
    ?> 
     /*  
     foreach($array as $cle=> $b){ 
     echo("<option value='$b'>".$cle.$b."</option>"."<br>"); 
     } 
*/ 

</select> 

乾杯

+2

[請不要用'mysql_ *在新代碼'功能(http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[紅框](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

+2

你沒有在while循環中追加到$ array,你每次都重新賦值$ array。應該使用$ array [] = – tester

回答

1

爲什麼不什麼,而不是有3個不同的排列是這樣,你可以使用循環來檢索結果集

while ($rows = mysql_fetch_array($result)){ 
    $array[] = array(
     'NumClient' => $rows["NumClient"], 
     'Name' => $rows["Name"] 
    ); 
} 

//Print output 
print '<select'>; 
foreach($array as $value) { 
    print("<option value={$value['NumClient']}>{$value['Name']}</option>"); 
} 
print '</select>'; 

這將這樣的伎倆,使用{ }允許您打印對象/陣列

更新

我做了一個本地測試,這是代碼

$array[] = array(
    'NumClient' => 1, 
    'Name' => 'Juan' 
); 

$array[] = array(
    'NumClient' => 2, 
    'Name' => 'Luis' 
); 

$array[] = array(
    'NumClient' => 3, 
    'Name' => 'Maria' 
); 



print '<select>'; 
foreach($array as $value) { 
    print("<option value='{$value['NumClient']}'>{$value['Name']}</option>"); 
} 
print '</select>'; 

這是實際的輸出 ![渲染組合框] [1]

可以肯定,檢查您的數據源,也許你」再之前

這裏做別的事情的最終圖像i.stack.imgur.com/ilL6y.png

+0

我在組合框中獲得記錄,但全部是空的......我的意思是有白色的空間,但我看不到它們。 – lezti

+0

您是否在填充後試圖打印$ array? print_r($ array); –

+0

現在,它顯示記錄,但NumClient爲空。例如,我嘗試獲取選項的值NumClient,但它不起作用。 <表格名稱= 「形式」 行動= 「next.php」 方法= 「GET」> next.php $ =的numclient $ _ GET [ 「NUM」]; $ Num = $ _ GET [「numClient」]; echo $ NumClient; echo $ Num; print_r($ _ GET); – lezti

1

這是解決方案,最後我做到了:

<?php 
    $conn = mysql_connect("localhost", "root", ""); 
    mysql_select_db("dbmusique", $conn); 

    $query = "SELECT * from client"; 
    $result = mysql_query($query, $conn) or die(mysql_error()); 
    $num= mysql_num_rows($result); 


    if ($num> 0) { 
    while ($row = mysql_fetch_assoc($result)) { 
     $array[] = array(
      'NumClient' => $row["NumClient"], 
      'Name' => $row["Name"] 
     ); 
    } 
    } 
    ?> 

<form name="form" action="next.php" method="get"> 
     <select name="numClient"> 
     <?php 
     foreach($array as $value) { 
      print("<option value=\"{$value['NumClient']}\">{$value['Name']}</option>"); 
     } 
     ?> 
     </select> 
     <input type="submit" value="Send" /> 
</form> 

next.php:

<?php 
$NumClient=$_GET["numClient"]; 
echo $NumClient; 
?>