2011-08-17 15 views
0

私の質問を読んでくれてありがとう。HTMLドロップダウンメニューでオプションを選択する。

私は検索可能なカードデータベースにPHPを使用するウェブサイトを持っています。今は各ページにhead/searchboxセクションのコードがありますが、代わりに関数を使用したいと思います。関数自体が機能しています。問題は、ドロップダウンボックスです。私は現在、ユーザーが選択してオプションを選択して検索すると、その選択が次のページで選択されるように設定しています。

私は構文に問題があると確信しています。ここ

は、(エラーを無視する)used on the live site right now.

<select name="Type" onchange="this.submit()"> 
     <option value="1" >[All Card Types] </option> 
     <option value="Hero" <?php if($_GET['Type'] == "Hero") echo "selected='selected'"; ?>> Hero </option> 
     <option value="Ally" <?php if($_GET['Type'] == "Ally") echo "selected='selected'"; ?>> Ally </option> 
    </select> 

これは動作していない関数、から関連するコードであり、is on the test siteある作業コードの例である:

function searchBox(){ 
//Cell 1 
    echo ' 
     <select name="Type" onchange="this.submit()"> 
      <option value="1" >[All Card Types] </option> 
      <option value="Hero" <?php if($_GET["Type"] == "Hero") { echo "selected=selected" ; }?>> Hero </option> 
      <option value="Event" <?php if($_GET["Type"] == "Event") { echo "selected=selected"; }?>> Event </option> 
     </select> 
    '; 
} 

テストページに表示されているように、ドロップダウンメニューはライブページと同じように機能しません。

ありがとうございました!

+0

あなたの関数は、私は本当に第二の機能のアイデアのようなエコー –

答えて

3

<?phpタグをそのような文字列に埋め込むことはできません。 ternary operatorsと連結する必要があります。

function searchBox(){ 
//Cell 1 
    echo ' 
     <select name="Type" onchange="this.submit()"> 
      <option value="1" >[All Card Types] </option> 
      <option value="Hero"' . ($_GET['Type'] == 'Hero' ? ' selected=""' : '') . '> Hero </option> 
      <option value="Event"' . ($_GET['Type'] == 'Event' ? ' selected=""' : '') . '> Event </option> 
     </select> 
    '; 
} 

しかし、保守のために、あなたはより多くのこのような何かを行う可能性があります:

function searchBox() { 
    $types = array('Hero', 'Event'); 
    $output = '<select name="Type" onchange="this.submit()">'; 
    $output .= ' <option value="1" >[All Card Types] </option>'; 
    foreach ($types as $type) { 
     $output .= '<option value="' . $type . '"' . ($_GET['Type'] == $type ? ' selected=""' : '') . '> ' . $type . ' </option>'; 
    } 
    $output .= '</select>'; 
    echo $output; 
} 
+0

に埋め込まれたPHPを持っています。私はいくつかの問題に挑戦している。 '": "> Hero"; ' – Mason240

+0

@ Mason240:「変数なし」の意味を理解できません。 – Jonah

1

あなたは

echo "selected=\"selected\"" 
+0

そして@ジョハンは言った。 (私はその大きな穴を逃したとは信じられません) – Starx

1

少し厄介な引用符が欠落しているが、動作するはずです:

function searchBox(){ 
//Cell 1 
echo ' 
    <select name="Type" onchange="this.submit()"> 
     <option value="1" >[All Card Types] </option> 
     <option value="Hero"'; 

if($_GET["Type"]=="Hero"){ 
    echo "selected=selected"; 
} 

echo '>Hero</option><option value="Event"'; 

if($_GET["Type"]=="Event"){ 
    echo "selected=selected"; 
} 

echo '>Event</option></select>'; 
} 
2

prob lemは、関数内でリテラルテキストの一部としてPHPを出力していることです。 PHPロジックがecho文の外側になるように関数を再作成する必要があります。この場合、それは次のようにPHP処理の外に/中にジャンプする最も簡単なことがあります

<?php function searchBox() { ?> 
     <select name="Type" onchange="this.submit()"> 
      <option value="1" >[All Card Types] </option> 
      <option value="Hero" <?php if($_GET["Type"] == "Hero") { echo "selected=selected" ; }?>> Hero </option> 
      <option value="Event" <?php if($_GET["Type"] == "Event") { echo "selected=selected"; }?>> Event </option> 
     </select> 
<?php } ?> 
関連する問題