首页 > 解决方案 > 使用 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>

标签: phpsql

解决方案


您的代码有两个表单元素。

第一个表单从第 93 行开始处理,使用下面的 if 语句:

if (isset($_POST['valider']) && $_POST['NumLicence'] != "")

第二种形式在第 132 行处理,以 if 语句开头,如下所示:

if (isset($_POST['valider2']))

这里的问题是,您已将第二个 if 语句放在第一个 if 语句中。由于单击两个名称不同的按钮不能同时触发两个表单,因此您的代码将永远不会到达第二个 if 语句。

因此,您的 MySQL 更新语句将永远不会被处理。查看并更新第二个 if 语句的位置。谢谢


推荐阅读