Problème d'update php/mysqli [Résolu]

Signaler
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021
-
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021
-
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

Messages postés
15063
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 avril 2021
827
bonjour,
d'où sort
$_REQUEST
?
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021

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
Messages postés
15063
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 avril 2021
827 >
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021

ne devrais-tu pas ajouter un
else
, pour afficher quelque chose, au
if($res){
?
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021
>
Messages postés
15063
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 avril 2021

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
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 386 >
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021

Bonjour
Ton else correspond au isset $_REQUEST.... Pas surle if($res)
De rien.
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 386
Bonjour,
Un peu de lecture :
https://www.php.net/manual/fr/mysqli.error.php
https://www.commentcamarche.net/faq/48399-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>

Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 386 >
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021

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 ?
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 386 >
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021

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
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021
>
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021

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.
Messages postés
15063
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 avril 2021
827 >
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021

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);   
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 386 >
Messages postés
15063
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 avril 2021

Bien vu j'avais oublié de modifier cette partie là
Messages postés
94
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
4 avril 2021

Merci beaucoup, cela fonctionne