2013-04-11 2 views
0

Я создал базу данных поиска PHP/mysql после учебника онлайн. все работает отлично. Я просто хочу знать, как я могу получить результаты в базе данных для отображения в случайном порядке.Как я могу получить идентификатор базы данных mysql случайно?

В настоящее время результаты отображаются в числовом порядке в соответствии с его идентификационным номером в базе данных mysql. Я хочу знать, как отображать результаты случайным образом?

Идентификатор вызова используется с использованием $ id. вот PHP:

<?php 

$button = $_GET ['submit']; 
$search = $_GET ['search']; 

if(strlen($search)<=1) 
echo "Search term too short"; 
else{ 
echo "<h1>Dislpaying results for <b>$search</b> <hr size='1'></h1></br>"; 
mysql_connect("localhost","dobhgc767545ch2","jhjhghtyutuhjh"); 
mysql_select_db("doorcouhjhjh2"); 

$search_exploded = explode (" ", $search); 

foreach($search_exploded as $search_each) 
{ 
$x++; 
if($x==1) 
$construct .="keywords LIKE '%$search_each%'"; 
else 
$construct .="OR keywords LIKE '%$search_each%'"; 

} 

$constructs ="SELECT * FROM search WHERE $construct"; 
$run = mysql_query($constructs); 

$foundnum = mysql_num_rows($run); 

if ($foundnum==0) 
echo "Sorry, there are no matching result for <b>$search</b>.</br></br>1. 
Try more general words. for example: If you want to search 'how to create a website' 
then use general keyword like 'create' 'website'</br>2. Try different words with similar 
meaning</br>3. Please check your spelling"; 
else 
{ 

echo "$foundnum results found !<p>"; 

$per_page = 9; 
$start = $_GET['start']; 
$max_pages = $foundnum/$per_page; 
if(!$start) 
$start=0; 
$getquery = mysql_query("SELECT * FROM search WHERE $construct LIMIT $start, $per_page"); 

while($runrows = mysql_fetch_assoc($getquery)) 
{ 
$title = $runrows ['title']; 
$description = $runrows ['description']; 
$link = $runrows ['link']; 
$image = $runrows ['image']; 


echo " 
<div class=\"pagination\" style=\"display:inline\"><ul style=\"background-color:#\"><li><div  class=\"span3_search\"><div class=\"title_bg\"><h2><a href='$link'><b>$title</b> </a></h2></div><div class=\"result_img\"><a href='$link'><img id=\"result_img\" src=\"$image\" /></a> </div><div class=\"result_desc\"><p>$description</p></div><div class=\"result_link\"><br /> 
<a href='$link'>$link<br /><br /></a><p></div></div></li></ul></div> 
"; 


?> 
+3

** если ** его небольшой набор данных 'ORDER by RAND()' – 2013-04-11 02:31:25

+0

Dagon представить это как ответ. –

+2

Сначала вы начинаете с подключения дыр [sql injection attack] (http://bobby-tables.com) в вашем коде. –

ответ

4

если это небольшой набор данных, вы можете просто использовать в MySQL

ORDER by RAND() 

не делают это на большом наборе данных, это очень неэффективно

+0

Моя цель - получить 10 000 результатов. Итак, что является эффективным способом? –

+2

10 000 - это маленькое дБ, я бы не стал беспокоиться об этом. так как ваши результаты поиска не заставили бы их в каком-то порядке сделать больше чувств, чем случайных? вы можете посмотреть поиск [полный текст поиска] (http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html). Затем вы можете заказать по релевантности – 2013-04-11 02:37:29

0
$constructs ="SELECT * FROM search WHERE $construct ORDER BY rand()"; 
Смежные вопросы