0

ユーザーがデータベースからエクササイズを見つけることができるスクリプトがあります。ユーザーが特定のエクササイズを見つけるためのチェックボックスがあります。各チェックボックス グループから少なくとも 1 つのチェックボックスが選択されている場合、スクリプトは正常に動作しますが、チェックボックスが選択されていない場合は、すべてのチェックボックスの結果になります。

私のチェックボックスフォームは次のようになります

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="criteria">
    <p><strong>MUSCLE GROUP</strong></p>
    <input type="checkbox" name="muscle[]" id="abdominals" value="abdominals"/>Abdominals<br />
    <input type="checkbox" name="muscle[]" id="biceps" value="biceps" />Biceps<br />
    <input type="checkbox" name="muscle[]" id="calves" value="calves" />Calves<br />
     ect...
    <br /><p><strong>EQUIPMENT (please select a least one)</strong></p>
    <input type="checkbox" name="equipment[]" id="equipment" value="bands"/>Bands<br />
    <input type="checkbox" name="equipment[]" id="equipment" value="barbell" />Barbell<br />
    <input type="checkbox" name="equipment[]" id="equipment" value="dumbbell" />Dumbbell<br />
     ect....
    <input type="submit" name="sub" value="Generate Query" />
    </form>

ここに私のスクリプトがあります

     <?php

      if(isset($_POST['muscle']) && !empty($_POST['muscle'])){   
if(isset($_POST['equipment']) && !empty($_POST['equipment'])){   

//get the function
 include ($_SERVER['DOCUMENT_ROOT'] .'/scripts/functions.php');    
 $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
       $limit = 14;
       $startpoint = ($page * $limit) - $limit;

  // Runs mysql_real_escape_string() on every value encountered.
       $clean_muscle = array_map('mysql_real_escape_string', $_REQUEST['muscle']);
       $clean_equipment = array_map('mysql_real_escape_string', $_REQUEST['equipment']);

  // Convert the array into a string.
       $muscle = implode("','", $clean_muscle);
       $equipment = implode("','", $clean_equipment);

 $options = array();
       if(array($muscle))
       {
       $options[] = "muscle IN ('$muscle')";
       }
      if(array($equipment))
       {
      $options[] = "equipment IN ('$equipment')";
 }


      $fullsearch = implode(' AND ', $options);

      $statement = "mytable";
      if ($fullsearch <> '') {
      $statement .= " WHERE " . $fullsearch;
      }

     if(!$query=mysql_query("SELECT * FROM {$statement} LIMIT {$startpoint} , {$limit}"))
     {
     echo "Cannot parse query";
 }
 elseif(mysql_num_rows($query) == 0) {
 echo "No records found";
 }

else {
echo "";

while($row = mysql_fetch_assoc($query)) {
echo "".$row['name'] ."</br>           
            ".$row['description'] ."";
        }
    }
         echo "<div class=\"new-pagination\">";
        echo pagination($statement,$limit,$page);
        echo "</div>";
        }
    }

私はphpを初めて使用するため、私のコードは最適ではない可能性があります。誰かが私を助けたり、正しい方向に向けたりすることができれば、私はとてもうれしいです.

4

1 に答える 1