2016-05-19 5 views
0

Ich habe mehrere Artikel in meinem db und Suche auf meiner Website. Wenn der Benutzer nichts eingibt und auf Suchen klickt, werden alle Artikel angezeigt. Wie fange ich leere Anfrage?Wie fange ich leere Abfrage in PHP

Code:

<?php 
mysql_connect("localhost", "user", "password") or die("Error"); 
mysql_select_db("selv_hram") or die("Error"); 
mysql_query('SET names "utf8"'); 

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

    $query = mysql_query("SELECT * FROM articles WHERE title LIKE '%$searchq%' OR text_article LIKE '%$searchq%'"); 
    $count = mysql_num_rows($query); 
    $output = ''; 

    if ($count == 0) { 
     $output = 'Nothing find'; 
    }else { 
     while ($row = mysql_fetch_array($query)) { 
      $title = $row['title']; 
      $text = $row['text_article']; 
      $id = $row['id']; 

      $output .= '<div>'.$title.' '.$text.'</div>'; 
     } 
    } 
} 
?> 

    <div class="content-article"> 
     <form name="search" action="index.php" method="post" class="search-form"> 
     <input type="text" name="search" placeholder="search" /> 
     <input type="submit" value=">>"> 
     <?php print("$output"); ?> 
    </div> 
+0

Was meinst du mit leerer Abfrage? Sie überprüfen bereits, dass '$ row' nicht leer ist mit' $ count' – Unex

+1

Beenden Sie die Verwendung von ** mysql _ *** Funktionen. Sie sind veraltet und unsicher. – Peon

+0

Verwenden Sie Javascript, um sicherzustellen, dass das Suchfeld einen Wert hat, bevor das Formular veröffentlicht wird. –

Antwort

2

Nachdem Sie lesen this post about SQL-injection, Änderung

if (isset($_POST['search'])) { 

zu

if (!empty($_POST['search'])) { 
+3

Oder einfach nur '! Empty ($ _ POST ['search'])' – Peon

+2

, das man auf ein einfaches '! Empty()' eingrenzen kann, aber deine Antwort funktioniert nach deinem Original http://stackoverflow.com/revisions/ 37327273/1 –

+0

Sie müssen nicht isset() als leer() verwenden, um Fehler zu vermeiden, wenn die Variable nicht existiert. – Edward

0

Diese einfache Validierung ist.

if(empty($_POST['search'])) { 
    echo "Empty search query"; 
} else { 
    //search query 
} 
0

Überprüfen Sie die Benutzereingabe zuerst, wenn sie leer ist, ändern Sie die Abfrage. wie unter

$searchq = htmlspecialchars($searchq); 
if(trim($searchq) == ''){ 
    $query = mysql_query("SELECT * FROM articles"); 
}else{ 
    $query = mysql_query("SELECT * FROM articles WHERE title LIKE '%$searchq%' OR text_article LIKE '%$searchq%'"); 
} 

Verwenden Sie nicht abgeschriebene mysql_ Funktionen. Geh für mysqli