Problème d'update php/mysqli

Résolu/Fermé
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022 - 30 mars 2021 à 01:26
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022 - 4 avril 2021 à 12:28
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 23249 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 octobre 2024 Ambassadeur 1 541
1 avril 2021 à 23:55
bonjour,
d'où sort
$_REQUEST
?
0
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
Modifié le 2 avril 2021 à 00:14
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 23249 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 octobre 2024 1 541 > Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
2 avril 2021 à 11:03
ne devrais-tu pas ajouter un
else
, pour afficher quelque chose, au
if($res){
?
0
Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022 > yg_be Messages postés 23249 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 octobre 2024
3 avril 2021 à 02:59
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 38249 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 octobre 2024 4 691 > Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
3 avril 2021 à 09:46
Bonjour
Ton else correspond au isset $_REQUEST.... Pas surle if($res)
De rien.
0
jordane45 Messages postés 38249 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 octobre 2024 4 691
3 avril 2021 à 10:44
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 dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
Modifié le 4 avril 2021 à 02:08
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 38249 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 octobre 2024 4 691 > Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
4 avril 2021 à 08:25
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 38249 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 octobre 2024 4 691 > jordane45 Messages postés 38249 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 octobre 2024
4 avril 2021 à 08:50
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 dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022 > jordane45 Messages postés 38249 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 octobre 2024
4 avril 2021 à 11:32
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 23249 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 octobre 2024 1 541 > Tzmagnum Messages postés 126 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
4 avril 2021 à 11:42
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 dimanche 9 août 2009 Statut Membre Dernière intervention 10 mai 2022
4 avril 2021 à 12:28
Merci beaucoup, cela fonctionne
0