php - 刷新页面之前等待 UPDATE 完成

标签 php mysql

我有一个 HTML 表单,可以更新 MySQL 中的表。不幸的是,我的页面重新加载了 MySQL 中预先更新的数据。有没有办法告诉 PHP 中的 mysqli 在重新加载(并再次执行 SELECT)页面之前等待 UPDATE 完成?

谢谢!

(编辑:添加部分代码)

$mysql = mysqli_connect($host,$username,$password,$dbname);
$series_mysql = $mysql->query("SELECT Name, Path, Language FROM subtitles_config");
$series_list = array();
while($serie = mysqli_fetch_array($series_mysql))
    {
    array_push($series_list,array($serie["Name"],$serie["Path"],$serie["Language"]));
    }
sort($series_list);

if ($series_list != Null)
    {
    echo "<form action='?' method='post'><table><tr><th>Nom</th><th>Sous-titres</th></tr>\n\r";
    foreach ($series_list as $serie)
        {
        echo "<tr><td><input type=text size=40 readonly name='row[]' value='" . htmlspecialchars($serie[0], ENT_QUOTES) . "'><input type='hidden' name='row[]' value='" . htmlspecialchars($serie[1], ENT_QUOTES) . "'</td><td>";?>
            <select name='row[]'>
                 <option value="aucun"<?php if ($serie[2] == "aucun"): ?> selected="selected"<?php endif; ?>>aucun</option>
                 <option value="fr"<?php if ($serie[2] == "fr"): ?> selected="selected"<?php endif; ?>>fr</option>
                 <option value="en"<?php if ($serie[2] == "en"): ?> selected="selected"<?php endif; ?>>en</option>
                 <option value="fr,en"<?php if ($serie[2] == "fr,en"): ?> selected="selected"<?php endif; ?>>fr,en</option>
            </select><?php
        echo "</td></tr>\n\r";
        }
    echo "</table><input type='submit' name='update' value='Mettre à jour' /></form>\n\r";
    }

    if ( isset( $_POST['update']))
        {
        foreach (array_chunk($_POST['row'],3) as $serie)
            {
            $mysql->query("UPDATE subtitles_config SET Language='" . $serie[2] . "' WHERE Path='" . addslashes($serie[1]) . "'");
            }
        }

最佳答案

<?php
$mysql = mysqli_connect($host,$username,$password,$dbname);

if ( isset( $_POST['update'])) {
  foreach (array_chunk($_POST['row'],3) as $serie) {
    $mysql->query("UPDATE subtitles_config SET Language='" . $serie[2] . "' WHERE Path='" . addslashes($serie[1]) . "'");
  }
}

$series_mysql = $mysql->query("SELECT Name, Path, Language FROM subtitles_config");
$series_list = array();
while($serie = mysqli_fetch_array($series_mysql)) {
  array_push($series_list,array($serie["Name"],$serie["Path"],$serie["Language"]));
}

sort($series_list);

if ($series_list != Null) {
  echo "<form action='?' method='post'><table><tr><th>Nom</th><th>Sous-titres</th></tr>\n\r";

  foreach ($series_list as $serie) {
    echo "<tr><td><input type=text size=40 readonly name='row[]' value='" . htmlspecialchars($serie[0], ENT_QUOTES) . "'><input type='hidden' name='row[]' value='" . htmlspecialchars($serie[1], ENT_QUOTES) . "'</td><td>";
    ?>
    <select name='row[]'>
      <option value="aucun"<?php if ($serie[2] == "aucun"): ?> selected="selected"<?php endif; ?>>aucun</option>
      <option value="fr"<?php if ($serie[2] == "fr"): ?> selected="selected"<?php endif; ?>>fr</option>
      <option value="en"<?php if ($serie[2] == "en"): ?> selected="selected"<?php endif; ?>>en</option>
      <option value="fr,en"<?php if ($serie[2] == "fr,en"): ?> selected="selected"<?php endif; ?>>fr,en</option>
    </select>
    <?php
    echo "</td></tr>\n\r";
  }

  echo "</table><input type='submit' name='update' value='Mettre à jour' /></form>\n\r";
}

尝试一下。

您的问题是,您在提取字段数据后更新了所有内容。

关于php - 刷新页面之前等待 UPDATE 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23958427/

相关文章:

php - html2canvas 和 jsPDF : send generated pdf as email attachment

php - 试图缩短原本很长的查询

mysql - 如何在主表更新时保持表的自连接更新?

php - 使用php导出sqlite表

php - PDO begintransaction 与 MySQL 数据库锁

mysql - java EE Hibernate 列表多对多配置错误

mysql - 从数据源中检索数据库名称

MySQL 动态数据透视表

php - 移动到下一条记录的最佳方式?

php - jQuery 和对象数组