2017-05-21 15 views
1

私のPHPコードでselectから値を使用できるようにしたいのですが、未定義のindex categorieという通知が出るたびに、何が間違っていますか?私はこれに類似したものを検索しました。彼らはすべて私がすでにやっていることをするように教えてくれます。 HTMLの上未定義インデックスhtml選択

<select name="categorie" value="all"> 
        <option value="all">All</option> 
        <option value="action">Action</option> 
        <option value="romance">Romance</option> 
        <option value="comedy">Comedy</option> 
        <option value="drama">Drama</option> 
        <option value="horror">Horror</option> 
        <option value="fantasy">Fantasy</option> 
        <option value="scifi">Sci-fi</option> 
       </select> 
       <br> 
       <form method="post" action=""> 
       <input type="submit" value="Search" name="search"> 
       </form> 
       <?php 
       $db = new PDO('mysql:host=localhost;dbname=id1552202_accounts', 'id1552202_thecouch', 'Fargo123'); 
       if(isset($_POST['search'])){ 
        $categorie = $_POST['categorie']; 
        if($categorie === "all"){ 
         $all = $db->prepare("SELECT name, path FROM Reviews ORDER BY date"); 
      $all->execute(); 
     while($result = $all->fetch(PDO::FETCH_ASSOC)){ 
     echo $result['name']; 
      echo '<br>'; 
     echo $result['path']; 
     } 
        } else 

        $selectreview = $db->prepare("SELECT name, path FROM Reviews WHERE genre = :categorie ORDER BY date"); 
        $selectreview->bindParam("categorie", $categorie); 
      $selectreview->execute(); 
     while($result = $selectreview->fetch(PDO::FETCH_ASSOC)){ 
     echo $result['name']; 
      echo '<br>'; 
      echo '<br>'; 
     echo $result['path']; 
     } 
     } 

答えて

1

場所<form>は、私にあなたのカテゴリは、あなたがそのエラーを経験している理由を、あなたはそれを定義しなければならないことを、定義されていない

<form method="post" action=""> 
    <select name="categorie"> 
    <option value="all">All</option> 
    <option value="action">Action</option> 
    <option value="romance">Romance</option> 
    <option value="comedy">Comedy</option> 
    <option value="drama">Drama</option> 
    <option value="horror">Horror</option> 
    <option value="fantasy">Fantasy</option> 
    <option value="scifi">Sci-fi</option> 
    </select> 
<input type="submit" value="Search" name="search"> 
</form> 
+0

ええ、私はすでにそれをしました –

+0

彼はすでにしていました! – calexandre

+0

なぜ落選ですか? – skunkhaze

2

のために働きました。最初の条件内で十分にフィルタリングされますが、else文で改善する必要があります。他の点は、選択外のフォームです:そのような方法では、選択の値を得ることはありません、@のようなフォームの中に入れて言った。

   $selectreview = $db->prepare("SELECT name, path FROM Reviews WHERE genre = :categorie ORDER BY date"); 



       $selectreview->bindParam("categorie", $categorie); 



     $selectreview->execute(); 
    while($result = $selectreview->fetch(PDO::FETCH_ASSOC)){ 
    echo $result['name']; 
     echo '<br>'; 
     echo '<br>'; 
    echo $result['path']; 
    } 

私の提案は、ユーザーがフィルタリングするいずれかを選択する前に、ちょうどあなたのフロントエンドを埋めるために、categorieバインドせずにレビューを取り、それ以外では、あります!

} else 

        $selectreview = $db->prepare("SELECT name, path FROM Reviews ORDER BY date, categorie"); 

      $selectreview->execute(); 
     while($result = $selectreview->fetch(PDO::FETCH_ASSOC)){ 
     echo $result['name']; 
      echo '<br>'; 
      echo '<br>'; 
     echo $result['path']; 
     } 
+0

について私に思い出させるために:) –

+0

うん!そしてelseは、コードが実行されないという条件です。フォームを送信するまで存在しない値をバインドしています。それは間違っています。 – calexandre