2013-03-12 6 views
-1

그들 중 하나가 항목을 위해 웹 사이트를 검색하는 실제 온라인 기능을 설명하기 위해 더미 온라인 스토어를 만들고 있습니다.PHP 웹 사이트 검색 및 표시 항목

이 시나리오를 처리하기 위해 PHP 코드를 작성했지만 제대로 작동하지 않습니다. Wchat 그것이 반죽 않습니다 결과 및 결과의 번호와 일치하지만 그것은 물론 내가하지 못하는 그들을 표시하지 않습니다.

GOOGLE에서 답변을 찾으려고했지만 해당 솔루션이나 팁을 찾지 못했습니다.

PHP 코드 (search.php) :

<?php 

    session_start(); 

    include('connect_mysql.php'); 

    $product_name = 'product_name'; 
    $product_qua = 'product_qua'; 
    $product_price = 'product_price'; 
    $product_image = 'product_image'; 
    $product_des = 'product_des'; 


    if (isset($_POST['keyword'])) 
    { 
     $search = $_POST['keyword']; 

     if (!empty($search)) 
     { 
      $query = "SELECT product_name FROM products WHERE product_name='$search'"; 
      $query_search = mysql_query($query); 

      echo mysql_num_rows($query_search); 

      if (mysql_num_rows($query_search) >=1) 
      { 
       echo 'Results found: <br>'; 

       while ($query_row = mysql_fetch_row($query_search)) 
       { 
        echo $query_row['product_name']; 

       } 
       while($rows = mysql_fetch_array($query_search)) 
       { ?> 
        <table id='display'> 
        <tr><td><?php echo "<img src=$rows[$product_image] class='grow'>" ?></td></tr> 

        <tr> 
         <th></th> 
         <th><strong>Avalible</strong></th> 
         <th><strong>Price</strong></th> 
         <th><strong>Description</strong></th> 
        </tr> 

        <tr> 
        <td width='290px'><?php echo "$rows[$product_name]" ?></td> 
        <td width='290px'><?php echo "$rows[$product_qua]" ?></td> 
        <td width='290px'><?php echo "£ $rows[$product_price]" ?></td> 
        <td width='290px'><?php echo "$rows[$product_des]" ?></td> 
        </tr> 
        <tr> 
        <td><p>Please Login To purchase this item </p><br /><a href="login.php">Login</a></td> 
        </tr> 
        </table> 

       <?php 
       } 

      } else { 
       echo 'NO results found.'; 

      } 

     } 
    } 

?> 

HTML 코드 (index.php를)

<form action="search.php" method="post"> 

     <input type="text" name="keyword" size="20" placeholder="Search for products...."/> 
     <input type="submit" value="Search >>" /> 

</form> 

화면 인쇄

여기 내가 사용하고 코드거야 목록입니다 현재 결과 :

enter image description here

당신도 알게 되듯이 3 가지 결과가 내 제품의 일반적인 이름 인 영원히 검색했지만 두 테이블 만 비워 두는 것을 고려할 때 올바른 결과입니다. 또한 비어 있습니다.

웹 사이트 URL : http://studentnet.kingston.ac.uk/~k1024026/index.php

마침내 내 제품 테이블로 구성 PRODUCT_ID 제품 _ product_qua PRODUCT_PRICE product_image product_des 제품 _ attrebiutes/열

내가이 잘못 갈 수있는 곳에 사람이 발견 할 수

....?

답변

0

첫째,이

while ($query_row = mysql_fetch_row($query_search)) 
       { 
        echo $query_row['product_name']; 

       } 

가 나는 또한 코드에서 몇 가지 나쁜 오타를 발견 제거해보십시오 = "디스플레이"

  • 테이블 ID는 ID가 고유해야합니다. 이 과정을 반복하면서 여전히 ID가되기를 원하면 display-n을 대신 쓰면된다. n은 예를 들어 제품의 고유 ID이다. (또는 id 대신 class = "display"를 사용하십시오.)

  • SQL 인젝션과 패배 방법을 살펴보아야합니다.

0

차라리이 작업을 수행 할 수 있습니다

$query = "SELECT product_name FROM products WHERE product_name LIKE %" . $search . "%"; 

그것이 도움이되기를 바랍니다. 다음과 같은 결과를 통해 실행하는 foreach 루프를 사용

foreach ($search as $key => $result){ 
     echo $result . '<br />'; 
} 
0
  1. mysql_fetch_row($query_search)은 일반 배열이 아닌 연관 배열을 반환하지만 당신은 키를 사용하여 값에 액세스하려고 - $query_row [ 'product_name' ]을. 오히려 사용 _fetch_array

  2. 많은 구문 오류가 있습니다. 함수 이름과 매개 변수 목록 사이에는 공백이 있습니다.

  3. mysql_을 사용하지 마십시오. 그들은 더 이상 사용되지 않습니다 (read : dead). 대신 PDO를 사용하십시오.

+0

회신에 대해서는 확인 하시겠지만 제안 된 변경 사항을 구현하려면 어떻게해야합니까? – Tomazi

+0

그리고 mysql_fetch_row ($ query_search)가 일반 배열을 반환하는 이유는 무엇입니까? – Tomazi

+0

@Tomazi 무엇을 의미합니까? '_ 왜 mysql_fetch_row ($ query_search)가 일반 배열을 반환합니까 _'? 개발자가 그렇게 결정했기 때문입니다. PDO에서 PHP 매뉴얼을 읽으십시오. – ShuklaSannidhya