Oui je pense que c'est ca et que ca sera le plus simple !
Oui je pense que c'est ca et que ca sera le plus simple !
Alors j'ai testé avec le GET comme ça
Bon les données s'affichent bien puisque le GET récupère la valeur ['id'] définie sur mon index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11echo "<p align=left> :: fiche demande [".$_GET['id']."]</p>"; $sql = "SELECT * FROM pdv WHERE idpdv= '".$_GET['id']."'"; $resultat = mysql_query ($sql); $pdv = mysql_fetch_array ($resultat); ?> <form action="pdv_edit.php" method="post"> <input type="hidden" name="enregistre" value="oui" /> <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" />
Quand je clique sur "Enregistrer", j'ai le message "Mise à jour effectuée" et la BDD s'update bien mais les données POSTées ne s'affichent plus sur le formulaire (tous les champs sont vides).
Encore un truc à changer ?
Merci pour ton aide
Montre le code responsable d'afficher les données postées pour voir! Comment est ce que se passe la mise a jour de la base de données?
Alors je poste tout le code, car je ne suis pas sûr de m'y retrouver moi-même... si tu peux y jeter un coup d'oeil; je te remercieEnvoyé par koopajah
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 <?php include("identification.inc.php"); include("variables.inc.php"); $liendb = mysql_connect ($bddserver, $bddlogin, $bddpassword); mysql_select_db ($bdd); if ($_POST['action'] == "maj") { if (empty($_POST['nom'])) die ("erreur"); $sql = "UPDATE pdv SET date_demande = '".$_POST['date_demande']."', nom = '".$_POST['nom']."', prenom = '".$_POST['prenom']."', email = '".$_POST['email']."', ville = '".$_POST['ville']."', cp = '".$_POST['cp']."', mariage = '".$_POST['mariage']."', newsletter = '".$_POST['newsletter']."', contenu = '".$_POST['contenu']."', commande = '".$_POST['commande']."' WHERE idpdv = '".$_POST['id']."'"; mysql_query ($sql); echo "Mise à jour effectuée"; } elseif ($_POST['action']=="suppr" && $_REQUEST['id']>=1) { $sql = "DELETE FROM pdv WHERE idpdv='".$_REQUEST['id']."'"; mysql_query ($sql); header('Location : http://localhost/admin/index.php'); } include("haut.inc.php"); echo "<p align=left> :: fiche demande [".$_GET['id']."]</p>"; $sql = "SELECT * FROM pdv WHERE idpdv= '".$_GET['id']."'"; $resultat = mysql_query ($sql); $pdv = mysql_fetch_array ($resultat); ?> <form action="pdv_edit.php" method="post"> <input type="hidden" name="enregistre" value="oui" /> <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" /> <table> <tr> <td>Date demande</td> <td><input type="text" name="date_demande" value="<?php echo $pdv['date_demande']; ?>" /></td> </tr> <tr> <td>Nom</td> <td><input type="text" name="nom" value="<?php echo $pdv['nom']; ?>" /></td> </tr> <tr> <td>Prénom</td> <td><input type="text" name="prenom" value="<?php echo $pdv['prenom']; ?>" /></td> </tr> <tr> <td>email</td> <td><input type="text" name="email" value="<?php echo $pdv['email']; ?>" /></td> </tr> <tr> <td>Ville</td> <td><input type="text" name="ville" value="<?php echo $pdv['ville']; ?>" /></td> </tr> <tr> <td>Code postal</td> <td><input type="text" name="cp" value="<?php echo $pdv['cp']; ?>" /></td> </tr> <tr> <td>Date mariage</td> <td><input type="text" name="mariage" value="<?php echo $pdv['mariage']; ?>" /></td> </tr> <tr> <td>Newsletter</td> <td><input type="text" name="newsletter" value="<?php echo $pdv['newsletter']; ?>" /></td> </tr> <td>Message</td> <td><input type="text" name="contenu" value="<?php echo $pdv['contenu']; ?>" /></td> </tr> </tr> <td>Commande</td> <td><input type="text" name="commande" value="<?php echo $pdv['commande']; ?>" /></td> </tr> </table> <br/> <select name="action"> <option value="maj">Enregistrer</option> <option value="suppr">Supprimer</option> </select> <input type="submit" value="effectuer" /> </form> <?php mysql_close($liendb); include ("bas.inc.php"); ?>
Quand tu construis ton tableau dans $pdv tu utilises une requete SQL avant basée sur l'id. Tu récupères donc cet id dans $_GET['id'] mais celui-ci n'existe plus à ce moment du script parce que tu as réalisé un POST sur pdv_edit.php sans lui passer le id en paramètre.
Soit tu définis un nouveau input de type hidden qui correspond à l'id (pour le récupérer dans chaque cas) soit tu passes l'id en paramètre de ton url (dans l'action du formulaire).
Ahh...
Donc je suppose que le code à editer se trouve ici
et rajouter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <select name="action"> <option value="maj">Enregistrer</option> <option value="suppr">Supprimer</option> </select> <input type="submit" value="effectuer" />
<input type="hidden" name="id" value="<?php echo $_POST['id']; ?>" />
Comme ça je propage à nouveau l'id. C'est qq chose comme ça ?
Après je vois plus trop quoi faire![]()
C'est ca, mais le problème c'est qu'une fois sur deux ton id va être dans $_POST et une fois sur deux dans $_GET[].
Tu peux te servir de ton champ "action" pour savoir où trouver id! Mais tu es sur la bonne voie.
![]()
Nan je vois pas trop
Qu'est ce qu'il faut faire sur le action ? un value="<?php echo $_POST['id']; ?>" aussi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7<select name="action"> <option value="maj">Enregistrer</option> <input type="hidden" name="id" value="<?php echo $_POST['id']; ?>" /> <option value="suppr">Supprimer</option> </select> <input type="submit" value="effectuer" />
Je t'ai proposé deux solutions dans mon message précedent, soit le nouveau input soit changer l'action du formulaire, tu dois faire l'un ou l'autre mais pas les deux à la fois!
Montre moi ton nouveau code et ce qui ne marche pas.
ok, si je choisis l'input j'ai çaEnvoyé par koopajah
Je n'ai pas trop compris ta remarque
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7<select name="action"> <option value="maj">Enregistrer</option> <input type="hidden" name="id" value="<?php echo $_POST['id']; ?>" /> <option value="suppr">Supprimer</option> </select> <input type="submit" value="effectuer" />
Pour moi, quand le formulaire s'affiche la première fois, il affiche les données grâce au paramètre id récupéré en amont sur index.phpC'est ca, mais le problème c'est qu'une fois sur deux ton id va être dans $_POST et une fois sur deux dans $_GET[].
Tu peux te servir de ton champ "action" pour savoir où trouver id! Mais tu es sur la bonne voie.
Après quand je clique sur enregistrer, je passe en POST pour updater les données avec un <input type="hidden" name="id" value="<?php echo $_POST['id']; ?>" />
Donc au départ mon id est dans un $_GET et après dans un $_POST mais je ne vois pas où est le problème puisqu'il s'agit de 2 actions différentes.
Ou alors j'ai pas encore bien tout compris ce qui est plus que possible![]()
rebonjour, j'arrive un peu tard,
Mais si le soucis c'est qu'à un moment tu envoie les données par GET et un autre moment par POST sur un même endroit, dans ce cas utilise REQUEST, car il prend en compte les deux, ainsi cela fonctionnera. Mais utilise le REQUEST seulement sur les variables suscéptible de passer par GET et POST!
En faites, je pense que c'est ton script qui est un peu mal organisé, mais bon, si tu arrive à le faire fonctionner avec des REQUEST utilise ces dernières. Mais je t'assure qu'une fois que tu aura réellement compris le fonctionnement de POST, GET, REQUEST, tu n'aura plus ce genre de soucis
++
Peut etre que je n'ai pas tout compris non plus à ton code (surement meme). Est-ce que maintenant ton code marche? Si c'est le cas tout va bien, si non, je pense que le problème vient toujours de ton id donc j'attends de savoir. Et si ca ne marche pas, poste le code mis a jour, pas juste le formulaire.
Le code que tu as laissé marchera sans pb ainsi:
Ca marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10echo "<p align=left> :: fiche demande [".$_REQUEST['id']."]</p>"; $sql = "SELECT * FROM pdv WHERE idpdv= '".$_REQUEST['id']."'"; $resultat = mysql_query ($sql); $pdv = mysql_fetch_array ($resultat); ?> <form action="pdv_edit.php" method="post"> <input type="hidden" name="enregistre" value="oui" /> <input type="hidden" name="id" value="<?php echo $_REQUEST['id']; ?>" />
Maintenant le soucis c'est qu'une personne (mal intensionnée) peu passer une id de son choix via l'url... c'est pas très recommander pour remplir une table.
alors revoici le code entier car les nouvelles données updatées ne s'affichent toujours pas.
J'ai enlevé le code
<input type="hidden" name="id" value="<?php echo $_POST['id']; ?>" /> car je ne vois pas trop comment l'utiliser.
Encore merci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 <?php include("identification.inc.php"); include("variables.inc.php"); $liendb = mysql_connect ($bddserver, $bddlogin, $bddpassword); mysql_select_db ($bdd); if ($_POST['action'] == "maj") { if (empty($_POST['nom'])) die ("erreur"); $sql = "UPDATE pdv SET date_demande = '".$_POST['date_demande']."', nom = '".$_POST['nom']."', prenom = '".$_POST['prenom']."', email = '".$_POST['email']."', ville = '".$_POST['ville']."', cp = '".$_POST['cp']."', mariage = '".$_POST['mariage']."', newsletter = '".$_POST['newsletter']."', contenu = '".$_POST['contenu']."', commande = '".$_POST['commande']."' WHERE idpdv = '".$_POST['id']."'"; mysql_query ($sql); echo "Mise à jour effectuée"; } elseif ($_POST['action']=="suppr" && $_POST['id']>=1) { $sql = "DELETE FROM pdv WHERE idpdv='".$_POST['id']."'"; mysql_query ($sql); header('Location : http://localhost/admin/index.php'); } include("haut.inc.php"); echo "<p align=left> :: fiche demande [".$_GET['id']."]</p>"; $sql = "SELECT * FROM pdv WHERE idpdv= '".$_GET['id']."'"; $resultat = mysql_query ($sql); $pdv = mysql_fetch_array ($resultat); ?> <form action="pdv_edit.php" method="post"> <input type="hidden" name="enregistre" value="oui" /> <table> <tr> <td>Date demande</td> <td><input type="text" name="date_demande" value="<?php echo $pdv['date_demande']; ?>" /></td> </tr> <tr> <td>Nom</td> <td><input type="text" name="nom" value="<?php echo $pdv['nom']; ?>" /></td> </tr> <tr> <td>Prénom</td> <td><input type="text" name="prenom" value="<?php echo $pdv['prenom']; ?>" /></td> </tr> <tr> <td>email</td> <td><input type="text" name="email" value="<?php echo $pdv['email']; ?>" /></td> </tr> <tr> <td>Ville</td> <td><input type="text" name="ville" value="<?php echo $pdv['ville']; ?>" /></td> </tr> <tr> <td>Code postal</td> <td><input type="text" name="cp" value="<?php echo $pdv['cp']; ?>" /></td> </tr> <tr> <td>Date mariage</td> <td><input type="text" name="mariage" value="<?php echo $pdv['mariage']; ?>" /></td> </tr> <tr> <td>Newsletter</td> <td><input type="text" name="newsletter" value="<?php echo $pdv['newsletter']; ?>" /></td> </tr> <td>Message</td> <td><input type="text" name="contenu" value="<?php echo $pdv['contenu']; ?>" /></td> </tr> </tr> <td>Commande</td> <td><input type="text" name="commande" value="<?php echo $pdv['commande']; ?>" /></td> </tr> </table> <br/> <select name="action"> <option value="maj">Enregistrer</option> <option value="suppr">Supprimer</option> </select> <input type="submit" value="effectuer" /> </form> <?php mysql_close($liendb); include ("bas.inc.php"); ?>
J'ai lu les différences entre POST REQUEST et GET et à chaque fois c'était qu'il vallait mieux laisser tomber le REQUEST.Envoyé par sharrascript
Donc au final je veux refaire mon code avec des GET et POST. Je butte seulement sur le réaffichage des données postées sur le formulaire...
enfin j'essaye![]()
JE suis désolé j'ai du mal à suivre ton code... Maintenant quand tu réaffiches les résultats tu te sers $_GET['id'] au lieu de $_POST['id'], reremplaces ce morceau là pour voir si ca marche.
La dernière chose qui me pose problème c'est le cas du début celui ou tu as un lien du type "pdv_edit.php&id=valeur" dans ce cas tu vas récupérer le id dans un $_GET.
Le mieux serait peut etre au début de faire
pour avoir le bon id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if(isset($_GET['id']) { $id = $_GET['id']; else { $id = $_POST['id']; }
Moi je pense que c'est ton code qui est à revoir, enlève simplement la possibilité de passer par l'url pour UPDATER ta table.
Car la solution de koopajah fonctionne à merveille, mais cela reviend à utiliser le $_REQUEST!! En effet, si le gars décide de taper l'id sur l'url ça passe, donc on reviend aux raisons pour lesquelles le REQUEST est déconseillé!!
Je regarde de plus pret ton script et t'envoie quelque chose de réalisable
++
En effet, comme le code à la base n'utilisait que des REQUEST, il se peut qu'il ne soit plus adapté à des POST et GET...Envoyé par sharrascript
en tout cas sympa de revoir le code![]()
Moi aussi je suis paumé dans le code maintenantEnvoyé par koopajah
![]()
Bon j'ai une solution de dépannage:
dans ton form juste à le remplacer:
voilà, normalement cela te règle tout, mais je ne recommande pas cela...
Code : Sélectionner tout - Visualiser dans une fenêtre à part <form action="pdv_edit.php?id=<?php echo $_GET['id']; ?>" method="post">
Partager