Php/mysql modification d'un enregistrement via interface web

Saut les amis
Bon voila je suis un débutant en php/mysql, j’ai créer un BD et je suis entrain de faire les ajouts et les suppressions
à travers une interface web en utilisant le langage php, mon problème c’est les mise à jour des enregistrement sur la BD,
j’utilise un formulaire pour afficher un enregistrement récupéré de la BD, puis je modifie les champs du formulaire que je désire mettre à jours,
une fois je valide le traitement s’effectue le plus normalement , c’est-à-dire aucun message d’erreur concernant la syntaxe de php ou de sql ,
au contraire j’ai le message « modification effectué » comme je l’ai prévu au niveau du code php.
En cherchant au niveau de la BD si la modification a u lieu je trouve que non et que l’enregistrement a gardé la valeur ancienne.
Ou est l’erreur je ne sais pas, veuillez m’aider.
A+:/

Salut,

Peux-tu nous montrer le morceau de code qui te permets de mettre à jour ta BDD ?

Hello,

Alors, moi j’ai un principe simple :
Toute opération d’écriture dans mes bases de données se fait par l’intermédiaire de procédures stockées que j’appelle dans mon code (l’interface pdo est très simple à utiliser pour ce genre de choses).

Je me ferais un plaisir de t’expliquer plus en détail :wink:
Edité le 31/01/2008 à 14:50

-desole j’avai un probleme de connexion, mais je suis de retoure.
-bon voila le code pour affiche l’enregistrement que je veut modifier(j’ai laissé que l’ecentiel):

mysql_connect(‘127.0.0.1’,‘root’,’’) or die(‘error1’);
mysql_select_db(homolg) or die(‘error2’);
$resultat=mysql_query(“select * from agremgaz where id=”.$_GET[‘id’].";");
while($row=mysql_fetch_array($resultat))
{
echo “

”;
echo “”;
echo “”;
echo “”;
echo “”;
echo “”;
  • et la le code pour modifier l’enregistrement:

mysql_connect(‘127.0.0.1’,‘root’,’’) or die(‘error1’);
mysql_select_db(homolg) or die(‘error2’);
mysql_query(“UPDATE agremgaz SET N°Agrement = '”.$_GET[‘agrem’]."’ WHERE agremgaz.id =".$_GET[‘id’].";") or die (‘error3’);
header(‘location:agremgaz.php’);
Edité le 03/02/2008 à 14:11

”;
echo “N°Agrement”;
echo “
”;
echo “”;
echo “

Bon alors :
1/ il te manque une balise avec “…” action à effectuer (url le la page qui effectue le traitement de ton formulaire) .
2/ pour ton update : $_GET[‘agrem’] : ça va poser problème à priori : si c’est la valeur de ton input agrem que tu veux reccuperer, tu dois utiliser $_POST[‘agrem’]
Edité le 03/02/2008 à 16:39

salut
1-la balise existe avec l’url de la page qui effectue le traitement, et le traitement s’efectue normalement comme je voules dit , le pronleme c’est apres le traitement, je trouve que rien n’a changer.
2- pouvez vous m’expliquer la difference entre POST et GET.
merci

hello,

$_POST et $_GET sont les deux seules variables qui te permettent de transmettre une donnée d’une page à une autre.

La variable $_POST fait référence à une donnée transmise par l’intermédiaire un formulaire
La variable $_GET fait référence à une donnée transmise par l’intermédiaire de l’url : ça doit être la cas de ton id, elle doit apparaitre dans ton url donc tu peux y faire référence par $_GET[‘id’].

Tout simplement !
Edité le 04/02/2008 à 20:27

Salut, pour etre sur que ta requete s’effectue correctement, affiche la avec un echo. C’est la meilleure methode de debug pour php :paf:
Donc a la place de

mysql_query("UPDATE `agremgaz` SET `N°Agrement` = '".$_GET['agrem']."' WHERE `agremgaz`.`id` =".$_GET['id'].";") or die ('error3');

met ca:


$requete = "UPDATE `agremgaz` SET `N°Agrement` = '".$_POST['agrem']."' WHERE `agremgaz`.`id` =".$_POST['id'].";";
echo $requete;
mysql_query($requete);

Essaye ce que tu trouve directement sur ta base pour voir si la syntaxe sql est bonne.
Souvent (en tous cas pour moi) des erreurs surviennent dans mes requetes car ils manquent des espaces, ce qui est pas facile a voir quand on concatene.
Sinon, pour info, pour voir si un update ou un delete a fait qq chose, tu as mysql_affected_rows();

Bonne chance

Je pense plutôt :


$requete = "UPDATE `agremgaz` SET `N°Agrement` = '".$_POST['agrem']."' WHERE `agremgaz`.`id` =".$_GET['id'].";";

$_GET[‘id’] au lieu de $_POST[‘id’]; est plus approprié, je pense !

+1 avec la mouche, même si l’ensemble est pas très sécurisé, normalement faudrait repasser en (int) le tout ^^

EDIT : le transtypage, je cherchais le nom exact ^^
Edité le 05/02/2008 à 09:53

Ou utiliser PDO et les requêtes préparées

PDO ?

EDIt : PHP Data Objects ^^
Edité le 05/02/2008 à 10:57

Tout a fait, c’est juste que tu lui conseillais de passer par POST, alors je me suis dit qu’il l’avait applique’ ^ ^)

:etonne2: heu, vous parler de quoi là

PDO, cher ami !

PDO : une excellente interface php qui te permet de communiquer avec n’importe quelle base de données, requeter, lancer des fonctions et procédures stockées, catcher des exceptions, préparer des requêtes et les executer ulterieurement…

Sécurité et efficacité garanties !

Pour info !