2017-02-19 16 views
0

私はユーザーがデータを入力するフォームを持っています。 AXZAA QS1QS。このデータは私のPHPスクリプトに投稿されています。 PHPスクリプトは、現時点で2つのレコードを含むMYSQLデータベースに接続します。データは表示されません。

PHPスクリプトは入力を受け取り、それをデータベースのレコードと比較するという考えがあります。レコードが存在する場合は、それ以外の場合はWebページの表に表示され、エラーメッセージが表示されます。

私はPHPスクリプトに多くの問題があり、スクリプトを何度も変更しました。しかし、私が最も大きな問題を抱えているのは次のとおりです。

初めてフォームが表示されたときに、メッセージレコードが存在しない場合は2回表示されます。ユーザーがデータを入力する前です。最初のフォーム。下の図を参照してください。 (PHPスクリプトが部分的に正しく働いていたとき)、すなわちレコードが存在していた試合がある場合、テーブル内のレコードと一緒に、私はレコードがあったことを私に言って、エラーメッセージを受け取ることになり、データを入力した後

enter image description here

見つかりません。私が問題を解決できるかどうかを調べるために、レコードが見つからなかったことを示すコードを追加しました。見つからなかったレコードと、探していなかったデータベースのレコードが見つかりました。私は私のPHPスクリプトのSQLクエリは、データベースからすべてを取得するスクリプトを教えて知っているが、私はif文が問題を修正したと思っていただろう。

このような長い問題を書いて申し訳ありませんが、私は混乱しないことを願っています。あなたは、その「もし」の文ではなく、そこにあると仮定すると、それが実行することの中に、MySQLのクエリを実行することができ

`<?php 
    //Connect to the database connection file 
    require 'databaseconnection.php'; 

     if(isset($_POST['searchBar'])) 
{ 
    $searchbar = $_POST['searchBar']; 
     $userdata = trim($searchBar); 
     $cleaned_data = preg_split('/[\s]+/', $userdata); 


    $sql = "SELECT DISTINCT * FROM atable_2"; 

    $result = mysqli_query($database_connection, $sql); 

    echo "<table border> 
    <tr> 
     <th>Allocation</th> 
     <th>Codes</th> 
     <th>Names</th> 
     </tr>"; 



    while($putdatabaseanswer_intoarray = mysqli_fetch_array($result)) { 

    $allocation_id = $putdatabaseanswer_intoarray["allocation"]; 
    $codes_id = $putdatabaseanswer_intoarray["codes"]; 
    $names_id = $putdatabaseanswer_intoarray["names"]; 

     foreach($cleaned_data as $value) { 

     if($value==$codes_id) { 

      echo "<tr>"; 
      echo "<td>" . $allocation_id. "</td>"; 
      echo "<td>" . $codes_id . "</td>";  
      echo "<td>" . $names_id . "</td>"; 
      echo "</tr>"; 

     } 
     else 
     { 
     echo "<br />"; 
     echo "One or more of the records have not been found: $codes_id"; 
     echo"<br />"; 
     } 

     } 

    } 

    echo "</table>"; 
} 
    else{ 
    echo "<p>Please enter a search term</p>"; 
    } 
?> 

のようなif文

enter code here 
<?php 
    //Connect to the database connection file 
    require 'databaseconnection.php'; 

     $searchBar=(isset($_POST['searchBar']) ? $_POST['searchBar'] :null); 
     $userdata = trim($searchBar); 
     $cleaned_data = preg_split('/[\s]+/', $userdata); 


    $sql = "SELECT DISTINCT * FROM atable_2"; 

    $result = mysqli_query($database_connection, $sql); 

    echo "<table border> 
    <tr> 
     <th>Allocation</th> 
     <th>Codes</th> 
     <th>Names</th> 
     </tr>"; 



    while($putdatabaseanswer_intoarray = mysqli_fetch_array($result)) { 

    $allocation_id = $putdatabaseanswer_intoarray["allocation"]; 
    $codes_id = $putdatabaseanswer_intoarray["codes"]; 
    $names_id = $putdatabaseanswer_intoarray["names"]; 

     foreach($cleaned_data as $value) { 

     if($value==$codes_id) { 

      echo "<tr>"; 
      echo "<td>" . $allocation_id. "</td>"; 
      echo "<td>" . $codes_id . "</td>";  
      echo "<td>" . $names_id . "</td>"; 
      echo "</tr>"; 

     } 
     else 
     { 
     echo "<br />"; 
     echo "One or more of the records have not been found: $codes_id"; 
     echo"<br />"; 
     } 

     } 

    } 

    echo "</table>"; 
?> 

答えて

0

は、後に$の検索バーを割り当てる方が良いと思いませんか値

+0

まずはお手伝いいただきありがとうございます。 – wishicouldprogramme

+0

まず、お手伝いいただきありがとうございます。私は自分のコードにいくつかの変更を加えました。あなたのメッセージのPHPコードは、変更前のPHPスクリプトを変更する前のものです。あなたはそのif文の中でMYSQLクエリを実行すると言いましたが、あなたは$ sql = "SELECT DISTINCT * FROM atable_2"という行を意味しますか? \t \t \t $ result = mysqli_query($ database_connection、$ sql); – wishicouldprogramme

+0

投稿された値がある場合にのみスクリプト全体を実行する必要はないと思いませんか?だから、if文を "require"の直後に置いてください。そして、すべてが中括弧の中に入るはずです。 「else」に必要なメッセージをどこにでも置くことができ、最初にページが読み込まれたときに表示されます。 – Daniel

関連する問題