формы — SWITCH / CASE Несколько кнопок отправки с PHP, используя метод POST

Во-первых, я новичок в PHP и использую формы, но я учусь на ходу!
Во-вторых, я знаю, что это освещалось много раз, но я просто не могу заставить его работать на меня! Это, наверное, просто то, что я пропускаю …

У меня есть форма с 1 полем поиска и 3 кнопками отправки.
В зависимости от выбранной кнопки, запрос будет искать в базе данных один из 3 различных поисков. Это довольно просто …

http://1karaokedj.com

<input name="searchterm" type="search" placeholder="Enter Search Terms Here"  class="search" />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Artist Search"  />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Title Search"  />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Disc ID Search"  />
<?php if(isset($_SESSION['searchterm'])) {
if(($_SESSION['searchterm']!="")) {
switch ($_POST['searchbtn']) {
case 'Artist Search':
$searchresults=$db->query("select * from 1KaraokeDJ where Artist like '%$searchterm%' limit 100");
break;
case 'Title Search':
$searchresults=$db->query("select * from 1KaraokeDJ where Title like '%$searchterm%' limit 100");
break;
case 'Disc ID Search':
$searchresults=$db->query("select * from 1KaraokeDJ where Disc like '%$searchterm%' limit 100");
break;
}

if(mysqli_num_rows($searchresults) > 0) {
...
}}}?>

это всегда возвращает записи не найдены.
если я добавлю случай по умолчанию, то это работает
print_r ($ _ POST); возвращает «Array ()»

Вот полный код на случай, если проблема в другом месте:

<?php
include("connect.php");
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;
ini_set('session.cookie_lifetime',900);
ini_set('session.gc_maxlifetime',900);
session_start();
if(isset($_POST['searchbtn'])) {
$_SESSION['searchterm']=$_POST['searchterm'];
if(($_SESSION['searchterm'])!="") { header("location:index.php"); }
else { echo "<script> alert('Please enter something to search for') </script>"; }
}
?>
<html>
<head>
<title>1KaraokeDJ.com Search</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="container">
<form method="post">
<p><code>
<img src="top1.jpg" /><br>
<?php if ($detect->isMobile()) { echo("Mobile Device Detected"); } else { echo("Desktop Browser Detected"); } ?>
</code></p>
<p>
<?php if(isset($_SESSION['searchterm'])) { ?>
<input name="searchterm" type="search" value="<?php echo $_SESSION['searchterm'];?>" class="search" />
<?php } else { ?>
<input name="searchterm" type="search" placeholder="Enter Search Terms Here"  class="search" />
<?php } ?>
</p>
<p>
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Artist Search"  />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Title Search"  />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Disc ID Search"  />
</p>
<hr style="width:100%">
<?php if(isset($_SESSION['searchterm'])) {
if(($_SESSION['searchterm']!="")) {
$searchterm=strtoupper($_SESSION['searchterm']);

print_r($_POST);

switch ($_POST['searchbtn']) {
case 'Artist Search':
$searchresults=$db->query("select * from 1KaraokeDJ where Artist like '%$searchterm%' limit 100");
break;
case 'Title Search':
$searchresults=$db->query("select * from 1KaraokeDJ where Title like '%$searchterm%' limit 100");
break;
case 'Disc ID Search':
$searchresults=$db->query("select * from 1KaraokeDJ where Disc like '%$searchterm%' limit 100");
break;
}

if(mysqli_num_rows($searchresults) > 0) {
while($descri=mysqli_fetch_object($searchresults)) { ?>
<div class="reslt">
<h3 id="results">
<?php
echo str_ireplace($searchterm, '<span class="highlight">'.$searchterm."</span>", $descri->Artist);
echo " - ";
echo str_ireplace($searchterm, '<span class="highlight">'.$searchterm."</span>", $descri->Title);
?>
</h3>
<p class="Description">
<?php
echo str_ireplace($searchterm, '<span class="highlight">'.$searchterm."</span>", $descri->Brand);
echo " - ";
echo str_ireplace($searchterm, '<span class="highlight">'.$searchterm."</span>", $descri->Disc);
echo " - ";
echo $descri->Track;
?>
<p>
<hr>
</div>
<?php } ?>
<div class="reslt">
<h3 id="results"><?php echo mysqli_num_rows($searchresults) ?> Results</h3>
<?php if(mysqli_num_rows($searchresults) >= 100) { ?>
<p class="Description highlight">Showing Up To 100 Results<br>Try Refining Your Search</p><hr>
<?php } ?>
</div>
<?php   } else { ?>
<div class="reslt">
<h3 id="results">Nothing Found!</h3>
<p class="Description highlight">Try Changing Your Search Terms<p><hr>
</div>
<?php } } } ?>
</form>
<code>This site is in testing... Things may change anytime<br>and many things may not work for a while!</code>
</div>
</body>
</html>

2

Решение

Это из-за строки ниже, которая перенаправляет при отправке формы.
POST значения не сохраняются при перенаправлении. Следовательно, $_POST['searchbtn'] пусто и в switch Заявление идет к default дело.

header("location:index.php");

Перенаправление заголовка комментария и оно должно работать.

Обновленный код:

if(isset($_POST['searchbtn'])) {
$_SESSION['searchterm']=$_POST['searchterm'];
if(($_SESSION['searchterm'])!="") { /*header("location:index.php");*/ }
else { echo "<script> alert('Please enter something to search for') </script>";}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]