Problème d'update php/mysqli

Résolu
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -  
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
d'où sort
$_REQUEST
?
0
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
ne devrais-tu pas ajouter un
else
, pour afficher quelque chose, au
if($res){
?
0
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour
Ton else correspond au isset $_REQUEST.... Pas surle if($res)
De rien.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 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
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
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
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, cela fonctionne
0