Problème d'update php/mysqli

Résolu
Tzmagnum Messages postés 132 Statut Membre -  
Tzmagnum Messages postés 132 Statut Membre -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    d'où sort
    $_REQUEST
    ?
    0
    1. Tzmagnum Messages postés 132 Statut Membre
       
      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
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Tzmagnum Messages postés 132 Statut Membre
         
        ne devrais-tu pas ajouter un
        else
        , pour afficher quelque chose, au
        if($res){
        ?
        0
      2. Tzmagnum Messages postés 132 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Si 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
        0
      3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Tzmagnum Messages postés 132 Statut Membre
         
        Bonjour
        Ton else correspond au isset $_REQUEST.... Pas surle if($res)
        De rien.
        0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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>
    

    0
    1. Tzmagnum Messages postés 132 Statut Membre
       
      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>
      
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Tzmagnum Messages postés 132 Statut Membre
       
      Tu 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 ?
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Ah.. je viens de voir...
      Enleve le disabled="disabled" ... et utilise, à la place, le readonly
      https://www.w3schools.com/tags/att_input_readonly.asp
      Sinon, le username n'est jamais envoyé dans le form
      0
    4. Tzmagnum Messages postés 132 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Bonjour,

      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.
      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Tzmagnum Messages postés 132 Statut Membre
       
      peux-ê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);   
      0
  3. Tzmagnum Messages postés 132 Statut Membre
     
    Merci beaucoup, cela fonctionne
    0