2017-01-02 4 views
2

enter image description here Я использую фильтр, в котором я использую форму. Когда пользователь получает землю на странице списка, он должен автоматически отправить форму, чтобы пользователь мог получить значения только для него хотеть увидеть. Я пробовал много вещей, таких как jquery JS и использование фрагмента в теле, но ни один из них не работает. Для следующего кода форма сохраняется при отправке.Автоматическая подача формы на странице load вызывает бесконечный цикл

<div class="container shop-filter"> 
    <div class="filter"> 
     <form action="" method="POST" enctype="multipart-form-data" id="city-filter" name="cit-filter"> 
      <select name="filter" id="select"> 
      <option value="all">All city</option> 
       <?php 
         $sql="SELECT * FROM tcity"; 
         $connect= mysqli_query($conn, $sql) or die ("Failed To Connect."); 
         while($rows= mysqli_fetch_array($connect, MYSQLI_ASSOC)){ ?> 
          <option value= "<?php echo $rows['c_id']?>" id="optin_val" <?php echo (!empty($_COOKIE['dropdown']) && $_COOKIE['dropdown'] == $rows['c_id'] ? 'selected' : ''); ?>><?php echo $rows['city_nm'];?></option> 
         <?php } 
        ?> 
      </select> 
      <input type="submit" name="submitt" id="submitt" value="filter" class="btn .btn-default"> 
     </form> 
    </div> 
    <div class="view"> 
     <a href="#" id="grid" class="switcher active"><i class="fa fa-th fa-lg" aria-hidden="true"></i><span id="grid-view"> Grid</span></a> 
     <a href="#" id="list" class="switcher"><i class="fa fa-th-list fa-lg" aria-hidden="true"></i><span id="list-view"> list</span></a> 
    </div> 
     <hr id="hr-1" style="width:100%"> 
</div> 
<div class="container blocks" id="content"> 
    <?php 
    //Grab the variable sent through link by sub_category.php 
    //session_start(); 
    $subcategory_id=''; 
    $subcategory_id= $_GET['sub_id']; 
    $_SESSION['sub'] = $subcategory_id; 
    $row_count = 0; 
    if(isset($_POST['submitt'])){ 
    $city_id=$_POST['filter']; 
     if($city_id == 'all'){ 
      $sql="SELECT * FROM tadd WHERE sub_id = '$subcategory_id' ORDER BY add_nm"; 
     }else{ 
     $sql="SELECT * FROM tadd WHERE sub_id = '$subcategory_id' AND c_id = '$city_id' ORDER BY add_nm"; 
     } 
    }else{ 
     $sql="SELECT * FROM tadd WHERE sub_id = '$subcategory_id' ORDER BY add_nm"; 
    } 
    //$sql="SELECT * FROM tadd WHERE sub_id = '$subcategory_id' AND c_id = '$city_id'"; 
    $conection = mysqli_query($conn, $sql); 
    while ($rows = mysqli_fetch_array($conection, MYSQLI_ASSOC)){ 
     $name = $rows['add_nm']; 
     $add_id = $rows['add_id']; 

     //get the join date and Expiry date to hide Expired Contents 
     $current_date = strtotime(date('Y-m-d')); 
     $exp = strtotime($rows['exp_dt']); 
     $row_count = mysqli_num_rows($conection); 
     //get Images 
     //$shop_image = trim($add_id.'.jpg'); 
     ?> 
      <!-- Do Not Show Expired Contents --> 
      <?php if($current_date <= $exp) {?> 
       <div class="dialog"> 
        <div class="shop_img"> 
         <img src="../image/shops/1.jpg" alt ="<?php echo $name;?>" > 
        </div> 
        <hr id="hr"> 
        <div class="shop_name"> 
         <?php echo strtoupper($name);?> 
        </div> 
        <a href="detail.php?add=<?php echo $add_id;?>"><div class="address"> 
         <span id="1">ADDRESS</span><span id="2"><i class="fa fa-arrow-right" aria-hidden="true"></i></i></span> 
        </div></a> 
       </div> 
    <?php 
      } 
     } 
     if($row_count == 0){ 
      echo '<div class ="msg">Sorry! No Entries Found.</div>'; 
     } 
    ?> 
</div> 
</body> 
<footer> 
<?php 
    include("../footer.html"); 
?> 
</footer> 
<script> 
$(document).ready(function(){ 
    $("#city-filter").submit(); 
}) 
</script> 

Как показано на изображении, когда пользователь приходит на эту страницу, он должен показывать только классы успеха. Но это покажет все ... когда у меня горячий фильтр, он будет показывать currect.so я хочу отменить hiting submit вручную и автоматически отправить форму

+2

Почему вы должны '' '' ''? Это будет отправлять форму каждый раз, когда страница загружается. – CUGreen

+0

, потому что вы отправляете в то же место ... измените свое действие формы или просто отправьте форму трека на этой странице и выполните свою бизнес-логику и перенаправляйтесь на новую страницу. назовите свою форму и проверьте, если это возможно (isset ($ _ post ['myform'])) – webDev

+0

Хорошо, что я использовал для отправки формы на странице load..which, которую я получил из других потоков при переполнении стека – Mps

ответ

2

Вы можете положить ее в состояние, чтобы проверить, есть ли какие-то dialog divs :

$(document).ready(function(){ 
    if($('.dialog').length === 0){ // check the length of dialog div if 0 
     $("#city-filter")[0].submit(); // then only submit the form 
    } 
}) 

Вместо этого используйте родное .submit() событие на form.

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