Я новичок в 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;
?>
В начале вашего скрипта вы устанавливаете это:
$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:"
вы должны заключить код внутри условия 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?
Вы должны попробовать это
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:" ;
завершите его ;
сначала исправьте эту строку, вы должны сделать одиночную кавычку до <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
.
Фактически вы должны написать 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?
'
перед<a href="salonpage.php?...