2017-02-19 1 views
0

사용자가 데이터를 입력하는 양식이 있습니다. AXZAA QS1QS. 이 데이터는 내 PHP 스크립트에 게시됩니다. PHP 스크립트는 순간 2 개의 레코드가 들어있는 MYSQL 데이터베이스에 연결됩니다.데이터가 필요하지 않습니다.

PHP 스크립트가 입력을 받아 데이터베이스의 레코드와 비교한다는 아이디어가 있습니다. 그렇지 않으면 웹 페이지의 테이블에 레코드가 표시되고 그렇지 않으면 오류 메시지가 표시됩니다.

PHP 스크립트에 여러 가지 문제가 있으며 스크립트를 여러 번 수정했습니다. 그러나 가장 큰 문제가있는 것은 다음과 같습니다.

처음 양식이 나타나면 메시지 레코드가 존재하지 않는 것은 사용자가 데이터를 입력하기 전에 두 번 나타납니다. 처음으로 양식을 작성하십시오. 아래 그림을 참조하십시오. 즉 기록이 존재 일치하는 테이블의 레코드와 함께 존재하는 경우

enter image description here

데이터를 입력 한 후 (PHP 스크립트가 부분적으로 제대로 작동 할 때), I는 기록이 있다고 말해 오류 메시지가 나타날 것입니다 찾을 수 없습니다. 문제를 해결할 수 있는지 확인하기 위해 어떤 레코드를 찾을 수 없는지 알려주는 코드를 추가했습니다. 찾지 못한 레코드와 찾지 못한 레코드는 데이터베이스에서 찾지 못했습니다. 내 PHP 스크립트의 SQL 쿼리는 데이터베이스에서 모든 것을 얻기 위해 스크립트에 알려주지 만 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

그런 다음 오히려이 가정을 실행하는 것보다 그 "만약"문 내에서 MySQL의 쿼리를 실행할 수 있습니다 if 문

`<?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>"; 
    } 
?> 

같은 후 $의 검색 창을 할당하는 것이 더하지 않을까요 값

+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

관련 문제