2013-04-25 3 views
0

До сих пор у меня есть следующий php, который позволяет пользователю искать в определенной колонке базы данных и отображать все результаты.отформатировать результаты запроса базы данных

<?php 
require("header.php"); 
if(isset($_REQUEST['searching'])){ //check if form has been submitted 
echo"<h2>Results</H2><p>"; 
connect('final');//connect to DB 
//set the values from search form 
$field = $_POST['field']; 
$query = $_POST['query']; 

    $query = htmlspecialchars($query); // stop HTML characters 
    $query = mysql_real_escape_string($query); //stop SQL injection 

    $data = mysql_query("SELECT * 
    FROM customer 
    INNER JOIN address ON customer.ID = address.customer_ID 
    LEFT OUTER JOIN sites ON address.ID = sites.address_ID 
    WHERE customer.ID IN (SELECT customer.ID 
    FROM customer 
    INNER JOIN address ON customer.ID = address.customer_ID 
    LEFT OUTER JOIN sites ON address.ID = sites.address_ID 
    WHERE upper(customer.$field) LIKE'%$query%')") ;//query the DB with search field in colleumn selected// 

    //$data = mysql_query("SELECT * FROM customer INNER JOIN address ON customer.ID = address.Customer_ID LEFT OUTER JOIN sites ON address.ID = sites.address_ID WHERE upper(customer.$field) LIKE'%$query%'") ; 

    if($data === FALSE) { 
    $error = 'Query error:'.mysql_error(); 
    echo $error; 
    } 
    else 
    { 
    while($results = mysql_fetch_array($data)){// puts data from database into array, loops until no more 
      echo "<br>"; 
      echo $results['First_Name']; 
      echo " "; 
      echo $results['Surname']; 
      echo " "; 
      echo $results['Company_Name']; 
      echo " "; 
      echo $results['Telephone']; 
      echo " "; 
      echo $results['Alt_Telephone']; 
      echo " "; 
      echo $results['line_1']; 
      echo " "; 
      echo $results['line2']; 
      echo " "; 
      echo $results['town']; 
      echo " "; 
      echo $results['postcode']; 
      echo " "; 
      echo $results['site_name']; 


      //posts results from db query 
     } 
    } 


     $anymatches=mysql_num_rows($data); //checks if the querys returned any results 
      if ($anymatches == 0) 
        { 
         echo "Sorry, but we can not find an entry to match your query<br><br>"; 
        } 

    } 

Однако, как я использую эхо для вывода он просто отображает все результаты на самом верху страницы, и толкает все мои HTML содержание вниз под ним.

Как я могу отформатировать его так, чтобы он отображался в моем html-содержимом? под кнопкой поиска, например.

+0

У вас есть потенциал для инъекций SQL из-за '$ field'. –

ответ

1

Решение не отражается на содержании, которое будет отображаться сверху, потому что PHP сначала обрабатывает код, а затем загружает html, поэтому он будет эхо-данных в верхней части страницы.

Решение назначает результат в массив в цикле while, а затем использует этот массив, чтобы показать его в html.

0

Возможно, закрытие тега 'p' поможет? Попробуйте добавить

echo "</p>"; 

в конце.

0

Methinks вы пропустили некоторые HTML-теги там, например .:

 echo "<div>"; 
     echo $results['First_Name']; 
     echo " "; 
     echo $results['Surname']; 
     echo ", "; 
     echo $results['Company_Name']; 
     echo "</div><address>"; 
     echo $results['Telephone']; 
     echo "<br>"; 
     echo $results['Alt_Telephone']; 
     echo "<br>"; 
     echo $results['line_1']; 
     echo "<br>"; 
     echo $results['line2']; 
     echo "<br>"; 
     echo $results['town']; 
     echo " "; 
     echo $results['postcode']; 
     echo "</address><div>"; 
     echo $results['site_name']; 
     echo "</div>"; 

Если вы позволите немного OT ответ, ваш код говорит мне, что вы изучаете PHP.

Если это так, имейте в виду, что онлайн-уроки PHP часто пишутся много лет назад и находятся в состоянии морального устаревания, в комплекте с примером кода, который показывает худшие возможные вещи, которые вы могли бы сделать.

Предполагая, что моя оценка правильная, рассмотрите возможность изучения PHP наряду с хорошо разработанной инфраструктурой. Silex относительно легко подобрать в этом отношении:

Другие структуры, которые вы можете захотеть взглянуть на:

Есть много, много больше.

Смежные вопросы