как мне отобразить результаты php в div на той же странице

#php #mysql

#php #mysql

Вопрос:

Я не могу понять, как отобразить результаты моего поиска на той же странице, в div, у которого есть строка поиска … вот мой php..

    // Get the search variable from URL

  $var = @$_GET['q'] ;
  $trimmed = trim($var); //trim whitespace from the stored variable

// rows to return
$limit=10; 

// check for an empty string and display a message.
if ($trimmed == "")
  {
  echo "<p>Please enter a search...</p>";
  exit;
  }

// check for a search parameter
if (!isset($var))
  {
  echo "<p>We dont seem to have a search parameter!</p>";
  exit;
  }

//connect to your database ** EDIT REQUIRED HERE **
mysql_connect("localhost","USERNAME","PW"); //(host, username, password)

//specify database ** EDIT REQUIRED HERE **
mysql_select_db("DB") or die("Unable to select database"); //select which database we're using

// Build SQL Query  
$query = "select * from TABLE where ID like "%$trimmed%"  
  order by ID"; // EDIT HERE and specify your table and field names for the SQL query

 $numresults=mysql_query($query);
 $numrows=mysql_num_rows($numresults);

// If we have no results, offer a google search as an alternative

if ($numrows == 0)
  {
  echo "<h4>Results</h4>";
  echo "<p>Sorry, your search: amp;quot;" . $trimmed . "amp;quot; returned zero results</p>";

// google
 echo "<p><a href="http://www.google.com/search?q=" 
  . $trimmed . "" target="_blank" title="Look up 
  " . $trimmed . " on Google">Click here</a> to try the 
  search on google</p>";
  }

// next determine if s has been passed to script, if not use 0
  if (empty($s)) {
  $s=0;
  }

// get results
  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Couldn't execute query");

// display what the person searched for
echo "<p>You searched for: amp;quot;" . $var . "amp;quot;</p>";

// begin to show results set
echo "<p>Results</p>";
$count = 1   $s ;

// now you can display the results returned
  while ($row= mysql_fetch_array($result)) {
  $title = $row["name"];
  $picture = $row["thumbnail"];
  $code = $row["thumbnail"];

  echo "<p>$count.amp;nbsp;$pictureamp;nbsp;$title</p>" ;
  $count   ;
  }

$currPage = (($s/$limit)   1);

//break before paging
  echo "<br />";

  // next we need to do the links to other results
  if ($s>=1) { // bypass PREV link if s is 0
  $prevs=($s-$limit);
  print "amp;nbsp;<a href="$PHP_SELF?s=$prevsamp;q=$var">amp;<amp;< 
  Prev 10</a>amp;nbspamp;nbsp;";
  }

// calculate number of pages needing links
  $pages=intval($numrows/$limit);

// $pages now contains int of pages needed unless there is a remainder from division

  if ($numrows%$limit) {
  // has remainder so add one page
  $pages  ;
  }

// check to see if last page
  if (!((($s $limit)/$limit)==$pages) amp;amp; $pages!=1) {

  // not last page so give NEXT link
  $news=$s $limit;

  echo "amp;nbsp;<a href="$PHP_SELF?s=$newsamp;q=$var">Next 10 amp;>amp;></a>";
  }

$a = $s   ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s   1 ;
  echo "<p>Showing results $b to $a of $numrows</p>";

?>
    


вот ввод html-формы:

Комментарии:

1. Я предполагаю, что это страница формы для самостоятельной отправки? Вы пробовали добавлять скрытую переменную в свою форму поиска, например: <input type="hidden" name="search" value="true" /> А затем добавлять оператор IF в начале страницы, который проверяет, является ли значение переменной $ _GET или $_POST "search" истинным? if($_GET['search'] == true) { И если это правда, вы отображаете результаты поиска под формой, а если это не так, вы просто отображаете форму поиска?

Ответ №1:

Хм ... довольно неэффективно. Вы выполняете запрос дважды. Один раз просто для получения количества совпадающих строк, затем снова с предложением LIMIT для получения только одной "страницы" результатов.

С MySQL вы можете объединить это в один запрос:

 $sql = "SELECT SQL_CALC_FOUND_ROWS ... LIMIT $x,$limit"
  

При этом mysql все равно вычислит, сколько строк совпало бы без предложения limit, но все равно вернет только строки, указанные в LIMIT . Затем вы можете получить общее количество строк с помощью более простого (и гораздо более легкого):

 SELECT found_rows();
  

Ответ №2:

Вы можете сделать это через AJAX. Однако вам придется сделать ваш код менее процедурным.

Ответ №3:

Вы не можете сделать это только с помощью PHP / HTML, вам нужно будет использовать либо AJAX / JavaScript, либо отправить вашу PHP-форму в IFRAME, который вы размещаете на своей странице поиска.