Utilisation de POST

Eléphanteau du PHP | 22 Messages

24 janv. 2008, 17:05

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 :(

d0m
Mammouth du PHP | 1141 Messages

24 janv. 2008, 17:10

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 janv. 2008, 17:10

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 ...... ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 22 Messages

24 janv. 2008, 17:20

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 :lol:
(c est quoi la reponse? :oops: )

ViPHP
ViPHP | 4039 Messages

24 janv. 2008, 17:24

bien lire le code:

'faut changer
echo($data[id])
en
echo($data["id"])
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 22 Messages

24 janv. 2008, 17:29

Merci j ai plus le message d erreur,

par contre il me renvoie une valeur id : 4 sur toutes mes fiches

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 janv. 2008, 17:33

PS Ryle, t es pas bien de me poser des questions comme ca :lol:
(c est quoi la reponse? :oops: )
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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 22 Messages

24 janv. 2008, 17:54

Bon j ai tout corriger :wink:
<?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 ? :)

d0m
Mammouth du PHP | 1141 Messages

25 janv. 2008, 11:09

Bon j ai tout corriger :wink:
Sauf cette faute d'orthographe :wink:
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

Eléphanteau du PHP | 22 Messages

25 janv. 2008, 12:18

Erf t'es prof de français en plus :lol:

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">'; 
}

?>

d0m
Mammouth du PHP | 1141 Messages

25 janv. 2008, 12:24

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 ?

Eléphanteau du PHP | 22 Messages

25 janv. 2008, 12:34

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';
} 

?>

d0m
Mammouth du PHP | 1141 Messages

25 janv. 2008, 12:44

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.

Eléphanteau du PHP | 22 Messages

25 janv. 2008, 12:57

Je suis désolé mais je comprend pas :oops:

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

d0m
Mammouth du PHP | 1141 Messages

25 janv. 2008, 13:28

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.

Code : Tout sélectionner

</form>
Tu auras donc plusieurs formulaire imbriqués et le champ qui s'appelle idclient sera plusieurs fois dans un même formulaire.