Problème d'update php/mysqli

Résolu
Bonjour,

Pourquoi via ce code, quand je modifie les cases de mon formulaire rien ne change svp ?

Le select fonctionne, mais pas l'update.

Et pourquoi cela n'affiche pas le message suivant svp ?

"<div class='sucess'>
             <h3>Votre profil a été modifié avec succés.</h3>
             <p>Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
       </div>"


Merci d'avance.

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="../style.css" />
</head>
<body>
<?php
require('../config.php');
session_start();
  // Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion
  if(!isset($_SESSION["username"])){
    header("Location: ../login.php");
    exit(); 
  }
  
$sqlpr = "SELECT * FROM `users` WHERE `username` = '".$_SESSION['username']."'";
$requetepr = mysqli_query($conn,$sqlpr);
$resultpr = mysqli_fetch_array($requetepr);

if (isset($_REQUEST['username'], $_REQUEST['name'], $_REQUEST['email'])){
  // récupérer le nom d'utilisateur 
  $username = stripslashes($_REQUEST['username']);
  $username = mysqli_real_escape_string($conn, $username); 
  // récupérer le nom complèt de l'utilisateur 
  $name = stripslashes($_REQUEST['name']);
  $name = mysqli_real_escape_string($conn, $name); 
  // récupérer l'email 
  $email = stripslashes($_REQUEST['email']);
  $email = mysqli_real_escape_string($conn, $email);
  
  $result = mysqli_query($conn,$query) or die(mysql_error());
  
    $user = mysqli_fetch_assoc($result);
	
    $query = "UPDATE `users` SET `username`='$username', `name`='$name', `email`='$email' WHERE `username`='".$_SESSION['username']."'";
		  
    $res = mysqli_query($conn, $query);

    if($res){
       echo "<div class='sucess'>
             <h3>Votre profil a été modifié avec succés.</h3>
             <p>Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
       </div>";
    }
}else{
?>
<form class="box" action="" method="post">
  <h1 class="box-logo box-title">
    <a href="http://lc-sd.be/visa/">Visa Lc-sd.be</a>
  </h1>
    <h1 class="box-title">Modification de votre profil</h1>
  <input type="text" class="box-input" name="username" value="<?php echo $resultpr['username']; ?>" disabled="disabled" />
  
  <input type="text" class="box-input" name="name" value="<?php echo $resultpr['name']; ?>" />
  
  <input type="text" class="box-input" name="email" value="<?php echo $resultpr['email']; ?>" />
  
  <input type="submit" name="submit" value="Modifier" class="box-button" />
  <p class="box-index">Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
</form>
<?php } ?>
</body>
</html>


Configuration: Windows / Chrome 89.0.4389.90

