$ str_result отображается перед отправкой формы

0

Я новичок в PHP и кодировании HTML, поэтому я сожалею, если это кажется очень очевидным.

Моя проблема: после входа пользователя в систему и перехода на домашнюю страницу моего веб-сайта, прежде чем нажать кнопку "Отправить" в форме, $str_result и $str_comments.

Это мой код:

<?php 
//If connected to the database get services names from database and write out DropDownMenu
        mysqli_select_db($db_server, $db_database);
        $query = "SELECT ID, Name FROM categories ORDER BY Name";
        $result = mysqli_query($db_server, $query); 
        if (!$result) die("Query failed: " . mysqli_error($db_server));

        while($row = mysqli_fetch_array($result)){
                $str_options .= "<option value= '" . $row[ 'ID'] . "'>";
                $str_options .= $row['Name'];
                $str_options .= "</option>";
        }
        mysqli_free_result($result);

// Your code here to handle a successful verification
$str_result = "<h2>Thanks for your search! Services avaliable are:" .
$category = clean_string($db_server, $_POST["categories"]) . "</h2>";
?>

<!--form-->
<form method="post" action="nihome.php"><p>I am searching for</p>
<select name="categories"><?php echo $str_options; ?></select>
<br /> 
<input type="submit" id="submit" name="submit" value="Submit" />
</form>

<?php
//Capture form data, if anything was submitted
if (isset($_POST['categories']) and ($_POST['categories'] != '')){
$category = clean_string($db_server, $_POST['categories']);

// create the SQL query
$query = "SELECT salon.ID AS ID, categories.Name as Category, salon.salon_name AS Salon, services.name AS Service, servicesoffered.price AS price FROM services 
    JOIN categories ON services.cID = categories.ID 
    JOIN servicesoffered ON servicesoffered.serviceID = services.ID
    JOIN salon ON servicesoffered.salonID = salon.ID WHERE categories.ID=$category";
                    // query the database
                    mysqli_select_db($db_server, $db_database);
                    $result = mysqli_query($db_server, $query);
                    if (!$result) die("Database access failed: " . mysqli_error($db_server));

// if there are any rows, print out the contents
while ($row = mysqli_fetch_array($result)) {
$str_result .= '<h3>' . $row['Salon'] . ',</h3><p>' .
            $row['Service'] . ", £" . 
            $row['price'] .'</p>' .<a href="salonpage.php?salonid=' . $row['ID'] .'">Click here to view or add to salon reviews</a>';

} 
if($str_result == "") $str_result = "<h2>No services found</h2>";

} else {
$str_result = '<h2>No service was requested</h2>';
}
mysqli_close($db_server);

echo $str_result;
echo $str_comments;
?>   
  • 0
    Вы пропустили ' перед <a href="salonpage.php?...
  • 3
    Почему отрицательные? ОП четко заявил, что он новичок в PHP, и он приложил усилия. Он просит помощи не для того, чтобы кто-то написал код для него
Показать ещё 2 комментария
Теги:
database
forms

5 ответов

0

В начале вашего скрипта вы устанавливаете это:

$str_result = "<h2>Thanks for your search! Services avaliable are:"

(Кроме того, на этой линии есть конечная точка, которая предположительно должна быть ;)

И затем вы проверяете следующее:

if($str_result == "") $str_result = "<h2>No services found</h2>";

Который, конечно, никогда не бывает, потому что никогда не начинается пустая строка.

Если вы делаете что-то вроде этого, ваш оператор if в конце должен срабатывать правильно, и вы должны получить ожидаемый результат:

$str_result = "";

[ ... ]

if (isset($_POST['categories']) and ($_POST['categories'] != '')){
    // Set it inside this if statement.
    // So it will stay empty when nothing was submitted
    $str_result = "<h2>Thanks for your search! Services avaliable are:"
  • 0
    Отлично, это сработало! Большое спасибо, я был в полной растерянности!
0

вы должны заключить код внутри условия if.

т.е.

if (!empty($_POST){
if($str_result == "") $str_result = "<h2>No services found</h2>";
} else {
$str_result = '<h2>No service was requested</h2>';
}
}

также, вам не хватает (апострофа) 'перед <a href="salonpage.php?

0

Вы должны попробовать это

if($str_result == "")
{ $str_result = "<h2>No services found</h2>";

} else {
$str_result = '<h2>No service was requested</h2>';
}
mysqli_close($db_server);

echo $str_result;
echo $str_comments;
}

Здесь важны две вещи.
Первый:

if($str_result == "")
    { $str_result = "<h2>No services found</h2>";

    } 

Вы забыли начальные { и
Во- вторых:
вы должны держать

echo $str_result;
    echo $str_comments;

внутри } который заставит его выполнить только при нажатии кнопок. Надеюсь это поможет
А также

$str_result = "<h2>Thanks for your search! Services avaliable are:" ;

завершите его ;

0

сначала исправьте эту строку, вы должны сделать одиночную кавычку до <a href=........>'

'$row['price'] .'</p>' .'<a href="salonpage.php?salonid=' . $row['ID'] .'">Click here to view or add to salon reviews</a>';

и инкапсулировать $str_result и $str_comments в isset тогда они появятся только тогда, когда существует переменная categories.

0

Фактически вы должны написать if() где он говорит //Your code here to handle a successful verification:

if (!empty($_POST) /* && all your other validation routines */)
  {
  $str_result = "<h2>Thanks for your search! Services avaliable are:" .
  $category = clean_string($db_server, $_POST["categories"]) . "</h2>";
  }

Кроме того, вам не хватает ' до <a href="salonpage.php?

Ещё вопросы

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