我正在使用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>
答案 0 :(得分:0)
您的代码具有两个表单元素。
从第93行开始,使用以下if语句触发第一个表单的处理:
if (isset($_POST['valider']) && $_POST['NumLicence'] != "")
第二种形式在第132行以if语句开始处理,如下所示:
if (isset($_POST['valider2']))
这里的问题是,您已将第二个if语句放入第一个if语句中。由于单击两个具有不同名称的按钮无法同时触发两种形式,因此第二条if语句将永远不会到达您的代码中。
因此,您的MySQL更新语句将永远不会被处理。看看并更新第二个if语句的位置。谢谢