2017-04-26 9 views
1

私は単純な検索エンジンを作ろうとしていますが、結果は今のところうまく表示されます。私が持っている唯一の問題は、もう少し見やすくしたいということです。簡単な検索エンジニアリング+最大限の検索結果内にテーブルを作成する

これは私がif文の前にするとき作ってみましたにsearchResultsを制限するために、そのままのコード(私もそれがsearchval、searchfunctionとjQueryを取得し、別の.phpを持っている)

<?php 
mysql_connect ("localhost","root","xxxxxxx") or die ("Connectionissues"); 
mysql_select_db ("xxxxxxxx") or die("Can't find database"); 
$output = ''; 

if(isset($_POST['searchVal'])) { 
$searchq = $_POST['searchVal']; 
$searchq = preg_replace ("#^0-9a-z#^1"," ",$searchq); 

$query = mysql_query("SELECT * FROM ds_OrderItem WHERE idProduct LIKE 
'%$searchq%'") or die("Search incomplete!"); 
$count = mysql_num_rows ($query); 

if($count == 0){ 
    $output = 'Order have never been made before'; 



}else{ 

    while($row = mysql_fetch_array($query)) { 

     $idproduct = $row['idProduct']; 
     $idorder = $row['idOrder']; 
     $title = $row['title']; 
     $qty = $row['qty']; 


     $output .= '<div> '.$idproduct.' '.$idorder.' '.$title.' '.$qty.' 
</div>'; 

     } 




    if($_POST['searchVal'] == NULL) { 
      $output = ""; 
     } 

    } 

} 

echo ($output); 
?> 

ですこのような文:

if($count = <100){ 
    $output = 'Too many results!'; 

とテーブルのためには、私はさまざまな方法を試してみました、と私はいつも簡単なHTMLテーブルを作るに終わるが、私は、検索結果には4つの列の中に掲示するために得るカント。

初心者には気をつけてください。

事前にお読みいただきありがとうございます。

+0

何が必要ですか? –

+1

SQL文の末尾にlimit句を追加します。すなわち、 '' 'リミット20'''。 –

+0

@AhmedGinaniテーブルをどのようにフォーマットするか、4列のテーブルの中に検索結果を置くためにどこに置くべきかに関するコードが必要です。 (idProduct、idOrder、タイトルと数量) – easyquestions

答えて

1

第一ながら、閉じる前に、ループ内で条件を置くことができ、あなたは本当にPPS : Prepared Parameterized Statementsを使用することを検討すべきです。これは役に立ちますPreventing SQL injection

が役に立ちます。あなたが求める何のため

、のようなものを使用します。より良い

<?php 

-> SELECT * FROM ds_OrderItem WHERE idProduct LIKE '%$searchq%' ORDER BY title ASC, quantity DESC LIMIT 20 
// THIS IS NOT SAFE as you trust user data !!! 
// then you have 20 results already ordered 
// here, I used title alphabetical order + the most avalaible quantity, but you adapt it... 

if ($result_of_num_rows > 0) { /* we have results */ 
echo"<table>"; // only raw, use a nicely formatted html output :) 

while($row = mysql_fetch_array($query)) { 

    $idproduct = $row['idProduct']; 
    $idorder = $row['idOrder']; 
    $title = $row['title']; 
    $qty = $row['qty']; 

echo"<tr> 
     <td> $idorder </td> 
     <td> $idproduct </td> 
     <td> $title </td> 
     <td> $qty </td> 
</tr>"; 
} 
echo"</table>"; 
} 
else { echo"nothing yet !"; } 
?> 

は「新しい」標準choosing an APIの使用を作ることになり、あなたは(私は願って)その下の例を持っていることは、あなたが選択するのに役立ちます新しいパス:)

<?php 

error_reporting(E_ALL); ini_set('display_errors', 1); /* PHP will help us */ 

/* connexion to db */ 
$mysqli = mysqli_connect("$host", "$user", "$pwd", "$db"); 

if (mysqli_connect_errno()) { echo "Error connecting to DB : " . mysqli_connect_error($mysqli); } 

$param = "%{$_POST['searchq']}%"; 

$query = " SELECT idProduct, idOrder, title, qty FROM ds_OrderItem WHERE idProduct LIKE ? ORDER BY title ASC, quantity DESC LIMIT 20 "; 

$stmt = $mysqli->prepare($query); /* prepare query */ 

$stmt->bind_param("s", $param); /* bind param wil sanitize */ 

print_r($stmt->error_list); /* check for error -> can be removed later */ 
print_r($stmt->get_warnings()); /* check for error -> can be removed later */ 
print_r($stmt->error); /* check for error -> can be removed later */ 

$results = $stmt->execute(); /* execute query */ 
$stmt->bind_result($idProduct, $idOrder, $title, $qty); /* bounded results */ 
$stmt->store_result(); 

if ($stmt->num_rows > 0) { /* we have results */ 

echo"<table>"; // start table 

while($stmt->fetch()){ /* loop through results */ 

echo"<tr> 
    <td> $idOrder </td> 
    <td> $idProduct </td> 
    <td> $title </td> 
    <td> $qty </td> 
    </tr>"; 

    } 

echo"</table>"; 

} 
else 
{ echo"[ no data ]"; } 
?> 
+0

@easyquestions:thx for UV :)ちょうどあなたが実際に使った方法は? 1位(あなた、修正済み)または2位(PPSを使用)? – OldPadawan

0

あなたの可能な解決策は以下であり、あなたが変数をカウントし、すべての

<table> 
    <?php while($row = mysql_fetch_array($query)) { 
     $idproduct = $row['idProduct']; 
     $idorder = $row['idOrder']; 
     $title = $row['title']; 
     $qty = $row['qty']; 
    ?> 
    <tr> 
      <td><?php echo $idproduct; ?></td> 
      <td><?php echo $idorder; ?></td> 
      <td><?php echo $title; ?></td> 
      <td><?php echo $qty; ?></td> 
    </tr> 
    <?php } ?> 
    </table> 
関連する問題