2011-10-20 9 views
3

MySQLデータベースのテーブルからドロップダウンメニューが設定されています。それは機能しますが、if/else文をコードに追加して、条件に応じてドロップダウンのデフォルト値を変更したいと思います。ここ ドロップダウン(これまでのところ得て、彼の援助のためのAlienWebguyに多くのおかげで)のためのコードです:PHP if/else文で目的の結果が得られません

<?php 
    $sql="SELECT techID, tech_userlogin FROM technicians"; 
    $result=mysql_query($sql); 

    while ($row=mysql_fetch_array($result)) 
    { 
     $techID = $row['techID']; 
     $tech_userlogin=$row['tech_userlogin']; 

     // Here - check if the $_GET value in the query matches the tech_userlogin 
     ($selected = ($tech_userlogin == $_GET['wtech_userlogin']) ? 'selected="selected"' : ''); 
     echo '<option value="' . $tech_userlogin . '" ' . $selected . '>' . $tech_userlogin . '</option>' . "\n"; 
    } 
?> 

私が後だものを達成するために、物事のカップルを試みたが、私は深刻です私の経験やPHP/MySQLの専門知識が不足しています。

これは私がこれらの事を試みた初めてのことであり、これまでにヒットしています。私はスタックオーバーフローでここで助けを受け取りました。そして、私はそのようなリソースが存在感謝しています。

これは私の最新の努力であり、私が後にしていることを達成することができません。 if文で条件が満たされていない場合は、ドロップダウンのデフォルト値を " - Technician選択"にします。

<?php 
    $sql="SELECT techID, tech_userlogin FROM technicians"; 
    $result=mysql_query($sql); 

    $options=""; 

    while ($row=mysql_fetch_array($result)) 
    { 
     $techID = $row['techID']; 
     $tech=$row['tech_userlogin']; 
     $options.="<option value=\"$tech\">$tech</option>"; 

     // Here - check if the $_GET value in the query matches the tech_userlogin 
     if 
     ($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : '') 
     {echo '<option value="' . $tech . '" ' . $selected . '>' . $tech . '</option>' . "\n";} 

     else 
     {echo '<option value="' . $options . '" . 'selected="selected"'>'--Select Tech--'<. $options .>' . "\n";} 
    } 
?> 

誰かが私を助けてくれるでしょうか、正しい方向に向いていますか?どうもありがとう。これに

($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : '') 

変更:

($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : false) 

お知らせ

乾杯

+1

なぜダウン票ですか?この質問で何が間違っていますか? – Iznogood

答えて

1

この

<select name="whatever"> 
    <option value="">-- Select Technician --</option> 
    <?php while ($row = mysql_fetch_array($result)) : 
     $techId = $row['techID']; // why isn't this used? 
     $tech = htmlspecialchars($row['tech_userlogin']); 
     $selected = $row['tech_userlogin'] == $_GET['wtech_userlogin'] ? '" selected="selected' : ''; 
    ?> 
    <option value="<?php echo $tech, $selected ?>"><?php echo $tech ?></option> 
    <?php endwhile ?> 
</select> 
+0

ありがとうございました!それはまさに私が望んでいたものです。私はそれをテストし、それは完璧に動作します。あなたの答えは直接的で簡潔でした。私はいつも賞賛しています。未使用の$ techIDは以前の繰り返しから残されており、削除しました。私は58歳で、PHP/MySQLの経験は約8週間あります。それはあなたのような人々の助けを借りて、私が私のいる限り得ることができたことです。よかったね! Cheers – Spud

-1

あなたが望むものをやっていないされ、これを書いてみてください「偽」。空の引用符はfalseではないので、PHPでは 'true'とみなされます。

+0

'selected'属性の文字列を作成しています。空文字列が正しい。それは条件付きでその結果の使用が間違っている – Phil

+0

その後、選択した変数を取得した後:if($ selected == ''){// do stuff} else {//その他のもの} – donutdan4114

+1

空の文字列は間違いなくPHPでは真実ではありません。 try ''( '')echo '空の文字列が真である'; ' – grossvogel

-1

私は間違っている可能性がありますが、問題はif文にあると思います。あなたは持っている:

($selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : '') 

問題は、あなたが常に成功割り当てのために真を返します。選択した変数$に三元の文の結果を代入していることです。

+0

これです。あなたは基本的に "この変数に値を代入して何かをする場合"と言っています。割り当てた値がfalseであっても、そのステートメントは決してfalseを返すことはありません。 –

+1

そうではありません。 Assignmentは割り当てられた値を返します。 https://gist.github.com/1300229 – grossvogel

+0

私は訂正しました –

0

if/if全体がデフォルトを作成するだけであれば、複雑すぎることになります。

$options = '<option value="">--Select Tech--</option>'; 
while ($row=mysql_fetch_array($result)) 
{ 
    $techID = $row['techID']; 
    $tech = $row['tech_userlogin']; 
    $selected = ($tech == $_GET['wtech_userlogin']) ? 'selected="selected"' : ''; 
    $options .= '<option value="' . $techID . '" ' . $selected . '>' . $tech . '</option>' . "\n"; 
} 

は今$options最初に現れるデフォルトのオプション(空の値を持つ選びなさい - Tech--、)を含め、その中にあなたのすべてのオプションを持っており、他に何もselectedを持っていない場合ので、選択して起動します属性。

あなたのオプションの値には$techもありましたが、私はあなたが$techIDと言っていると仮定していました。

+0

応答していただきありがとうございます。私はそれを働かせることはできません。 $ techIDは以前の反復から残されていました。私はそれを削除しました。ここに私が持っているものがあります、私はあなたがそれをバグした場所を教えてくれることを願っています:<?php $ sql = "SELECT * FROM technicians"; $ result = mysql_query($ sql); $ options = ''を選択してください。 while($ row = mysql_fetch_array($ result)) { \t $ tech = $ row ['tech_userlogin']; \t $ selected =($ tech == $ _GET ['wtech_userlogin'])? 'selected = "selected"': ''; \t $ options。= '' "\ n"; } ?>乾杯 – Spud

関連する問題