Сделать окно поиска

1

Я пытаюсь сделать окно поиска, но когда я запустил страницу, никаких результатов поиска не появится. Я использую поля имени и семьи для поиска. поэтому мой код здесь:

      <fieldset class="fdex" >
            <legend><span class="style4">لیست خدمات انجام شده</span></legend>

            <form name="form1"  dir="rtl" method="post" action="">
<label for="search"> جستجو </label> <br>
<input name="search" type="text" size="40" maxlength="50" placeholder="جستجو کنید"><br />
<input type="radio" name="search_type" value="family" checked="checked">جستجو بر اساس فامیل<br/>
<input type="radio" name="search_type" value="name">جستجو بر اساس نام<br/>
<input type="submit" name="search_user_hasjob" value="جستجو"/>
</form>

            <?php
if(isset($_POST['search_user_job_hasjob']))
{
$db_hostname = 'localhost';
$db_database = 'site';
$db_username = 'root';
$db_password = '';

// Create connection
$conn = new mysqli($db_hostname, $db_username, $db_password, $db_database);
mysqli_set_charset($conn, "utf8");

$field = mysql_real_escape_string($_POST['search_type']);
$value = mysql_real_escape_string($_POST['search']);

// Check connection
if ($conn->connect_error)
    die("Connection failed: " . $conn->connect_error);

// Statement to get all clients that have job and the comments belong to it
$sql_clientName = "
SELECT tablesite.id_user,
          tablesite.name,
          tablesite.family,
          tablesite.phone_number,
          tablesite.email,
          relation.comments
FROM  tablesite
    INNER JOIN relation
    ON tablesite.id_user=relation.user_id
   INNER JOIN job_list
    ON relation.job_id=job_list.job_id
    WHERE $field LIKE '%".$value."%'
GROUP BY tablesite.name;";

// Statement to get specific client job info by User id
$sql_clientJob = "
SELECT job_list.job_name, relation.comments
FROM tablesite
  INNER JOIN relation
    ON tablesite.id_user=relation.user_id
  INNER JOIN job_list
    ON relation.job_id=job_list.job_id
WHERE $field LIKE '%".$value."%' AND id_user = ?;";

$stmt = $conn->prepare($sql_clientName);
$stmt->execute();
$output = $stmt->get_result();
$stmt->close();

// Go through all clients and print them out
echo "
<table width='900px'>
<tr>
    <td>نام</td><td>نام خانوادگی</td><td>تلفن</td><td>مشاغل</td>
</tr>
";

while ($row = $output->fetch_array(MYSQLI_ASSOC))
{
    echo "
    <tr>
        <td>" . $row['name'] . "</td><td>" . $row['family'] . "</td><td>" . $row['phone_number'] . "</td>
    ";

    // We call statement once
    $stmt1 = $conn->prepare($sql_clientJob);
    $stmt1->bind_param("i", $row['id_user']);
    $stmt1->execute();
    $output1 = $stmt1->get_result();

    // Fetch the job name belong to the client
    echo "<td>";
    while ($row1 = $output1->fetch_array(MYSQLI_ASSOC))
    {
        echo $row1['job_name'] . ", ";
    }
    echo "</td>";

    echo '</tr>';
}
echo "</table>";
$stmt1->close();
}
?>

</fieldset>

Поэтому, когда я пытаюсь получить информацию, страница дает мне null. Спасибо за вашу помощь.

  • 0
    Что бы я предложил, это проверить тип сортировки БД (я полагаю, что ваши запросы на арабском языке, так что это должны быть либо utf8_general_ci или utf8mb4_general_ci) и DB Engine (должен быть InnoDB). Также, пожалуйста, var_dump($_POST); вывод во время выполнения вашего запроса.
Теги:
mysqli

1 ответ

3
Лучший ответ

Это связано с тем, что имя кнопки отправки и в вашем $_POST имеет другое имя:

<input type="submit" name="search_user_hasjob" value="جستجو"/>

$ _POST не имеет одинакового имени кнопки отправки:

if (isset($_POST['search_user_job_hasjob']))

Это означает, что ваше условие никогда не принимает форму отправки и не будет возвращать результаты поиска, попробуйте исправить ее, так что оба имеют одинаковое имя

if (isset($_POST['search_user_hasjob']))

Он должен работать


прибавление
Что касается проблемы в комментариях от OP с Fatal error: Call to a member function close().

Это связано с тем, что у вас есть $stmt1->close(); из замкнутых фигурных скобок { }, вам нужно переместить $stmt1->close(); внутри цикла while:

....
$output1 = $stmt1->get_result();
$stmt1->close();
....etc

Это должно помочь избежать глубокого анализа кода.

  • 0
    эй, Мейтам, ты здесь, я рад :) есть еще одна проблема, когда я вставляю имя или семейство, которое не завершается, я вижу эту ошибку: Примечание: неопределенная переменная: stmt1 в C: \ wamp \ www \ source \ users_has_job.php в строке 270 и эта ошибка: Неустранимая ошибка: вызов функции-члена close () для необъекта в C: \ wamp \ www \ source \ users_has_job.php в строке 270. Мне кажется, мне нужно удалить строку $ stmt1-> близко (); да?
  • 1
    Конечно, я всегда в ТАК, но сейчас я ухожу, скоро посмотрю, я снова вернулся
Показать ещё 2 комментария

Ещё вопросы

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