Plusieurs action dans balise Form - PHP - Programmation
Marsh Posté le 06-03-2006 à 14:34:40
On ne peut mettre qu'une seule "action" à un formulaire. C'est l'html qu'est fait comme ça. D'ailleur, s'il y avait plusieurs "action" à un formulaire, comment le navigateur ferait pour savoir lequel est le bon et s'il les exécute tous, comment il ferait pour savoir quelle page reçu à la suite des demandes des actions il devrait afficher et lesquels il devrait ignorer.
Si tu veux faire un tel truc, dans tous les cas il te faudra du javascript du moins si tu ne veux pas que le visiteur doivent valider deux fois le formulaire à la main.
En bref : méthode ajax (dans 10% des cas, tu ne seras jamais prévenu mais au moins, c'est transparent pour tout le monde) : tu fais exécuter une fonction javascript à la validation du formulaire et cette fonction t'envéra les données. Ensuite, le navigateur envéra le formulaire comme normal
méthode 2 (qui marche dans tous les cas, mais nécessitera une double validation du client si le javascript est désactivé) : tu fais pointer le formulaire sur ton site, ensuite, tu réaffiches une nouvelle page avec un formulaire préremplis et dans cette page, tu met aussi une fonction qui validera le formulaire dés la fin de l'affichage d'une page. Probléme : si le javascript est désactivé, le client devra valider le formulaire une seconde fois et rien ne dit que le navigateur envéra les données au second site.
PS : Si c'est pour envoyer des infos de paiement, personellement, je ne ferais pas confiance en un site qui se permettrait d'utiliser ce genre de méthode et en fait, je ne fais confiance qu'a trés peu de sites quand le paiement ne se fait pas directement sur le site web d'une banque.
PS2 : ton soit disant second site (eurowebpaiement.com) n'existe pas. D'ailleur, il n'existe pas non plus en .net ni en .org. Je ne sais pas si c'est un site que vous allez créer ou qu'une personne de votre conaissance va créer mais si c'est le cas, vous avez intérer de réserver rapidement ce nom de domaine avant qu'un autre le fasse.
Marsh Posté le 06-03-2006 à 14:50:47
Je conaissais pas ce systéme là de vente en ligne.
Et c'est sur qu'avec un mauvais nom de domaine, je risquais pas de trouver.
Marsh Posté le 06-03-2006 à 14:52:13
j'ai déjà intégré eurowebpayment mais ca ne sert à rien de vouloir récup les infos. Il fo que tu personnalises le formulaire qu'il te propsoe sur le site. Tu le complètes avec ton caddie etc... et ensuite tu balances sur leur site. 'est eux qui vont traiter le paiement pas toi.
Marsh Posté le 07-03-2006 à 12:29:10
Effectivement je me suis trompé dans l'url, désolé.
La démarche que j'effectue est purement universitaire. La vente en ligne restera fictive. C'est pourquoi, pour remplir pleinement ma tâche, je désire récupérer les informations (permettant ainsi d'alimenter une base de données).
Je suis d'accord avec toi newneo2001, ca ne sert à rien sinon à remplir pleinement mon cahier des charges.
Donc vous ne voyez pas d'autres solutions que de valider deux fois le formulaire ? (J'élimine la solution du javascript mais merci quand même !)
Je ne peux pas rediriger la partie html (form action) vers ma base de données et ensuite, rediriger vers le site de paiement dans la partie php ??
Merci pour vos réponses.
Marsh Posté le 07-03-2006 à 14:22:00
tu dois pouvoir le faire :
1- dans ton formulaire, ton action pointe vers une page à toi
2- ta page logue dans ta bdd tout ce dont tu as besoin
3- tu rediriges vers la page de ton choix.
Si c'est du "get" que tu fais, une seule ligne suffira :
header("location: http://www.eurowebpayment.com/mapa [...] 034;.$_GET['var1']."&var2=".$_GET['var2']);
par contre si c'est du post, c'est possible egalement avec les header mais je ne sais plus ce qu'il faut ecrire.
Marsh Posté le 07-03-2006 à 15:15:32
ta page html :
Code :
|
mapage.php
Code :
|
si tu as d'autres questions, pose les ici comme ça moi ou quelqu'un d'autre pourra y repondre.
++
Marsh Posté le 08-03-2006 à 18:42:04
Bon alors mon php c :
<?
if ($_POST['isSubmited'] == true)
{
$quantite = $_POST['article[1][quantite]'];
$prenomnom = $_POST['name_debiteur'];
$adresse = $_POST['adress_debiteur'];
$codepostal = $_POST['codepostal'];
$ville = $_POST['ville'];
$email = $_POST['email_debiteur'];
$dbconn = pg_connect("host=toto user=toto dbname=toto" );
$sql = "INSERT INTO tb_commande VALUES ('".$nom."',
'".$quantite."', '".$prenomnom."', '".$adresse."', '".$codepostal."', '".$ville."', '".$email."')";
pg_query($dbconn, $sql);
}
?>
et mon html c tout un formulaire avec les champs repris dans le php commançant par :
<form method='POST' name='EWP_140063' action='http://www.eurowebpayment.com/fr/cb/' target='_blank'>
ensuite il y a une bannière donc je zappe et après il y a les champs à remplir par l'utilisateur :
<TABLE border='0' width='100%' cellpadding='2' cellspacing='0'>
<TR>
<TD align='right'><font face='Verdana' size='1' color='#FFFFFF'><b>Quantité* : </b></font></TD>
<TD align='top'><input class='formular' type='text' name='article[1][quantite]' value ='' size='2'></TD>
</TR>
<TR>...
....... suivi de tous les autres champs .......
et enfin à la fin de la partie html toujours :
...
</table>
<input type='hidden' name='rgrg' value='nianaina'>
<input type='hidden' name='rgrgr' value='nianiania'>
<input type='hidden' name='rgrgr' value='niania'>
<input type='hidden' name='rgrgr' value='nianai'>
<input type='hidden' name='rgrgrgr' value='niania'>
<!-- début des options -->
<!-- fin des options -->
</form>
</td>
</tr>
</TABLE>
Toute cette partie html est donnée par eurowebpayment, j'y ai juste rajouté quelques champs pour ma base.
Pour l'instant, la partie php et html sont dans un même fichier php mais je vais les séparer.
Avec tout ça, je vais peut être mieux comprendre ce que tu veux faire avec "var1" ... parce que je ne comprends pas.
Désolé pour mon ignorance mais je vois pas.
Merci beaucoup.
Marsh Posté le 03-03-2006 à 22:11:43
Bonsoir,
en fait, je désire récupérer les données de mon formulaire dans une base de donnée avant (ou en même temps) que celles-ci soient envoyées vers un site qui gère ensuite une vente en ligne (eurowebpaiement.com). Je voudrai, en quelque sorte, les attraper au vol.
Pas de souci pour créer la table, ect... mais coment faire pour remplir deux bases de données complétement distinctes ?
Est il possible de mettre plusieurs actions dans une balise FORM ?
Merci d'avance.