2015-11-15 5 views
2

Во-первых, я ноб на PHP и использую Forms, но я учусь, когда я ухожу! Во-вторых, я знаю, что это было покрыто много раз, но я просто не могу заставить это работать для меня! Это, вероятно, просто то, что я пропускаю ...SWITCH/CASE Несколько кнопок отправки с PHP с использованием метода POST

У меня есть форма с 1 полем поиска и 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> 
+0

Попробуйте переставить session_start(); до первой строки без пробелов перед этим – Shan

ответ

1

Это объясняется ниже линии, которая перенаправляет при отправке формы. 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>";} 
} 
+0

спасибо! кто это сделал. У меня будет еще несколько вопросов в других сообщениях! –