Formulaire pour modifier une table php/mysql

Fermé
Ulrich7 - 28 févr. 2011 à 15:21
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 - 28 févr. 2011 à 18:00
Bonjour, voici mon problème :
Je souhaite que l'utilisateur puisse modifier ses informations sur son profil :
J'ai créer deux pages en php:
La première comporte un formulaire, la seconde envois à la bdd "tu remplace ce qui existe déjà par ce qu'a taper l'utilisateur dans le formulaire"
Je n'ai pas de parse error ni rien, mais la table n'est pas modifiée. Voici le code :

modif_profil.php :
<?php
include('config.php')
?> // ça c'est pour me connecter à la bdd
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" media="screen" type="text/css" title="css" href="css.css" />
        <title>Bienvenue sur mon site</title>
    </head>
   
     <body>  

	 <div id="page">
   
   
   <p>
<form action="modif_ok.php" method="post">
        Veuillez remplir ce formulaire pour modifier vos informations:<br><br>
		
			<label for="pays">Pays</label> <input type="text" name="pays" value="<?php if(isset($_POST['pays'])){echo htmlentities($_POST['pays'], ENT_QUOTES, 'UTF-8');} ?>"><br>
      <br>  <input type="submit" value="Envoyer" />
               
    </form>
 </p>             

			   
   </div>
        
		<div id="basdepage">
   
            <!-- Ici ce qui est affiché en bas de la page. -->
  
  </div>
  
        </body>
</html>


modif_ok.php :
<?php
include('config.php')
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" media="screen" type="text/css" title="css" href="css.css" />
        <title>Bienvenue sur mon site</title>
    </head>
   
     <body>  

	 <div id="page">
   
   <p>

   <?php
if(isset($_SESSION['username'])) // je vérifie que l'utilisateur est connecté
{
?>
   
<?php

$pays = $_POST['pays']; // je transforme les modifications du formulaire en variables
$username = $_SESSION['username'];

// lancement de la requête
$sql ='UPDATE users SET pays = "$pays" WHERE username = "$username"';  
 
// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
 
// on ferme la connexion à la base
mysql_close();  
?>

<?php 
}
else
{ 
    echo "Probleme"; // si ya un blem' ce message s'affiche
}
?>

 </p>             
   </div>
        
		<div id="basdepage">
           <!-- Ici ce qui est affiché en bas de la page. -->
  
  </div>
  
        </body>
</html>




A voir également:

3 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
28 févr. 2011 à 17:32
Je pense que le problème vient de ta requête SQL. Tu as écris :
$sql ='UPDATE users SET pays = "$pays" WHERE username = "$username"'; 

et il faudrait
$sql ="UPDATE users SET pays = '".$pays."' WHERE username = '".$username."''; 

Le souci est qu'en PhP, on peut utiliser les simples et les doubles quote pour setter une string. La différence entre la simple quote et la double c'est que lorsqu'il y a des variables dans une string délimitée avec des simple quote, le langage va interpréter la variable pour insérér son contenu dans la string. A contrario, avec les simple quote, c'est écrit "tel-quel", il n'y a pas d'interprétation de la variable.
0
bonsoir,
Mise à part de reformuler ta requête sous cette forme, je ne vois pas pourquoi l'update ne se fait pas ?
$sql="UPDATE users SET pays='$pays' WHERE username='$username'";
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
28 févr. 2011 à 18:00
En reformulant tu devrais avoir la bonne requête, sauf si tes variables ne sont pas settées. Le truc le plus simple pour débugger ca :
echo $sql;

Déjà ça peut te montrer direct ou est le problème ( i.e, variable non settée ), et sinon tu peux l'exécuter dans PhPMyAdmin pour avoir plus d''infos...
0