2016-04-18 31 views
0

以下のコードは、送信ボタンをクリックするとdbのランクを更新しますが、ページを更新して新しいコンテンツで更新するのではなく古いコンテンツを読み込みます。どうやって新しいコンテンツを更新するのですか?ページは更新されますが、新しいコンテンツは更新されません

 <?php 

     function update_ranks($newimgurl,$newrank){ 

     switch ($newrank) 
     { 
     case "1": 
       $rank="1st"; 
       break; 
     case "2": 
       $rank="2nd"; 
       break; 
     case "3": 
       $rank="3rd"; 
       break; 

     } 


       $field_key = "field_582fdg46"; 
       $value=array(); 
       $count=0; 
       global $totalimgs; 
       global $allimgurl;   
         global $allimgranks;    

       while ($count < $totalimgs){ 

       if ($allimgurl[$count]==$newimgurl){ 
       $value[] = array("imglink" => $newimgurl,"rank" => $rank); 

       } 
       else{ 
       $value[] = array("imglink" => $allimgurl[$count],"rank" => $allimgranks[$count]);  
       } 
       $count=$count+1;   
       update_field($field_key, $value, $post->ID);  

       } 

       unset($newrank,$newimgurl,$currentnewrank,$currentimgurl,$rank,$count); 
       unset($allimgurl, 

    ,$allimgranks,$totalimgs,$value); 


    } 
?> 
<?php 
     if(isset($_POST['rank1btn'])){ 
     $currentnewrank=$_POST['rank1']; 
     $currentimgurl=$rank1img; 
     update_ranks($currentimgurl,$currentnewrank); 
     } 
     if(isset($_POST['rank2btn'])){ 
     $currentnewrank=$_POST['rank2']; 
     $currentimgurl=$rank2img; 
     update_ranks($currentimgurl,$currentnewrank); 
     } 
     if(isset($_POST['rank3btn'])){ 
     $currentnewrank=$_POST['rank3']; 
     $currentimgurl=$rank3img; 
     update_ranks($currentimgurl,$currentnewrank); 
     } 


    ?> 

    <form id="myform" name="myform" action="" method="POST" > 
     <article class="col-xs-12 col-sm-12 col-md-12 col-lg-12 "> 

     <?php 
     global $post; 

     $bookid=get_the_title($post->ID);; 
     $args = get_posts(array('post_type' => 'bookgallery' ,'post_title' =>$bookid, 'posts_per_page' => -1 
     )); 
     ?> 

     <?php 
     foreach ($args as $post) : setup_postdata($post); 

     if (!empty($post)) 
      { 
      $allimg=$allrank=array(); 

      while(have_rows('imgs')): the_row(); 
      $temprank=get_sub_field('rank',$post->ID); 
      $tempimg=get_sub_field('imglink',$post->ID); 

      $allimg[]=$tempimg; 
      $allrank[]=$temprank; 

      if ($temprank=='1st') { 
      $rank1img= $tempimg; 
      $rank1='1st'; 
      } 
      if ($temprank=='2nd') { 
      $rank2img= $tempimg; 
      $rank2='2nd'; 
      } 
      if ($temprank=='3rd') { 
      $rank3img=$tempimg; 
      $rank3='3rd' 
      } 

      endwhile; 

      if (!empty($rank1img)){ 
      ?> 
      <div > 

      <img src="<?php echo $rank1img; ?>" alt="" > 

      <div >1st 
       <select name="rank1"> 
        <option value="0"> </option> 
        <option value="1">1st</option> 
        <option value="2">2nd</option> 
        <option value="3">3rd</option>  
         </select> 
      </div> 

      <div ><input type="submit" name="rank1btn" value="update rank" id="rank1btn" ></div> 
      </div> 
      <?php } 
      if (!empty($rank2img)){ 
      ?> 
      <div >2nd 

      <img src="<?php echo $rank2img; ?>" alt="" > 

      <div > 
       <select name="rank2"> 
        <option value="0"> </option> 
        <option value="1">1st</option> 
        <option value="2">2nd</option> 
        <option value="3">3rd</option> 
         </select> 
      </div> 

      <div ><input type="submit" name="rank2btn" value="update rank" id="rank2btn" ></div>  
      </div> 
      <?php } 
      if (!empty($rank3img)){ 
      ?> 

      <div>3rd 

      <img src="<?php echo $rank3img; ?>" alt="" > 
      <div> 
       <select name="rank3"> 
        <option value="0"> </option> 
        <option value="1">1st</option> 
        <option value="2">2nd</option> 
        <option value="3">3rd</option> 
         </select> 
      </div> 

      <div><input type="submit" name="rank3btn" value="update rank" id="rank3btn" ></div>  
      </div> 
      <?php } 

      } 
     endforeach; ?> 

     </article> 
     </form> 

は、私はそれは、DBを更新するために使用ISSETコードとTHTの下にフォームが...今それも私がフォーム以下ISSETコードを持っていたときには、データベースを更新しないことを下回る最初update_ranksを置きますページの更新は自動的に新しいコンテンツを表示しませんでした.uは、新しいコンテンツを表示するために手動でページを更新する必要がありました。どのように私は、dbを更新すると同時に新しいコンテンツを読み込むことができます。

+0

ページの下部に投稿の配列をクリアしますか? '<?php $ _POST = NULL?>' –

+0

質問の重複の可能性[http://stackoverflow.com/questions/36685121/unable-to-run-php-function-to-update-db-value-using-document -write](http://stackoverflow.com/questions/36685121/unable-to-run-php-function-to-update-db-value-using-document-write) – VipindasKS

+0

投稿を表示した後、処理しますそれが設定されている場合はPOST要求。そのため、まずPOSTリクエストを処理し、現在のデータを取得して表示します。 – jeroen

答えて

1

ページの下部にあるデータベースを更新しているため、更新クエリが実行される前にコンテンツがロードされます。これは、HTMLコンテンツの上に更新クエリを置くことで解決できます。
このようにして更新が実行され、その後、データベースから新しいデータがロードされます。

すべてのコードは、HTMLコンテンツのレンダリングさえファイル内に配置された順番で常に実行されることに注意してください。

+0

まだロードコンテンツを読み込んでいませんでした –

+0

新しいコードで質問を更新できますか? – Jerodev

+0

tht ... plz check –

関連する問題