Page 1 sur 2
Utilisation de POST
Posté : 24 janv. 2008, 17:05
par sauveura
Bonjour tout le monde,
je chercher a recupere le champ id de ma premiere page pour effectuer des requetes sql sur ma deuxieme page en fonction de cette variable, mais evidemment ca fonctionnne pas
<?php
$sql = "SELECT rs, id, DATE_FORMAT(dlsouhait,'%d-%m-%Y')dlsouhait FROM suivi_livraison WHERE dlplan = 0000-00-00";
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
echo "Raison Sociale : $data[rs]<br/>";
echo "Date de livraison souhaitée : $data[dlsouhait]<br/>";
?>
<form method="POST" action="fiche.php?idclient=<?php echo($data[id]); ?>>$data[id]">
<input type="submit" value="Consulter la fiche" name="envoyer"><br/><br/>
<?php
if (isset($_POST['idclient'])) {
echo 'La variable a été soumise et contient la valeur suivante: ' , $_POST['idclient'];
}
else {
echo 'La variable n\'a pas été soumise';
}
?>
Je vous laisse imagine le message qui me saute a la figure quand je clic sur mon submit

Posté : 24 janv. 2008, 17:10
par d0m
met l'information en champ cache du formulaire :
<form method="POST" action="fiche.php>
<INPUT TYPE="hidden" NAME="idclient" VALUE="<?php echo($data[id]); ?>">
....
</form>
tu pourras la récupérer dans l'autre page comme n'importe quel champ, sauf qu'il n'aparraitra pas visible dans le formulaire.
Posté : 24 janv. 2008, 17:10
par Ryle
Si tu passes des données dans une url, le formulaire aura beau soumettre ses champs via la méthode post, celles qui sont dans l'url sont et resteront des données envoyées en get
Au lieu de mélanger get et post, tu peux aussi faire un champ hidden dans ton formulaire, qui contiendra ta valeur et qui sera donc envoyée en post
Ps : Petite remarque, une date en SQL, c'est une chaine de caractère... et une chaine de caractère en sql doit être délimitée par ......

Posté : 24 janv. 2008, 17:20
par sauveura
Merci d0m par contre j ai un petit message genre :
Notice: Use of undefined constant id - assumed 'id'
PS Ryle, t es pas bien de me poser des questions comme ca
(c est quoi la reponse?
)
Posté : 24 janv. 2008, 17:24
par Berzemus
bien lire le code:
'faut changer
echo($data[id])
en
echo($data["id"])
Posté : 24 janv. 2008, 17:29
par sauveura
Merci j ai plus le message d erreur,
par contre il me renvoie une valeur id : 4 sur toutes mes fiches
Posté : 24 janv. 2008, 17:33
par Ryle
PS Ryle, t es pas bien de me poser des questions comme ca
(c est quoi la reponse?
)
Bah des n'apostrophes voyons

Bon ben t'as perdu, t'es bon pour un peu de lecture sur
les bonnes pratiques SQL dans la faq
Et effectivement, comme l'indique
Berzemus, un index, c'est une chaine de caractère, donc faut la mettre également entre apostrophes/guillemets, sinon php pense que c'est une constante et va essayer de la retrouver en vain, pour se rabattre par dépit sur la valeur texte qu'elle peut représenter

Posté : 24 janv. 2008, 17:54
par sauveura
Bon j ai tout corriger
<?php
$sql = "SELECT rs, id, DATE_FORMAT(dlsouhait,'%d-%m-%Y')dlsouhait FROM suivi_livraison WHERE dlplan = '0000-00-00'";
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
echo "Raison Sociale : $data[rs]<br/>";
echo "Date de livraison souhaitée : $data[dlsouhait]<br/>";
?>
<form method="GET" action="fiche.php">
<INPUT TYPE="hidden" NAME="idclient" VALUE="<?php echo($data['id']); ?>">
<input type="submit" value="Consulter la fiche" name="envoyer"><br/><br/>
<?php
if (isset($_GET['idclient'])) {
echo 'La variable a été soumise et contient la valeur suivante: ' , $_GET['idclient'];
}
else {
echo 'La variable n\'a pas été soumise';
}
?>
Resultat : La variable a été soumise et contient la valeur suivante: 4
il me le sort d ou ce 4 ?

