【问题标题】:PHP not retrieving new data until page refreshPHP 在页面刷新之前不会检索新数据
【发布时间】:2014-10-03 09:28:54
【问题描述】:

正在发生的事情是我认为我的代码首先选择数据(基本上是旧数据)然后更新它,但我想要它更新然后选择数据(新数据)。我该怎么做?

我将在哪里出错,如果您需要完整代码,请询问:

        $select_links = $db->query("SELECT pid, added_by,link_title,lid,link_order FROM " . TABLE_PREFIX . "homepage_links WHERE pid='$pid' 
         ORDER BY link_order DESC LIMIT $start,$show");
    $check_link_count_rows = $db->num_rows($select_links);
    echo "<b> You Current Have " . $check_link_count_rows . " Links On Your Page: </b><br>";
    echo "<form action='' method='POST'>
";
    while($select_links_array = $db->fetch_array($select_links)) {
    $link_title_display = $select_links_array['link_title'];
    $link_id_display = $select_links_array['lid'];
    if(!$mybb->input["order_edit_$link_id_display"]) {
    $link_order_display = $select_links_array['link_order'];
    } else {
    $link_order_display = $mybb->input["order_edit_$link_id_display"];
    }



    $order_edit_value1 = $mybb->input["order_edit_$link_id_display"];
    $order_edit_value = $db->escape_string($order_edit_value1);


    echo "<br>" . $link_title_display . " <a href='?operation=edit_links&link=$link_id_display'> (edit) </a>

    <input type='number' name='order_edit_$link_id_display' value='$link_order_display' style='width:40px;'>
    <input type='hidden' name='get_link_id_display_value_$link_id_display' value='$link_id_display'><br>

    ";



$get_link_id_display_value1 =  $mybb->input["get_link_id_display_value_$link_id_display"];
$get_link_id_display_value = $db->escape_string($get_link_id_display_value1);
    $update_quick_edit_query = $db->query("UPDATE spud_homepage_links SET link_order='$order_edit_value'
WHERE lid='$get_link_id_display_value'");
    }

我找不到解决方案,因为除了这个错误之外,一切都在正确的地方让它工作。

【问题讨论】:

  • 看起来你的UPDATE 已经结束了。您是否尝试过在读取数据的SELECT 之前移动这部分逻辑?
  • 是的,这就是我正在尝试做的事情,但是由于我在 while 循环中遍历字段,然后获取更新的值才能工作,所以我不能让事情变得复杂,因为你甚至不能去在while循环值和输入帖子字段之前:/感谢您的回复!希望解决这个问题
  • 啊,如果需要第一个SELECTUPDATE 设置数据,那么在渲染屏幕之前,只需在最后运行另一个SELECT。您是否正在响应表单提交进行更新?它的目的是什么?
  • 选择的目的是它还获取数据,我可以尝试看看它是如何进行的 :) 但可能会搞砸事物的显示方式,但感谢您的帮助和建议 :)
  • 完成 :) 再次感谢!

标签: php html mysql arrays


【解决方案1】:

在 cmets 中讨论后,我确定您尝试在修改数据库的 post 表单提交之后呈现页面。完全可以重新读取新的数据库状态并在后期操作中呈现它,但这是不可取的,因为浏览器无法在不询问您是否希望再次运行操作的情况下刷新页面。这不会带来良好的用户体验,尤其是在使用后退/前进按钮方面。

出现这种行为的原因是后期操作通常会修改数据库。例如,它们用于信用卡购买或配置文件修改,其中预计服务器状态会发生一些变化。因此,最好在写操作后执行新的往返服务器,将页面方法从post 更改为get

我链接到的header() 调用将执行此操作,也将解决您的渲染问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    相关资源
    最近更新 更多