2012-03-03 13 views
0

私は、特定のIDの名前を取得しようとするとMySQLの初心者です。ここでPHP/MySQL:特定のIDの名前を取得

は私のデータベースがどのように見えるかです:

私はIDが含まれている連絡先のテーブルを持って、最初と最後の名前。

特定のIDの姓と名を同じ形式で取得したいと考えています。

私はオプションの形式で終わりたいと思います。オプション値は各IDの最初の名前になります。例えば

<form> 
<select name="users"> 
<option value="">Select a person:</option> 
<option value="5"> <?php echo "$first $last" ?> </option> 
<option value="10"> <?php echo "$first $last" ?> </option> 
<option value="15"> <?php echo "$first $last" ?> </option> 
</select> 
</form> 

値がIDのです。

と私のPHP:私の実際の例では

<?php include("connection.php"); 

$query="SELECT * FROM contacts"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 

mysql_close(); 

$i=0; 
while ($i < $num) { 

$first=mysql_result($result,$i,"first"); 
$last=mysql_result($result,$i,"last"); 

$i++; 
} 

?> 

私は、データベース内の最後の人の最初と最後の名前を取得します。連絡先のテーブルを想定し

それでは、どのように私は私のフォームに割り当てるのうち、特定のIDの最初と最後の名前を取得することができます(?)を

答えて

2

これは、whileループが毎回$ firstと$ lastを上書きしているためです。

$users = array(); 

while ($row = mysql_fetch_assoc($result)) { 
    $users[] = $row; 
} 

そしてHTML(編集)にしてみてください:

<form> 
    <select name="users"> 
    <option value="">Select a person:</option> 
    <?php foreach($users as $row): ?> 
     <option value="<?php echo $row['id']; ?>"> <?php echo $row['first'] . " " . $row['last']; ?> </option> 
    <?php endforeach; ?> 
    </select> 
</form> 
+0

これはコンパイルされません:<?php echo "$ row ['first'] $ row ['last']"?>私はこれを試しました:echo $ row ['first']; echo $ row ['last']それは動作しますが、名前と姓の間にスペースはありません –

+0

申し訳ありませんが、構文をチェックしませんでした。 HTML部分を編集して、姓と名の間にスペースを追加しました。 – adidasadida

+0

ありがとうございます。これはすべてのIDの印刷として機能します。 ID 13と15の姓名のみを印刷したい場合はどうすればいいですか?それが私の質問でした。 –

1

は、主キーフィールドを持っている、あなたがに入れて、そのフィールドを使用したいですあなたの<option>タグを値として使用します。次に、特定の<option>とデータベースのレコードとの間に1対1の対応があります。あなたが名前だけで行くと、あなたは5つの "John Smith"のエントリーを終わらせてしまいます。あなたはどちらがいいか分からないでしょう。

だから、あなたのクエリはなります

SELECT id, firstname, lastname 
FROM ... 

、その後:この作品ながら、もちろん

while ($row = mysql_fetch_assoc($result)) { 
     echo <<<EOL 
<option value="$row[id]">$row[firstname] $row[lastname]</option> 

EOL; 
    } 
+0

あなたのパラグラフによると、あなたは正しいです、それは私の質問です。オプションの値にIDのプライマリキーを設定して、その特定のIDの名前を出力したいと考えています。しかし、あなたの答えはPHPでコンパイルされていないようです。私は初心者です。 –

+0

ここに私のソースコード全体があります:http://pastebin.com/QYxd2xKQ –

0
$users = $_POST['users']; 
$query = 
"SELECT 
    ID, FIRSTNAME, LASTNAME 
FROM 
    CONTACTS 
WHERE 
    ID = '$users'"; 

、それはSQLインジェクションの脆弱性の典型的な例です。入力をサニタイズするか、またはプリペアドステートメントを使用して変数をバインドする必要があります。

0

あなたは長い道を行くだろう

$query="SELECT * FROM contacts WHERE id = '$id'";

少しグーグルを行うことができます。 thisthisを読んでください。

+1

私はそれを認識していますが、これはあなたに1つのidの姓と名しか与えません。 –

関連する問題