如何使用while循环中的提交按钮更新表单数据

时间:2016-12-22 09:53:21

标签: php mysqli

我想找出mysqli(我只是一个起始脚本)。我创建了以下脚本以从我的数据库中获取3个不同的值。它将它以不同的textareas和输入字段打印在屏幕上。

我想要做的是当我按下更新按钮时它会更新数据库中的记录,用于附加按钮的表单。

任何人都可以给我一些关于如何实现这类目标的提示吗?

<?php
$sqlserver = <SQLSERVER>;
$sqluser = <SQLUSER>;
$sqlpassword = <SQLPASSWORD>;
$sqldatabase = <SQLDATABASE>;

$mysqli = new mysqli($sqlserver, $sqluser, $sqlpassword, $sqldatabase);

$loggedinuserid= "5";

$standaardtekstlabel = $mysqli->query("SELECT standaardtekst_label FROM Standaardteksten WHERE standaardtekst_account_pID='".$loggedinuserid."'");
$standaardtekstnl = $mysqli->query("SELECT standaardtekst_tekst FROM Standaardteksten WHERE standaardtekst_account_pID='".$loggedinuserid."'");
$standaardteksten = $mysqli->query("SELECT standaardtekst_tekst_en FROM Standaardteksten WHERE standaardtekst_account_pID='".$loggedinuserid."'");


while ($NL_Tekst = mysqli_fetch_row($standaardtekstnl))
{
	$label_Tekst = mysqli_fetch_row($standaardtekstlabel);
	$EN_Tekst = mysqli_fetch_row($standaardteksten);
	print '<form action="" method="POST">
			<input type="text" name="standaardtekst_label" value=' . $label_Tekst[0] . '>
			<textarea name="standaardtekst_tekst">' . $NL_Tekst[0] . '</textarea>
			<textarea name="standaardtekst_tekst_en">' . $EN_Tekst[0] . '</textarea>
			<input type="submit" value="update">
			</form>';
}
?>

3 个答案:

答案 0 :(得分:0)

首先,绝对有0.0个理由说明您为了获得的信息而使用3个查询。您可以简单地拥有:$standaardtekst = $mysqli->query("SELECT standaardtekst_label,standaardtekst_tekst,standaardtekst_en FROM Standaardteksten WHERE standaardtekst_account_pID='".$loggedinuserid."'");

现在关于你的问题现在可能已经过时了:

将输入的名称设为:standaardtekst_tekst[]将其保存在数组中。

您还需要在数据库中拥有一个唯一的(自动增量)键,例如:id并将其放在每个表单中。您甚至可以在名称中使用此字段的值,如下所示:standaardtekst_tekst[$id]

答案 1 :(得分:0)

您可以稍微编辑一下代码,如下所示:

<?php
$sqlserver = <SQLSERVER>;
$sqluser = <SQLUSER>;
$sqlpassword = <SQLPASSWORD>;
$sqldatabase = <SQLDATABASE>;

$mysqli = new mysqli($sqlserver, $sqluser, $sqlpassword, $sqldatabase);

$loggedinuserid= "5";

$q = $mysqli->query("SELECT standaardtekst_id, standaardtekst_label, 
                            standaardtekst_tekst, standaard_tekst_tekst_en 
                    FROM Standaardteksten 
                    WHERE standaardtekst_account_pID='".$loggedinuserid."'");


while ($NL_Tekst = mysqli_fetch_row($standaardtekstnl))
{
    $row = mysqli_fetch_row($q);
    ?>
    <form action="" method="POST">
        <input type="text" name="formData[<?= $row['id']; ?>][standaardtekst_label]" value="<?= $row['standaardtekst_label']; ?>">
        <textarea name="formData[<?= $row['id']; ?>][standaardtekst_tekst]"><?= $row['standaardtekst_tekst']; ?></textarea>
            <textarea name="formData[<?= $row['id']; ?>][standaardtekst_tekst_en]"><?= $row['standaardtekst_tekst_en']; ?></textarea>
        <input type="submit" value="update">
    </form>
    <?php
}
?>

我做了什么:

  • 将3个查询转化为单个查询
  • 为每个表单添加一个唯一ID
  • 稍微清理了一下代码

这使您可以执行以下操作:

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['formData'])) {
    foreach ($_POST['formData'] as $id => $value) {
        $stmt = $mysqli->query("UPDATE standaardtekst SET standaardtekst_label='".$value['standaadtekst_label']."', standaardtekst_tekst='".$value['standaardtekst_tekst']."', standaardtekst_tekst_en='".$value['standaardtekst_tekst_en']."' WHERE standaardtekst_id='".$id."'");
    }
}

答案 2 :(得分:0)

Thx为大家提供帮助。现在一切正常。

这是我用来使它工作的脚本: - )

<?php
$sqlserver = <SQLSERVER>;
$sqluser = <SQLUSER>;
$sqlpassword = <SQLPASSWORD>;
$sqldatabase = <SQLDATABASE>;

$mysqli = new mysqli($sqlserver, $sqluser, $sqlpassword, $sqldatabase);

$loggedinuserid= "5";

$result = $mysqli->query("SELECT * FROM Standaardteksten WHERE standaardtekst_account_pID='".$loggedinuserid."'");
$row_s = $result->fetch_assoc();

do{
	print '<form action="" method="POST">
			<input type="text" name="standaardtekst_label" value=' . $row_s['standaardtekst_label'] . '>
			<textarea name="standaardtekst_tekst">' . $row_s['standaardtekst_tekst'] . '</textarea>
			<textarea name="standaardtekst_tekst_en">' . $row_s['standaardtekst_tekst_en'] . '</textarea>
			<input type="text" name="standaardtekst_ID" value="'. $row_s['standaardtekst_ID'] .'"/>
			<input type="submit" value="update">
			</form>';
		
} while($row_s = $result->fetch_assoc());

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['standaardtekst_ID'])) 
{
	$updatesql= sprintf("UPDATE Standaardteksten SET standaardtekst_label='%s', standaardtekst_tekst='%s', standaardtekst_tekst_en='%s' WHERE standaardtekst_ID='%s'",
		$_POST[standaardtekst_label],
		$_POST[standaardtekst_tekst],
		$_POST[standaardtekst_tekst_en],
		$_POST[standaardtekst_ID]
	);
	$mysqli->query($updatesql);
	echo "Het volgende wordt aangepast: <br />", "Label:", $_POST[standaardtekst_label], "<br />" , "NL tekst:", $_POST[standaardtekst_tekst], "<br />" , "EN tekst:", $_POST[standaardtekst_tekst_en];
	echo "<meta http-equiv='refresh' content='1;url=/form.php'>";
}
?>