下面的代码工作正常,它会在单击提交按钮时更新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>
我首先将update_ranks放在isset代码下面,然后放在表单下面......现在它甚至没有更新数据库,而当我在表单下面有一个isset代码时,它用来更新数据库但是页面刷新自动没有显示新内容。必须手动刷新页面以显示新内容。如何让它自动加载新内容以及更新数据库。
答案 0 :(得分:1)
您正在更新页面底部的数据库,因此在执行更新查询之前会加载内容。这可以通过将更新查询放在您的html内容之上来解决 这样更新将执行,之后您将从数据库加载新数据。
请记住,所有代码将始终按照文件中的顺序执行,甚至是html内容的呈现。
答案 1 :(得分:0)
我犯了一个新手错误。我有两份文件。我的编辑更改的一项。我需要在nginx网站目录/ var / www / html /下复制另一个。我无法复制更改文件,因此未进行任何更新。
我知道这是与原始问题不同的根本原因,但是我担心,这可能是某些人看不到他们的更改反映出来(因此最终导致stackoverflow)的常见原因。