Как показать разные результаты в поиске MySQL с PHP

0

Я не программист, я пытаюсь изучить кодирование, я использовал те же самые коды для поиска в MySQL и отображения результатов на своей странице, если код PHP не находит значения в mysql, он не показывает результата. Я хочу чтобы показать мое пользовательское сообщение с этим условием, если в mysql нет значения для 'serialno', мне нужно показать сообщение "xxx"

мой код это

<?php header('Content-type: text/html; charset=utf-8'); ?>
<?php
$db_hostname = 'localhost';
$db_username = 'XXX';
$db_password = 'XXX';
$db_database = 'XXX';

// Database Connection String
$con = mysqli_connect($db_hostname,$db_username,$db_password);
mysqli_query ($con, "set character_set_client='utf8'");
mysqli_query ($con, "set character_set_results='utf8'");

//  mysqli_query ("set collation_connection='utf8_general_ci'");
 if (!$con)
  {
  die('Could not connect: ' . mysqli_error());
  }

mysqli_select_db($con, $db_database);
?>

<!DOCTYPE html>
<html lang="en">
    <head>
  <meta charset="UTF-8">
  <title>جستجوی شماره سریال</title>
      <link rel="stylesheet" href="css/style.css">
    </head>
    <body>
<form class="form-wrapper cf" action="" method="post">
<div class="byline"><p style="direction: rtl">شماره سریال دستگاه را وارد کنید :</p></div>
<input type="text" name="term" />
<button type="submit">جستجو</button>
</form>
    </body>

<?php
if (!empty($_REQUEST['term'])) {

$term = mysqli_real_escape_string($con, $_REQUEST['term']);
$sql = "SELECT * FROM serial WHERE serialno = ".$term;
$r_query = mysqli_query($con, $sql);

while ($row = mysqli_fetch_assoc($r_query)){
/* echo '<br /> ID: ' .$row['id']; */
echo '<div style="direction: rtl"><font size="12"'." face='Tahoma'>";
echo '<br /> شماره سریال: '.$row['serialno'];
echo '<br />تامین کننده: '.$row['vendor'];
echo '<br /> وضعیت: '.$row['stat'];
echo '</div>';
}

}
?>
    </body>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>

</html>
Теги:

5 ответов

0
<?php
 if (!empty($_REQUEST['term'])) { 
   $term = mysqli_real_escape_string($con, $_REQUEST['term']);
   $sql = "SELECT * FROM serial WHERE serialno = ".$term;
   $r_query = mysqli_query($con, $sql);

   if( mysqli_num_rows($r_query) > 0  )
   {
      while ($row = mysqli_fetch_assoc($r_query)){
       /* echo '<br /> ID: ' .$row['id']; */
       echo '<div style="direction: rtl"><font size="12"'." face='Tahoma'>";
       echo '<br /> شماره سریال: '.$row['serialno'];
       echo '<br />تامین کننده: '.$row['vendor'];
       echo '<br /> وضعیت: '.$row['stat'];
       echo '</div>';
      }
   }
   else{
    echo "<p>YOUR CUSTOM MESSAGE</p>";
   } 
}
?>
0

Вы можете использовать mysqli_num_rows (query); который вернет число строк, возвращаемых запросом, а затем напишет функцию if для отображения сообщения.

    if (!empty($_POST['term'])) {

       $term = mysqli_real_escape_string($con, $_POST['term']);
       $sql = "SELECT * FROM serial WHERE serialno = ".$term;
       $r_query = mysqli_query($con, $sql);
       $num_rows = mysqli_num_rows($r_query); //Number of rows query returned

       if($num_rows > 0) { //Here you check if that number is higher then 0 you go with the loop

       while ($row = mysqli_fetch_assoc($r_query)){
       /* echo '<br /> ID: ' .$row['id']; */
       echo '<div style="direction: rtl"><font size="12"'." face='Tahoma'>";
       echo '<br /> شماره سریال: '.$row['serialno'];
       echo '<br />تامین کننده: '.$row['vendor'];
       echo '<br /> وضعیت: '.$row['stat'];
       echo '</div>';
      }

      } else {
       //Here you display your message
      }

Кроме того, это открыто для атаки с использованием SQL-инъекций, так что PDO будет лучшим вариантом.

  • 0
    это работает для моего случая. Большое спасибо
0
if (!empty($_REQUEST['term'])) {
...
...
} else {
  echo 'XXX';
}

Должно быть достаточно для вашего случая, согласен с Сайф Абаза

0

Если я вас правильно понимаю, вы хотите отобразить сообщение пользователю, когда 'serialno' не имеет значения?

while ($row = mysqli_fetch_assoc($r_query)){
    if(isset($row['serialno'])){
        /* echo '<br /> ID: ' .$row['id']; */
        echo '<div style="direction: rtl"><font size="12"'." face='Tahoma'>";
        echo '<br /> شماره سریال: '.$row['serialno'];
        echo '<br />تامین کننده: '.$row['vendor'];
        echo '<br /> وضعیت: '.$row['stat'];
        echo '</div>';
    }else{
        echo "No value in serialno";
    }
}

Или, если вы все еще хотите показать остаток строки:

while ($row = mysqli_fetch_assoc($r_query)){
    /* echo '<br /> ID: ' .$row['id']; */
    echo '<div style="direction: rtl"><font size="12"'." face='Tahoma'>";
    echo '<br /> شماره سریال: '.(isset($row['serialno'])?$row['serialno']:"Row has serialno");
    echo '<br />تامین کننده: '.$row['vendor'];
    echo '<br /> وضعیت: '.$row['stat'];
    echo '</div>';
}

Но вы действительно должны использовать PDO;)

  • 0
    Эта страница не работает, в настоящее время не может обработать этот запрос. HTTP ERROR 500
  • 0
    С обоими фрагментами?
Показать ещё 1 комментарий
-1

лучше использовать PDO, введите ссылку здесь

с этим вы получите много проблем

  • 1
    Хотя я согласен с тем, что лучше использовать PDO, это должен был быть комментарий, а не ответ.
  • 0
    Так как мне это нужно для очень простого проекта, а я не программист, мне нужен более простой способ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню