php - 使用 php 更新 sql 数据库的问题
问题描述
我正在使用 php 来更新 sql 数据库。这里我有一个名为“valider2”的按钮
input type="submit" value="Valider" name="valider2">
当用户点击它时,它被提交并应该处理更新请求,当它直接在数据库中使用时有效,但与此 php 代码一起使用时无效。没有返回错误,但没有任何变化,知道为什么吗?我怀疑按钮没有发送正确的信号来执行命令,但我不知道为什么它不起作用。
if (isset($_POST['valider2'])) {
$req2 = $linkpdo->prepare('UPDATE Joueur SET Prenom = :Prenom, Nom = :Nom, Taille = :Taille, Poids = :Poids, PostePrefere = :PostePrefere, Notes = :Notes, Statut = :Statut WHERE NumLicence = :NumLicence');
$req2->execute(array('Prenom' => $Prenom, 'Nom' => $Nom, 'Taille' => $Taille, 'Poids'=> $Poids, 'PostePrefere' => $PostePrefere, 'Notes' => $Notes, 'Statut' => $Statut, 'NumLicence' => $NumLicence));
}
提前感谢您的帮助,这是页面的完整代码,并不完美,但在这里我只专注于让这个请求正常工作。很抱歉法语中的单词量很大,但它们不应妨碍您理解代码的工作原理。
<!doctype HTML>
<!-- http://r-info-nacre/~mnm2788a/Site_PHP/index.php -->
<html lang="fr" class="basic">
<head>
<?php header('Content-Type: text/html; charset=utf-8'); ?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="index.css"/>
<title>Deutscher Fussball-Bund</title>
<script
src="https://code.jquery.com/jquery-3.3.1.js">
</script>
<script>
$(function(){
$("#header").load("header.html");
$("#footer").load("footer.html");
});
</script>
</head>
<body>
<div id="header"></div>
<center>
<div class="buttons">
<ul>
<li><a href="./index.php">Accueil</a></li>
<li><a href="./AjouterJoueur.php">Ajouter un joueur</a></li>
<li><a href="./AjouterMatch.php">Ajouter un match</a></li>
<li><a href="./Affecter.php">Affecter des joueurs</a></li>
<li><a class = "active" href="./ModifierJoueur.php">Modifier un joueur</a></li>
<li><a href="./ModifierMatch.php">Modifier un match</a></li>
<li><a href="./SupprimerJoueur.php">Supprimer un joueur</a></li>
<li><a href="./SupprimerMatch.php">Supprimer un match</a></li>
</ul>
</div>
</center>
<center>
<div class="images_index">
<img class="container" src="Images/Deutscher.png" width="45%" height="45%">
</div>
</center>
<div id="footer"></div>
<center>
<!-- Formulaire pour saisir le numlicence du joueur à modifier -->
<form class = "form" method="post" action="ModifierJoueur.php">
<p class = "p_margin_bottom">Entrez le numéro de licence du joueur à modifier</p>
<center>
<label><input type="text" name="NumLicence" class="input_form" placeholder="Numéro de Licence"><br></label>
<input type="reset" value="Remise à zero" name = "raz">
<input type="submit" value="Valider" name="valider">
</center>
</form>
<!-- Formulaire pour modifier les champs -->
</center>
<div class="php">
<?php
session_start();
if ($_SESSION['id'] != "ReinhardGrindel" && $_SESSION['pwd'] != "RG") {
header('Location: identification.php');
}
$login = "HiddenForObviousReasons";
$mdp = "HiddenForObviousReasons";
$server = "HiddenForObviousReasons";
$db = "HiddenForObviousReasons";
// CONNEXION
try {
$linkpdo = new PDO("mysql:host=$server;dbname=$db", $login, $mdp);
}
catch (Exception $e) {
echo "<br>Connexion à la base de données : Echec.";
die('Erreror: '. $e -> getMessage());
}
$link = mysqli_connect($server, $login, $mdp, $db) or die("Error ".mysqli_error($link));
if (mysqli_connect_errno()) {
print("Connect failed: \n". mysqli_connect_error());
exit();
}
// APPUI DU BOUTON DE SELECTION DE L'ID MATCH
if (isset($_POST['valider']) && $_POST['NumLicence'] != "") {
$NumLicence = $_POST['NumLicence'];
// On sélectionne les valeurs déjà placées pour le joueur
$req1 = "SELECT * FROM Joueur WHERE NumLicence = $NumLicence";
///Execution de la requête sur le serveur
if(!$resquery=mysqli_query($link,$req1) ){
die("Error:".mysqli_errno($link).":".mysqli_error($link));
} else {
$row = mysqli_fetch_assoc($resquery);
$Prenom = $row['Prenom'];
$Nom = $row['Nom'];
$Taille = $row['Taille'];
$Poids = $row['Poids'];
$PostePrefere = $row['PostePrefere'];
$Notes = $row['Notes'];
$Statut = $row['Statut'];
}
?>
<center>
<form class = "form" method="post">
<p class = "p_margin_bottom">Veuillez entrer les modifications correspondantes au joueur</p>
<center>
<label><input value="<?php echo $Prenom; ?>" type="text" name="Prenom" class="input_form"><br></label>
<label><input value="<?php echo $Nom; ?>" type="text" name="Nom" class="input_form"><br></label>
<label><input value="<?php echo $Taille; ?>" type="number" name="Taille" class="input_form"><br></label>
<label><input value="<?php echo $Poids; ?>" type="number" name="Poids" class="input_form"><br></label>
<label><input value="<?php echo $PostePrefere; ?>" type="text" name="PostePrefere" class="input_form"><br></label>
<label><input value="<?php echo $Notes; ?>" type="text" name="Notes" class="input_form"><br></label>
<label><input value="<?php echo $Statut; ?>" type="text" name="Statut" class="input_form"><br></label>
<input type="submit" value="Valider" name="valider2">
</center>
</form>
</center>
<?php
if (isset($_POST['valider2'])) {
$req2 = $linkpdo->prepare('UPDATE Joueur SET Prenom = :Prenom, Nom = :Nom, Taille = :Taille, Poids = :Poids, PostePrefere = :PostePrefere, Notes = :Notes, Statut = :Statut WHERE NumLicence = :NumLicence');
$req2->execute(array('Prenom' => $Prenom, 'Nom' => $Nom, 'Taille' => $Taille, 'Poids'=> $Poids, 'PostePrefere' => $PostePrefere, 'Notes' => $Notes, 'Statut' => $Statut, 'NumLicence' => $NumLicence));
}
}
?>
<br><br><br><br><br><br><br><br>
</div>
</body>
</html>
解决方案
您的代码有两个表单元素。
第一个表单从第 93 行开始处理,使用下面的 if 语句:
if (isset($_POST['valider']) && $_POST['NumLicence'] != "")
第二种形式在第 132 行处理,以 if 语句开头,如下所示:
if (isset($_POST['valider2']))
这里的问题是,您已将第二个 if 语句放在第一个 if 语句中。由于单击两个名称不同的按钮不能同时触发两个表单,因此您的代码将永远不会到达第二个 if 语句。
因此,您的 MySQL 更新语句将永远不会被处理。查看并更新第二个 if 语句的位置。谢谢
推荐阅读
- c - How can i pick a number from an array in C?
- ios - 设置服务器以接收 App Store 通知
- css - 平衡响应式浏览器的网格项大小和中心对齐
- javascript - 如何通过回复池中的回复让我的不和谐机器人回复特定消息?
- javascript - 如何在表单提交时禁用重定向到表单操作属性中指定的 url
- python-3.x - 集成 numba 和 Rtree.nearest()
- angular - 角度材料 .textarea 不更新跟随变量
- docker - 如何使用 traefik 段将请求路由到同一容器正确端口上的正确服务
- python-sphinx - Sphinx 自动摘要不使用目录树中的标签
- python - 我正在尝试更改使用 Selenium 下载的文件的默认文件夹