[PHP] Modification de données sql
gipn56
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
gipn56 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
gipn56 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
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>
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:
- [PHP] Modification de données sql
- Fuite données maif - Guide
- Suivi de modification word - Guide
- Supprimer les données de navigation - Guide
- Logiciel gratuit modification pdf - Guide
- Easy php - Télécharger - Divers Web & Internet
7 réponses
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
Est-ce que dans ton fichier "conf.php" que tu appelles dans ton script "modifications.php", tu as la connexion à la base SQL ?
Yohan
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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é');
}
?>
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é');
}
?>
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
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