[PHP] Modification de données sql

Fermé
gipn56 Messages postés 47 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 24 août 2009 - 13 mai 2007 à 22:06
gipn56 Messages postés 47 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 24 août 2009 - 14 mai 2007 à 18:45
Bonjour,

J'ai un gros problème et cet assez urgent puisque c'est pour mon bac a la fin du mois :(

Alors voila j'ai fait une page permettant aux utilisateurs de pouvoir modifiér leurs informations personnelles qu'ils ont entrées lors de leur inscription (voir script : monprofil.php)

Le probleme que j'ai c'est lors de la modification de ces données. Quand l'utilisateur valide un message lui affiche que ses infos ont bin été modifiées mais en fait rien ne se modifie dans la base de données :( (voir script : modifications.php)


merci d'avance pour votre aide (les 2 scripts sont juste en dessous)



:::modifications.php :::


<?
include('conf.php');
$newlogin= $_POST['newlogin'];
$newpassword= $_POST['newpassword'];
$newmail= $_POST['newmail'];
$newnom= $_POST['newnom'];
$newprenom= $_POST['newprenom'];
$newadresse= $_POST['newadresse'];
$newville= $_POST['newville'];
$newcodepostal= $_POST['newcodepostal'];

//on change les données de la base de données
$query2 = "update membres_tbl set login = '$newlogin', password = '$newpassword', mail = '$newmail', nom = '$newnom', prenom = '$newprenom', adresse = '$newadresse', ville = '$newville', codepostal= '$codepostal'";
$result2 = mysql_query($query2) or die ("erreur");

if ($result2 <> 0){
echo" le modele a été modifié";}

?>


:::monprofil.php:::(j'ai sélectionné que la partie du formulaire)


<form action="modifications.php" method='post' onSubmit="return(VerifForm(this))">

<?
// information pour la connection à le DB
$host = 'sql.free.fr';
$user = 'gipn56';
$pass = '1iGsdFdh';
$db = 'gipn56';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$sql=("SELECT * FROM membres_tbl WHERE login='".$login."'");
$result = mysql_query($sql,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


// si on a récupéré un résultat on l'affiche.
if($total) {
while($row = mysql_fetch_array($result)) {
echo '<div align="center"><table border="1px" cellpadding="0" cellspacing="0"><tr><td width="160">Pseudo :</td><td> <input type="text" value="'.$row["login"].'" name="newlogin"></td>';
echo '<tr><td>Mot De Passe :</td> <td><input type="text" value="'.$row["password"].'" name="newpassword"></td></tr>';
echo '<tr><td>Adresse Email :</td> <td><input type="text" value="'.$row["mail"].'" name="newmail"></td></tr>';
echo '<tr><td>Nom :</td><td> <input type="text" value="'.$row["nom"].'" name="newnom"></td></tr>';
echo '<tr><td>Prenom :</td> <td><input type="text" value="'.$row["prenom"].'" name="newprenom"></td></tr>';
echo '<tr><td>Adresse :</td> <td><input type="text" value="'.$row["adresse"].'" name="newadresse"></td></tr>';
echo '<tr><td>Ville :</td> <td><input type="text" value="'.$row["ville"].'" name="newville"></td></tr>';
echo '<tr><td>Code Postal :</td> <td><input type="text" bgcolor="#CCCCCC" value="'.$row["codepostal"].'" name="newcodepostal"></td></tr></table>';
echo '<br><input type="submit" name="Submit" value="Modifier">';
}
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?></form>
A voir également:

7 réponses

Yohan85 Messages postés 280 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 16 mai 2011 25
13 mai 2007 à 22:21
Salut !

Est-ce que dans ton fichier "conf.php" que tu appelles dans ton script "modifications.php", tu as la connexion à la base SQL ?

Yohan
0
gipn56 Messages postés 47 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 24 août 2009 1
14 mai 2007 à 08:24
oui j'ai bien la connexion a la base.
0
Yohan85 Messages postés 280 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 16 mai 2011 25
14 mai 2007 à 08:38
Salut !

Voici ce que je metterait a la fin de ton modifications.php

//on change les données de la base de données
$query2 = "update membres_tbl set login = '$newlogin', password = '$newpassword', mail = '$newmail', nom = '$newnom', prenom = '$newprenom', adresse = '$newadresse', ville = '$newville', codepostal= '$codepostal'";

if (!mysql_query($query2))
{
echo ('La modification à échouée : '.mysql_error());
}
else
{
echo (' le modele a été modifié');
}
?>

Et autre chose, dans ta requete SQL, tu n'a pas de clause WHERE pour sélectionner l'entrée SQL à modifier.

Yohan
0
saisas Messages postés 21 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 13 juin 2007 5
14 mai 2007 à 10:48
Bonjour,

je confirme qu'il te manque une clause WHERE dans ton code pour modifier le bon enregistrement.

En ce qui concerne ta requête, je pense qu'elle ne s'exécute pas parce que tu dois avoir une ' dans les données mises à jour, ce qui rend invalide le code SQL.

Un conseil : pour tes tests, affiches l'ordre SQL que tu as généré, et si cela ne fonctionne pas, teste ton ordre SQL avec MySQL et modifies le jusqu'à ce qu'il passe.

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gipn56 Messages postés 47 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 24 août 2009 1
14 mai 2007 à 13:42
J'ai suivi ce que vous m'avez mais il me reste un dernier probleme.

si je ne met pas WHERE login = '$login' ca me modifie les données de tous les comptes.

Mais quand je la met ca modifie plus rien.

merci pour votre aide

je vous donne mon nouveau script modifications.php :

<?
include('conf.php');
$newlogin= $_POST['newlogin'];
$newpassword= $_POST['newpassword'];
$newmail= $_POST['newmail'];
$newnom= $_POST['newnom'];
$newprenom= $_POST['newprenom'];
$newadresse= $_POST['newadresse'];
$newville= $_POST['newville'];
$newcodepostal= $_POST['newcodepostal'];

//on change les données de la base de données
$query2 = "update membres_tbl set login = '$newlogin', password = '$newpassword', mail = '$newmail', nom = '$newnom', prenom = '$newprenom', adresse = '$newadresse', ville = '$newville', codepostal= '$newcodepostal'";

if (!mysql_query($query2))
{
echo ('La modification à échouée : '.mysql_error());
}
else
{
echo (' le modele a été modifié');
}
?>
0
Yohan85 Messages postés 280 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 16 mai 2011 25
14 mai 2007 à 17:39
Salut !

Vérifie que ta variable $login est bonne, par exemple, dans ton formulaire tu met :

<input type="hidden" name="old_login" value="'.$row["login"].'">

Puis dans ta requete SQL tu met " WHERE login = "'.$_POST['old_login'].'"

Essaye ca et ta requete devrait marcher que pour le login demandé ;)

Yohan
0
gipn56 Messages postés 47 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 24 août 2009 1
14 mai 2007 à 18:45
Merci beaucoup maintenant tout marche parfaitement
0