Utilisation de POST

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Utilisation de POST

par sauveura » 25 janv. 2008, 13:35

Ben voila une réponse imagée et le foetus que je suis te comprend :D

Merci de ton aide :wink:

par d0m » 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.

par sauveura » 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

par d0m » 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.

par sauveura » 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';
} 

?>

par d0m » 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 ?

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

?>

par d0m » 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

par sauveura » 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 ? :)

par Ryle » 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 :)

par sauveura » 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

par Berzemus » 24 janv. 2008, 17:24

bien lire le code:

'faut changer
echo($data[id])
en
echo($data["id"])

par sauveura » 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: )

par Ryle » 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 ...... ;)

par d0m » 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.