2016-04-19 2 views
2

Я хочу создать форму, где пользователь может искать определенную информацию на основе их ввода и выбора. После того, как вся форма, заполняющая данные, будет отображаться с использованием таблицы ... ошибка с моим implode, где она дала мне предупреждение implode(): Недопустимые аргументы прошел в линии 111, которыйКаковы мои проблемы с развязкой?

$check = implode("','", $_POST['check_list']); 

и после того, что я пытался клещ два значения на флажке он дал мне mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логическим приведено в строке 125, которая является

while($row = mysql_fetch_array($sql)) { 

.

 <form method="post"> 
     <div class="form-group"> 
      <h3><label for="usr">Carian bajet anda:</label></h3> 
    <div class= "col-md-12"> 
    <div class=" col-md-4"></div> 

      <div class=" col-md-4"> 
      <input name="bajet" type="text" class="form-control" id="usr"></div> 

     </div> 
     <div class=" col-md-4"></div> 
     </div><br> 

     <h3><label for="sel1">Pilih negeri pilihan anda:</label></h3> 

     <div class= "col-md-12"> 
    <div class=" col-md-4"></div> 

      <div class=" col-md-4"> 
       <select class="form-control" name="sel"> 
       <option>Kuala Lumpur</option> 
       <option>Negeri Sembilan</option> 
       <option>Pahang</option> 
       <option>Perak</option> 
       <option>Terengganu</option> 
       <option>Selangor</option> 

       </select> 
      </div> 

      <div class=" col-md-4"></div> 
     </div><br> 


      <br> 
      <h5><label for="check">Senarai Pra-perkahwinan:</label></h5> 
     <center> <div class="checkbox"> 
      <label class="checkbox-inline"> <input type="checkbox"name="check_list[]" value="Jurufoto"><label>Jurufoto</label></label> 
      <label class="checkbox-inline"> <input type="checkbox"name="check_list[]" value="Butik"><label>Butik</label></label> 
      <label class="checkbox-inline"> <input type="checkbox"name="check_list[]" value="Hiburan"><label>Hiburan</label></label> 
      <label class="checkbox-inline"> <input type="checkbox"name="check_list[]" value="Kad Kahwin"><label>Kad Kahwin</label></label> 
      <label class="checkbox-inline"> <input type="checkbox"name="check_list[]" value="Katering"><label>Katering</label></label> 
      <br> 


     </center> 
       <div class="col-md-4"></div> 

       <div class="col-md-4"> 
        <button class="btn btn-success btn-sm" name="search">Search&nbsp;<span class="glyphicon glyphicon-search"></span></button><br><br> 
       </div> 

       <div class="col-md-4"></div> 
      </div> 


    </form> 
    <table class="table table-bordered"> 
       <thead> 
        <tr> 

         <th>Jenis</th> 
         <th>Vendor</th> 
         <th>Negeri</th> 
         <th>No.</th> 
         <th>Pakej</th> 
         <th>Harga</th> 
         <th></th> 
        </tr> 
       </thead> 
       <tbody> 
       <?php 
       $check = array(); 
      $budget = $_POST['bajet']; 
      $select = $_POST['sel']; 
       $check = implode("','", $_POST['check_list']); 
       $finalCheck = "'".$check."'"; 
       $check = array(); 

      if (isset($_POST['search'])) { 
      mysql_select_db($database_conn, $conn); 

      $sql = mysql_query(" SELECT * 
      FROM vendor 
       RIGHT JOIN item 
        ON vendor.v_id=item.v_id 
        WHERE item.harga <= '%". $budget . "%' 
         AND vendor.state = '%". $select ."%' 
         AND vendor.type IN ('%". $finalCheck ." %')"); 
         while($row = mysql_fetch_array($sql)) { 
    ?> 
       <tr> 

         <td><?php echo $row['type'] ?></td> 
         <td><?php echo $row['companyName'] ?></td> 
         <td><?php echo $row['state'] ?></td> 
         <td><?php echo $row['contact'] ?></td> 
         <td><?php echo $row['harga'] ?></td> 
         <td><?php echo $row['pakej'] ?></td> 
         <td><a href="index.php?v_id=<?php echo $row['v_id']?>">View Package</a></td> 


        </tr> 

        <?php } 
       } 
       print_r($_POST['check_list']); 
       ?> 

       </tbody> 
      </table> 
    </div> 
+0

Удалите одинарные или двойные кавычки от взрыва, которые вы дали обоим.$ check = implode (",", $ _POST ['check_list']); – RJParikh

+1

сначала проверьте вывод 'var_dump ($ _ POST ['check_list']);' и покажите нам и удалите кавычки в implode. '$ check = implode (", ", $ _POST ['check_list']);' –

+0

nope все еще получил ошибку –

ответ

0

использовать как этот

$check = implode(",", $_POST['check_list']); 
+0

nope все еще ошибка –

+0

это правильно. почему проголосовали? +10 с моей стороны –

+0

@Anant: OP сказал, что он не работает. Это сработало для вас? – dakab

2

всегда отладки кода, печатая значение и проверить его на желаемом выходе

Пусть веселить, что ваш пост значение check_list является

$_POST['check_list'] = ['Jurufoto','Hiburan']; 

Так в соответствии с вашим кодом после взрывается, как это

$check = implode("','", $_POST['check_list']); 

$finalCheck = "'".$check."'"; 

ваша строка $ finalCheck будет, как это «„Jurufoto“," Hiburan»

и когда вы concatinate его с запросом, как это

AND vendor.type IN ('%". $finalCheck ." %')"); 

он стал, как это

AND vendor.type IN ('%'Jurufoto','Hiburan' %')"); 

который соврет SQL Eather вы должны изменить как этот

AND vendor.type IN (". $finalCheck .")"); 

ИЛИ если вы хотите проверить с как тогда вы должны видеть эту нить

MySQL IN with LIKE

И убедитесь, что для печати $sql, прежде чем извлекать данные и сопоставить их с желаемым результатом

Теперь ваш код будет таким:

<form method="post"> 
    <div class="form-group"> 
     <h3><label for="usr">Carian bajet anda:</label></h3> 
     <div class="col-md-12"> 
      <div class=" col-md-4"></div> 

      <div class=" col-md-4"> 
       <input name="bajet" type="text" class="form-control" id="usr"> 
      </div> 

     </div> 
     <div class=" col-md-4"></div> 
    </div> 
    <br> 

    <h3><label for="sel1">Pilih negeri pilihan anda:</label></h3> 

    <div class="col-md-12"> 
     <div class=" col-md-4"></div> 
     <div class=" col-md-4"> 
      <select class="form-control" name="sel"> 
       <option>Kuala Lumpur</option> 
       <option>Negeri Sembilan</option> 
       <option>Pahang</option> 
       <option>Perak</option> 
       <option>Terengganu</option> 
       <option>Selangor</option> 

      </select> 
     </div> 

     <div class=" col-md-4"></div> 
    </div> 
    <br> 


    <br> 
    <h5><label for="check">Senarai Pra-perkahwinan:</label></h5> 
    <center> 
     <div class="checkbox"> 
      <label class="checkbox-inline"> <input type="checkbox" name="check_list[]" 
                value="Jurufoto"><label>Jurufoto</label></label> 
      <label class="checkbox-inline"> <input type="checkbox" name="check_list[]" 
                value="Butik"><label>Butik</label></label> 
      <label class="checkbox-inline"> <input type="checkbox" name="check_list[]" 
                value="Hiburan"><label>Hiburan</label></label> 
      <label class="checkbox-inline"> <input type="checkbox" name="check_list[]" value="Kad Kahwin"><label>Kad 
        Kahwin</label></label> 
      <label class="checkbox-inline"> <input type="checkbox" name="check_list[]" 
                value="Katering"><label>Katering</label></label> 
      <br> 
     </div> 
    </center> 
    <div class="col-md-4"></div> 

    <div class="col-md-4"> 
     <button class="btn btn-success btn-sm" name="search">Search&nbsp;<span 
       class="glyphicon glyphicon-search"></span></button> 
     <br><br> 
    </div> 

    <div class="col-md-4"></div> 

</form> 
<table class="table table-bordered"> 
    <thead> 
    <tr> 
     <th>Jenis</th> 
     <th>Vendor</th> 
     <th>Negeri</th> 
     <th>No.</th> 
     <th>Pakej</th> 
     <th>Harga</th> 
     <th></th> 
    </tr> 
    </thead> 
    <tbody> 
    <?php 
    if (isset($_POST['search'])) { 
     $check = array(); 
     $budget = $_POST['bajet']; 
     $select = $_POST['sel']; 
     $check = implode("','", $_POST['check_list']); 
     $finalCheck = "'" . $check . "'"; 
     $check = array(); 

     mysql_select_db($database_conn, $conn); 

     $sql = mysql_query(" SELECT * 
       FROM vendor 
        RIGHT JOIN item 
         ON vendor.v_id=item.v_id 
         WHERE item.harga <= '%" . $budget . "%' 
          AND vendor.state = '%" . $select . "%' 
          AND vendor.type IN (" . $finalCheck . ")"); 
     while ($row = mysql_fetch_array($sql)) { 
      ?> 
      <tr> 

       <td><?php echo $row['type'] ?></td> 
       <td><?php echo $row['companyName'] ?></td> 
       <td><?php echo $row['state'] ?></td> 
       <td><?php echo $row['contact'] ?></td> 
       <td><?php echo $row['harga'] ?></td> 
       <td><?php echo $row['pakej'] ?></td> 
       <td><a href="index.php?v_id=<?php echo $row['v_id'] ?>">View Package</a></td> 


      </tr> 

     <?php } 
    } 
    ?> 

    </tbody> 
</table> 

Не используйте соединение mysql, так как функции mysql_ * устарели от 5.5.0. Используйте mysqli или PDO для подключения к базе данных.

+0

это правильно, и разработка делается отлично. +10 –

+0

, так что вы предлагаете мне понравиться тот, который создает проблему? И я уже попробовал AND vendor.type IN (". $ FinalCheck.") "), Но stll получил предупреждение implode() недопустимый аргумент :(.. btw nice explaination –

+0

Проверьте значение перед имплантированием, напечатав '$ _POST ['check_list']' like this 'print_r ($ _ POST ['check_list'])'. Убедитесь, что это массив –

0

Как вы уже добавили одинарной кавычки во время создания $ finalCheck, так что не нужно снова добавлять одинарной кавычки в пункт.

$sql = mysql_query(" SELECT * 
      FROM vendor 
       RIGHT JOIN item 
        ON vendor.v_id=item.v_id 
        WHERE item.harga <= '%". $budget . "%' 
         AND vendor.state = '%". $select ."%' 
         AND vendor.type IN (%". $finalCheck ." %)"); 
+0

implode(): недопустимые аргументы переданы –

+0

В этой строке нет ошибки: $ check = implode ("','", $ _POST ['check_list']), но положил ее после проверки, это значение: if (! empty ($ _ POST ['check_list'])) {$ check = implode ("','", $ _POST ['check_list']) ;} –

+0

после того, как я заменил ваш, теперь моя проблема - mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean задан в строке 126, который находится while ($ row = mysql_fetch_array ($ sql)) {после того, как я заполнил всю форму и щелкнул поиск. –

Смежные вопросы