3 réponses

  1. Contributeur
    bonjour,
    d'où sort
    $_REQUEST
    ?
    1. Bonjour, j’ai vu dans un tutoriel qu’on pouvait récupérer les variables de mon formulaire comme cela.

      Et mon formulaire d’inscription fonctionne avec cela via ma requête insert. Et celui-ci fonctionne.

      Bien à vous
    2. Contributeur
      @Tzmagnumne devrais-tu pas ajouter un
      else
      , pour afficher quelque chose, au
      if($res){
      ?
    3. @yg_beSi tu relis bien le code tu vas voir que le
      else
      est bien présent :

         if($res){
             echo "<div class='sucess'>
                   <h3>Votre profil a été modifié avec succés.</h3>
                   <p>Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
             </div>";
          }
      }else{
      ?>
      <form class="box" action="" method="post">
        <h1 class="box-logo box-title">
          <a href="http://lc-sd.be/visa/">Visa Lc-sd.be</a>
        </h1>
          <h1 class="box-title">Modification de votre profil</h1>
        <input type="text" class="box-input" name="username" value="<?php echo $resultpr['username']; ?>" disabled="disabled" />
        
        <input type="text" class="box-input" name="name" value="<?php echo $resultpr['name']; ?>" />
        
        <input type="text" class="box-input" name="email" value="<?php echo $resultpr['email']; ?>" />
        
        <input type="submit" name="submit" value="Modifier" class="box-button" />
        <p class="box-index">Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
      </form>
      <?php } ?>


      Merci quand même
    4. Modérateur
      @TzmagnumBonjour
      Ton else correspond au isset $_REQUEST.... Pas surle if($res)
      De rien.
  2. Modérateur
    Bonjour,
    Un peu de lecture :
    https://www.php.net/manual/fr/mysqli.error.php
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    Ce qui donnerait un truc du genre :

    <?php
    // Démarrage des session ( à mettre AU TOUT DEBUT DES FICHIERS AVANT TOUT LE RESTE )
    session_start();
    
    //affichage des erreurs php
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    require('../config.php');
    
    
     // Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion
      if(!isset($_SESSION["username"])){
        header("Location: ../login.php");
        exit(); 
      }
    
    
    // Récupération propre des variables AVANT de les utiliser
    $username = !empty($_SESSION["username"]) ? $_SESSION["username"]: NULL;
    $form_username = !empty($_POST['username'] ) ? $_POST['username']: NULL;
    $form_name= !empty($_POST['name'] ) ? $_POST['name']: NULL;
    $form_email = !empty($_POST['email'] ) ? $_POST['email']: NULL;
      
    $sqlpr = "SELECT * FROM `users` WHERE `username` = '".$username."'";
    if(! $requetepr = mysqli_query($conn,$sqlpr)){
      printf("Erreur dans la requete : %s\n", $mysqli->error);
      exit;
    }
    $resultpr = mysqli_fetch_array($requetepr);
    
    if($form_name && $form_username && $form_email ){
      $username = mysqli_real_escape_string($conn, $username); 
      $name = mysqli_real_escape_string($conn, $name); 
      $email = mysqli_real_escape_string($conn, $email);
      
      $query = "UPDATE `users` SET `username`='$form_username', `name`='$form_name', `email`='$form_email' WHERE `username`='".$username."'";	  
      if(! $res = mysqli_query($conn, $query)){
         printf("Erreur dans la requete : %s\n", $mysqli->error);
         exit;
      }
     
       
    }
    
    <!DOCTYPE html>
    <html>
      <head>
        <link rel="stylesheet" href="../style.css" />
        <meta charset="utf-8">
      </head>
      <body>
        <?php
        if($form_name && $form_username && $form_email ){
            if($res){
               echo "<div class='sucess'>
                     <h3>Votre profil a été modifié avec succés.</h3>
                     <p>Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
               </div>";
            }
        }else{
        ?>
        <form class="box" action="" method="post">
          <h1 class="box-logo box-title">
            <a href="http://lc-sd.be/visa/">Visa Lc-sd.be</a>
          </h1>
            <h1 class="box-title">Modification de votre profil</h1>
          <input type="text" class="box-input" name="username" value="<?php echo $resultpr['username']; ?>" disabled="disabled" />
          
          <input type="text" class="box-input" name="name" value="<?php echo $resultpr['name']; ?>" />
          
          <input type="text" class="box-input" name="email" value="<?php echo $resultpr['email']; ?>" />
          
          <input type="submit" name="submit" value="Modifier" class="box-button" />
          <p class="box-index">Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
        </form>
        <?php } ?>
      </body>
    </html>
    

    1. Bonjour,

      Merci, j'ai testé.

      Mais malgré tout malheureusement l'update ne se fait pas, je ne comprends pas même en lisant les 2 pages que tu m'as donné, pourquoi cela ne fonctionne pas et il n'y a aucun code erreur.

      Cela ré-affiche simplement le formulaire après avoir par exemple changer le nom et avoir cliquer sur "modifier"

      Merci d'avance.

      <?php
      // Démarrage des session ( à mettre AU TOUT DEBUT DES FICHIERS AVANT TOUT LE RESTE )
      session_start();
      
      //affichage des erreurs php
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
      
      require('../config.php');
      
      
       // Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion
        if(!isset($_SESSION["username"])){
          header("Location: ../login.php");
          exit(); 
        }
      
      
      // Récupération propre des variables AVANT de les utiliser
      $username = !empty($_SESSION["username"]) ? $_SESSION["username"]: NULL;
      $form_username = !empty($_POST['username'] ) ? $_POST['username']: NULL;
      $form_name= !empty($_POST['name'] ) ? $_POST['name']: NULL;
      $form_email = !empty($_POST['email'] ) ? $_POST['email']: NULL;
        
      $sqlpr = "SELECT * FROM `users` WHERE `username` = '".$username."'";
      if(! $requetepr = mysqli_query($conn,$sqlpr)){
        printf("Erreur dans la requete : %s\n", $mysqli->error);
        exit;
      }
      $resultpr = mysqli_fetch_array($requetepr);
      
      if($form_name && $form_username && $form_email ){
        $username = mysqli_real_escape_string($conn, $username); 
        $name = mysqli_real_escape_string($conn, $name); 
        $email = mysqli_real_escape_string($conn, $email);
        
        $query = "UPDATE `users` SET `username`='$form_username', `name`='$form_name', `email`='$form_email' WHERE `username`='".$username."'";   
        if(! $res = mysqli_query($conn, $query)){
           printf("Erreur dans la requete : %s\n", $mysqli->error);
           exit;
        }
       
         
      }
      ?>
      <!DOCTYPE html>
      <html>
        <head>
          <link rel="stylesheet" href="../style.css" />
          <meta charset="utf-8">
        </head>
        <body>
          <?php
          if($form_name && $form_username && $form_email ){
              if($res){
                 echo "<div class='sucess'>
                       <h3>Votre profil a été modifié avec succés.</h3>
                       <p>Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
                 </div>";
              }
          }else{
          ?>
          <form class="box" action="" method="post">
            <h1 class="box-logo box-title">
              <a href="http://lc-sd.be/visa/">Visa Lc-sd.be</a>
            </h1>
              <h1 class="box-title">Modification de votre profil</h1>
            <input type="text" class="box-input" name="username" value="<?php echo $resultpr['username']; ?>" disabled="disabled" />
            
            <input type="text" class="box-input" name="name" value="<?php echo $resultpr['name']; ?>" />
            
            <input type="text" class="box-input" name="email" value="<?php echo $resultpr['email']; ?>" />
            
            <input type="submit" name="submit" value="Modifier" class="box-button" />
            <p class="box-index">Cliquez <a href='home.php'>ici</a> pour retourner à la page d'accueil</p>
          </form>
          <?php } ?>
        </body>
      </html>
      
    2. Modérateur
      @TzmagnumTu travailles sur un serveur ou en' Local ?
      Quelle est l'URL qui est écrite dans ton navigateur lorsque tu submit le formulaire ?

      Peux tu ajouter, au debut du script, un var_dump($_POST);. et nous dirr ce que ça t'affiche ?
    3. @jordane45Bonjour,

      Avec readonly et « var_dump($_POST) » au début, cela fonctionne, mais cela m’affiche les erreurs suivantes :


      array(4) { ["username"]=> string(5) "Admin" ["name"]=> string(19) "Tziolopoulos Kevin1" ["email"]=> string(18) "tzmagnum@gmail.com" ["submit"]=> string(8) "Modifier" }
      Notice: Undefined variable: name in /var/www/visa/admin/profil_admin.php on line 36

      Notice: Undefined variable: email in /var/www/visa/admin/profil_admin.php on line 37


      C’est un serveur dédier Ovh.

      Et l’url lorsque je fais le submit, c’est la même que celle du formulaire : http://lc-sd.be/visa/login.php

      Merci d’avance.
    4. Contributeur
      @Tzmagnumpeux-être souhaites-tu plutôt ceci:
       $form_username = mysqli_real_escape_string($conn, $form_username); 
        $form_name = mysqli_real_escape_string($conn, $form_name); 
        $form_email = mysqli_real_escape_string($conn, $form_email);