insérer un formulaire de calcule de mensualité

Eléphant du PHP | 56 Messages

04 juin 2007, 19:00

bonjour à tous
j'arrive pas à trouver le nom et la valeur j'ai reussi à identifier le ligne qui déclenche la validation du formulaire mais j'arrive pas à la comprendre
<td width="100%" valign="top"><?php echo tep_draw_form('create_account', tep_href_link
(FILENAME_CREATEPOACCOUNT, '', 'SSL'),
 'post', 'onSubmit="return check_form(create_account);"') . tep_draw_hidden_field
('action', 'process'); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

j'ai essayer acion process mais ca ne marche pas

merci d'avance

Eléphant du PHP | 56 Messages

05 juin 2007, 12:13

Bonjour à tous bon j'ai presque trouver

j'ai rajouter cette ligne avant
<td width="100%" valign="top"><?php if ($_POST) echo 
tep_draw_form('create_account', tep_href_link
(FILENAME_CREATEPOACCOUNT, '', 'SSL'), '$_POST', '') . tep_draw_hidden_field('action', 'process'); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

puis la ligne de validation du formulaire
<td width="100%" valign="top"><?php echo tep_draw_form('create_account', tep_href_link
(FILENAME_CREATEPOACCOUNT, '', 'SSL'), 'post', 'onSubmit="return check_form
(create_account);"') . tep_draw_hidden_field('action', 'process'); ?><table border="0" 
width="100%" cellspacing="0" cellpadding="0">

mais ce qui est bizar c'est que ca marche une fois sur deux une voir quand je selectionne un mensualiter ca ne m affiche pas d'erreur donc ca va et une fois ca me les affiche c'est quand meme bizzar

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

05 juin 2007, 13:32

tu parts dans la mauvaise direction, ne touche surtout pas à cette ligne de déclaration du formulaire car c'est elle qui définit les paramètres du form comme le nom, la méthode (get ou post), une fonction javascript de validation avant l'envoi et la page de traitement (action)

Ce que je t'ai demandé de faire est de chercher le bouton "submit" de validation puis repérer son nom et sa valeur mais ne change rien dans l'existant puisque ça marche

stp, relit mes posts précédents.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 56 Messages

05 juin 2007, 14:13

bonjour et merci encore bon je vais pas y toucher allors

l'ennnui c'est que j'ai chercher mais il n'y ni de nom ni de valeur sur le bouton submit
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?
></td><td><?php echo tep_image_submit('button_submit.gif', IMAGE_BUTTON_SUBMIT); ?
></td><td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?
></td></tr></table></td></tr></table></td></tr></table></form></td><!-- body_text_eof //--
><td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
donc c'est pour ca que j'ai essayer autre chose

merci beaucoup

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 juin 2007, 09:11

D'accord maintenant je vois, il s'agit d'un bouton submit sous forme d'image en HTML ça s'écrit:

Code : Tout sélectionner

<input type="image" />
et c'est l'équivalent d'un bouton submit normal qui lui s'écrit en HTML:

Code : Tout sélectionner

<input type="submit" />
D'après ton code, l'image submit est déclarée par la fonction OsCommerce comme ça:
tep_image_submit('button_submit.gif', IMAGE_BUTTON_SUBMIT)
où IMAGE_BUTTON_SUBMIT est le nom du bouton.
Les boutons images submit n'ont pas de value car ils affichent à la place une image.

De ce fait, si tu veux vérifier dans ton programme que c'est ce bouton qui a déclenché le submit et non ta liste mensualité il faut tester si le nom du bouton existe dans le postage, seulement il y a un HIC qu'il faut comprendre:
  • Quand un bouton image Submit est cliqué le postage ne transporte pas son nom tout court mais accompagné des coordonnées XY de la position où la souris a cliqué sur l'image du bouton.
    Ces coordonnées sont nommées dans ton cas comme suit:
    IMAGE_BUTTON_SUBMIT_X et IMAGE_BUTTON_SUBMIT_Y
Bien, en faisant attention à cette dernière remarque tu pourras alors écrire ton code en s'inspirant du bout suivant:
//detection du bouton image submit du formulaire
if ( $_POST[IMAGE_BUTTON_SUBMIT."_X"] ){
   //traitement des données du formulaire
}

Voilà, mais ça reste une première méthode car il existe une seconde moins fiable.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 56 Messages

06 juin 2007, 13:49

re bonjour et merci


Bon j'ai fait une recherche et je n'ai trouver nul par la phrase IMAGE_BUTTON_SUBMIT donc inpossible de trouver cette valeur la j'avoue que je n'y comprand plus rien

merci

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 juin 2007, 15:24

bonjour et merci encore bon je vais pas y toucher allors

l'ennnui c'est que j'ai chercher mais il n'y ni de nom ni de valeur sur le bouton submit
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?
></td><td><?php echo tep_image_submit('button_submit.gif', IMAGE_BUTTON_SUBMIT); ?
></td><td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?
></td></tr></table></td></tr></table></td></tr></table></form></td><!-- body_text_eof //--
><td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
donc c'est pour ca que j'ai essayer autre chose

merci beaucoup
Pourtant c'est toi qui'as posté ce message, hé bien elle s'y trouve.

Bon, je prends la main, tu dois faire tout ce que je te dis et on verra bien ce que ça va donner:
  • 1. Tapes le code suivant dans ton programme après celui qui remplit les listes mensualité et ses totaux :
    //detection du bouton image submit du formulaire 
    if ( $_POST[IMAGE_BUTTON_SUBMIT."_X"] ){ 
       //traitement des données du formulaire 
       echo "ok, le bouton submit est cliqué";
    }
    2. Enregistre et exécute. quand le formulaire est affiché, cliques sur le bouton image d'envoi du formulaire et dis moi si tu vois s'afficher le message "ok, le bouton submit est cliqué"
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 56 Messages

06 juin 2007, 16:24

rebonjour

non je vais te desevoir mais rien ne s'affiche

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 juin 2007, 16:34

d'accord, c'est possible que le nom IMAGE_BUTTON_SUBMIT n'est pas déclaré comme constante

Avant d'intervenir, écrit ça, pour afficher les noms de champs utilisés par ton formulaire et ainsi vérifier:
  • 1. pour savoir si IMAGE_BUTTON_SUBMIT est bien déclarée comme constante
    echo "<p>le nom du submit est :" . IMAGE_BUTTON_SUBMIT; 
    si le nom ne s'affiche pas il faut déclarer la constante comme on a avait fait déjà au début du programme:
    define ('IMAGE_BUTTON_SUBMIT', 'bouton_valider');
    et rééssaye la vérif n°1

    2. pour en avoir le coeur net et listrer tous les champs du formulaire envoyé, tape:
    echo "<pre>"; print_r($_POST); echo "</pre>";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 56 Messages

06 juin 2007, 16:46

donc j'ai mis
echo "<p>le nom du submit est :" . IMAGE_BUTTON_SUBMIT;
est ce message et aparu sans même que je clique sur le bouton
le nom du submit est :Submit

Eléphant du PHP | 56 Messages

06 juin 2007, 16:54

puis j'ai mis

echo "<pre>"; print_r($_POST); echo "</pre>";
est j'ai eu ce message quand j'ai cliquer sur le bouton SUBMIT

Array
(
[action] => process
[firstname] => badier
[lastname] => JEAN LOUIS
[dob] => 12/09/1979
[email_address] => [email protected]
[totalcom] => 39
[mensualite] => 15
[total_mensualite] => 75
[apport] =>
[nationalite] => Française
[naturepiece] =>
[datecni] =>
[datedelivrance] =>
[datedélivrance] =>
[nomJF] =>
[paysNaiss] => France
[lastCodePostalNaiss] =>
[dptNaiss] =>
[codePostalNaiss] =>
[villenaissance] =>
[typeHabitat] => Sélectionnez
[moisHabitat] => Mois
[anneeHabitat] => Année
[situation] =>
[nbEnfant] =>
[street_address] => 12 rue faston
[city] => ceyzerieu
[postcode] => 01170
[country] => 73
[telephone] => 04747746987
[fax] =>
[estCDDObligatoire] => non
[profession] => Profession
[typeContrat] => Type de contrat
[finContratMois] => Mois
[finContratAnnee] => Année
[nomEmployeur] =>
[adresseemployeur] =>
[villemployeur] =>
[codepostalemployeur] =>
[telephoneemployeur] =>
[moisAncProf] => Mois
[anneeAncProf] => Année
[creditrequest] =>
[time_in_business] =>
[natureactive] =>
[number_of_employees] =>
[credit_ref1city] =>
[credit_ref1state] =>
[credit_ref1phone] =>
[credit_ref1fax] =>
[credit_ref2] =>
[credit_ref2address] =>
[credit_ref2city] =>
[credit_ref2state] =>
[credit_ref2phone] =>
[credit_ref3city] =>
[credit_ref3state] =>
[banque] =>
[moisBanque] => Mois
[anneeBanque] => Année
[numeroetablissement] =>
[numeroguichet] =>
[numerocompte] =>
[numerocle] =>
[password] =>
[confirmation] =>
[x] => 74
[y] => 15
)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

06 juin 2007, 23:25

Parfait, dans la liste affichée tu vois tout en bas les 2 champs [x] => 74 et [y] => 15
Ce sont les coordonnées xy du bouton image submit que tu as cliqué pour envoyer le formulaire.

Tu remarqueras que si tu change la liste "mensualité" l'envoi sera fait et t'afficheras la même liste mais sans les champs [x] et [y]

fais ce test et dit moi ce que tu vois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 56 Messages

07 juin 2007, 00:07

bonsoir


Oui en effet si je change la liste mensualiter les champ x et y ne sont pas present alors que si je clique sur submit il sont présent

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 juin 2007, 00:30

Alors t'as compris maintenant l'astuce, c'est la seule chose sur laquelle tu dois t'appuyer pour distinguer entre un envoi par bouton submit et par changement de la liste mensualité

donc tu écris le code suivant pour ce faire:
if ( isset($_POST["x"]) ) {
     //alors le formulaire est validé par le bouton submit => traiter les données
}
et dans tous les cas tu remplie tes listes
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 56 Messages

07 juin 2007, 09:33

bonjour desoler tu t"est coucher tard à cause de moi

j'ai essayer
if ( isset($_POST["x"]) ) { 
mais ca n'a pas marcher je suis vraiment désoler alors j'ai eu une iddées j'ai essayer
if ($_POST) $error = false;
et
if ($_POST) $error == false;
mais pareil

je sais plus quoi fair[/php]