2016-11-23 17 views
0

私は、特定の地域内のすべてのチームを返す必要がある次のコードを持っています。チームと州のテーブルが入ったサッカーチームのデータベースがあります。チームテーブルには、状態テーブルへの外部キー参照があり、状態テーブルにはリージョン(north、south、east、west)の属性があります。PHP/MYSQL - オプション値は選択されていませんか?

私は私のメインページに次のHTML/PHPコードがあります。以下は

<div> 
    <form method="post" action="regions_filter.php"> 
    <fieldset> 
     <legend>Filter Teams By Region</legend> 
     <select name="Region"> 
      <?php 
      if(!($stmt = $mysqli->prepare("SELECT DISTINCT region FROM states"))){ 
       echo "Prepare failed: " . $stmt->errno . " " . $stmt->error; 
       } 

      if(!$stmt->execute()){ 
       echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error; 
      } 
      if(!$stmt->bind_result($region)){ 
       echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error; 
      } 
      while($stmt->fetch()){ 
       echo '<option value=" ' . $region . ' "> ' . $region . '</option>\n'; 
      } 
      $stmt->close(); 
      ?> 
     </select> 
     <input type="submit" value="Run Filter"/> 
    </fieldset> 
    </form> 
</div> 

はregions_filter.phpファイルのコードです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<body> 
<div> 
<table> 
    <tr> 
     <td>Teams By Region</td> 
    </tr> 
    <tr> 
     <td>School Name</td> 
     <td>State Name</td> 
     <td>State Capital</td> 
     <td>State Population</td> 
     <td>Region</td> 
    </tr> 
<?php 
if(!($stmt = $mysqli->prepare("SELECT teams.school_name, states.name,  states.capital, states.population, states.region FROM teams 
          INNER JOIN states ON states.id = teams.state_id 
          WHERE states.region = ?"))){ 
echo "Prepare failed: " . $stmt->errno . " " . $stmt->error; 
} 

if(!($stmt->bind_param("s",$_POST['Region']))){ 
echo "Bind failed: " . $stmt->errno . " " . $stmt->error; 
} 

if(!$stmt->execute()){ 
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli- >connect_error; 
} 
if(!$stmt->bind_result($school, $state, $capital, $population, $region)){ 
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli- >connect_error; 
} 
while($stmt->fetch()){ 
echo "<tr>\n<td>" . $school . "\n</td>\n<td>" . $state . "\n</td>\n<td>" . $capital . "\n</td>\n</td>" 
    . $population . "\n</td>\n<td>" . $region . "\n</td>\n</tr>"; 
} 
$stmt->close(); 
?> 
</table> 
</div> 

</body> 
</html> 

私は私のメインの上でフィルタを実行するために行くときページ、私は結果なしでregions_filter.phpページに連れて行きます。表示されるのは、regions_filter.phpページの上部にあらかじめコード化されたhtmlテーブルだけです。 私はこのエラーが以下のコードスニペットのどこかにあると信じています。私は、オプションの値を持つさまざまなバリエーションを試してみましたが、それをクラックするように見えることはできません。

while($stmt->fetch()){ 
       echo '<option value=" ' . $region . ' "> ' . $region . '</option>\n'; 
      } 

右方向への任意のポインタをいただければ幸いです。

+0

@RuchishParikhのうーん、私はそれで –

+0

を遊んでおこうあなたは正しく読み込まメインページにフォームを得るのですか?私たちはそれのサンプルを見ることができますか? – phobia82

+1

それは、私の答えを確認してください、あなたはその領域の名前に余分なスペースを持っています phobia82

答えて

1

領域を入力するとエラーが発生し、領域名の前後に余分な空白があることを選択します。このようにする必要があります:それを修正していないようでした

while($stmt->fetch()){ 
    echo '<option value="' . $region . '">' . $region . '</option>\n'; 
} 
+0

はい!どうもありがとうございます!空白がこの問題の原因になるのはわかりませんでした –

+0

region = "South"を検索するクエリを実行すると、 "South"!= "South"という同じ文字列ではないため、何も一致しません。 – phobia82

+0

ありがとうございます、私は非常に長い時間のためにPHPを使用していないので、私は今日何か新しいことを学んだ –

0

whereステートメントのstates.idはリージョンIDではないと思います。 $ regionをタグからselectステートメントへのパラメータとしてフィルタリングする場合state.id =? (state.id = $ region)結果は得られません。あなたが州を経由してフィルタリングしているからです。 注:この...私はあなたがこの上の任意のエラーを持っていないと思うだけで、上記のコード

上の私の最初の理解である、それはあなたが間違った属性をフィルタリングする可能性があるだけということです^ _^

+0

私は誤って古いコードをコピーしました...私は私のselect文が検索する正しいコードの断片を更新しましたどこにstates.region =? –

+0

問題を修正しましたか?そうでない場合は...もう一度試してみましょう^^ –

+0

残念ながら、これで遊ぶつもりはない –

関連する問題