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
A voir également:

3 réponses

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