Posté : 25 janv. 2008, 11:09
par d0m
Bon j ai tout corriger
Sauf cette faute d'orthographe
il me le sort d ou ce 4 ?
Normalement il sort cette valeur de ta base.
déjà tu as oublié de fermer une accolade
while ($data = mysql_fetch_array($result)) {
echo "Raison Sociale : $data[rs]<br/>";
echo "Date de livraison souhaitée : $data[dlsouhait]<br/>";
}//il faut fermer
//affiche directement après la requête la valeur
echo 'contenu de $data[\'id\'] : '.$data['id'];
Normalement c'est 4 aussi
Et vérifie dans le code source de ta première page ce que contient le champ caché
idclient
Posté : 25 janv. 2008, 12:18
par sauveura
Erf t'es prof de français en plus
Alors en fait l accolade est ferme que plus tard et le 4 s'affiche quelque soit ma fiche
<?php
mysql_connect("localhost","root","");
mysql_select_db("optima");
$sql = "SELECT rs, DATE_FORMAT(dlsouhait,'%d-%m-%Y')dlsouhait, id FROM suivi_livraison WHERE dlplan = '0000-00-00'";
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
echo "Raison Sociale : $data[rs]<br/>";
echo "Date de livraison souhaitée : $data[dlsouhait]<br/>";
echo "Id : $data[id]<br/>";
?>
<form method="GET" action="fiche.php">
<INPUT TYPE="hidden" NAME="idclient" VALUE="<?php echo($data['id']); ?>">
<input type="submit" value="Consulter la fiche" name="envoyer"><br/><br/>
<?php
echo '<hr align="center" width="1200" size="1">';
}
?>
Posté : 25 janv. 2008, 12:24
par d0m
et en remplaçant :
echo "Id : $data[id]<br/>";
//par
echo 'Id : '.$data['id'].'<br/>';
sinon as tu vérifier via phpmyadmin par exemple que tous tes enregistrements de la base n'auraient pas comme id 4 ?
Posté : 25 janv. 2008, 12:34
par sauveura
Excuse moi j'ai du mal m'exprimer, en fait mon echo sur la 1ere page correspond bien a ma base par contre sur la deuxieme page il m affiche tout le temps
La variable a été soumise et contient la valeur suivante: 4
Code 2e page :
<?php
if (isset($_GET['idclient'])) {
echo 'La variable a été soumise et contient la valeur suivante: ' , $_GET['idclient'];
}
else {
echo 'La variable n\'a pas été soumise';
}
?>
Posté : 25 janv. 2008, 12:44
par d0m
d'après ton code tu as plusieurs formulaires différents (un pour chaque client).
Il faut donc mettre des noms différents à chaque formulaire.
Pour les boutons submit, et les champs hidden je ne suis pas sûr que ça soit nécessaire.
Posté : 25 janv. 2008, 12:57
par sauveura
Je suis désolé mais je comprend pas
Ma requete de la 1ere page affiche les resultats avec un resume de la fiche client ainsi qu'un lien vers la fiche complete en page 2.
Que veux tu dire par mettre des noms différents?
Ce qui est bizarre c'est que ma requete 1ere page affiche 2 résultats mais les 2 ont une url différente
Resultat avec id 1 :
http://127.0.0.1/fiche.php?idclient=1&e ... idclient=4
Resultat avec id 4 :
http://127.0.0.1/fiche.php?idclient=1&i ... r+la+fiche
Posté : 25 janv. 2008, 13:28
par d0m
Tu as une page avec plusieurs bouton pour voir les différents clients.
D'après ton code, tu veux créer un formulaire (balises <form></form>) pour chaque client.
Il faut donc donner un nom, et un nom différents à chacun de tes formulaires.
Sinon c'ets comme si tous tes enfants avait le même nom. Quand tu les appelles, ils croient tous que c'est eux.
par exemple
Code : Tout sélectionner
<form NAME="client_<?php echo $data['id'];?>" method="GET" action="fiche.php">
De plus tu ne fermes jamais tes formulaires.
Tu auras donc plusieurs formulaire imbriqués et le champ qui s'appelle
idclient sera plusieurs fois dans un même formulaire.