Formulaire d'enregistrement
RésoluLaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j’ai un formulaire qui est dédié pour enregistrer une nouvelle adhésion. Il y a une zone de saisie pour choisir une cotisation et de ce fait ça devrait pré saisir le montant correspondant dans une autre zone de saisie. Malheureusement cette zone de pré saisie reste vide et je n’arrive pas à comprendre.
Voici le code PHP pour écrire un tableau JavaScript qui contiendra les tarifs des cotisations pour pré saisie et la fonction qui va avec et l’appel à la fonction.
La variable $onchange est déclaré dans le fichier class.liste.php où les listes déroulantes sont traitées.
Je vous remercie pour votre aide.
<script language="javascript" type="text/javascript"> <?php $instr = "var cotis = new Array('0'"; // Début de l'initialisation de la variable tableau javascript // requete pour aller chercher les autres valeurs et finir le tableau $sql = "SELECT montant FROM cdc_paiements ORDER BY idpaie"; $result = executeQuery($sql); while ($donnees = $result->fetch()) { $instr .= ", '".$result->montant."'"; } $instr .= ")"; echo $instr; // donne => var cotis = new Array('0', '5.00', '150.00', '0.00'); ?> </script> <script language="javascript" type="text/javascript"> function payer() { var idpaie; idpaie = document.adh.idpaie.options[document.adh.idpaie.options.selectedIndex].value; document.adh.montant.value = cotis[idpaie]; } </script> $LDpaie->onchange = "payer()"; // Lors du choix d'une cotisation indiquer le prix dans la zone de saisie
Je vous joint également la table concernée si ça peut vous être utile.
DROP TABLE IF EXISTS `cdc_paiements`; CREATE TABLE IF NOT EXISTS `cdc_paiements` ( `idpaie` int NOT NULL AUTO_INCREMENT COMMENT 'ID du paiement', `libelle` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Libellé du paiement', `montant` decimal(6,2) NOT NULL COMMENT 'Montant actuel du paiement', `acdu` date NOT NULL COMMENT 'A compter du...', `taux` decimal(6,2) NOT NULL COMMENT 'Taux de TVA', `tva` decimal(6,2) NOT NULL COMMENT 'Montant de la TVA', PRIMARY KEY (`idpaie`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Table des paiements'; -- -- Déchargement des données de la table `cdc_paiements` -- INSERT INTO `cdc_paiements` (`idpaie`, `libelle`, `montant`, `acdu`, `taux`, `tva`) VALUES (1, 'Cotisation annuelle', '10.00', '2017-09-01', '20.00', '1.67'), (2, 'Cours collectif', '170.00', '2019-09-01', '20.00', '28.33'), (3, 'Cours multiples', '300.00', '2019-09-01', '20.00', '50.00'), (4, 'Adhésion gratuite', '0.00', '1999-09-01', '20.00', '0.00'), (5, 'Paiement dégressif', '150.00', '2019-09-01', '20.00', '25.00'); COMMIT;
- Formulaire d'enregistrement
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
5 réponses
Bonjour
As-tu des erreurs dans la console de ton navigateur ?
Quel est le code source généré de cette page ?
^Bonjour non je n'ai pas d'erreur car l'affichage ne se fait pas alors je n'envoie pas le formulaire si je l'envoie alors j'aurai une erreur car la zone de saisie est vide alors qu'elle ne devrait pas. Par contre je peux saisir n'importe quel montant l'enregistrement se passe sans problème mais ce n'ai pas le but.
Par contre ma parmi admin est fait de façon que je n'ai pas de code source.
<link rel="stylesheet" href="css/menusscr.css" type="text/css" media="screen"> <link rel="stylesheet" href="css/menusprt.css" type="text/css" media="print"> <frameset rows="20,*" frameborder="0" border="0" marginheight="0" marginwidth="0"> <frame name="menu" src="menu.php" scrolling="no" noresize class="np"> <frame name="main" src="accueil.php" scrolling="auto"> </frameset>
To'n code js est sensé se déclencher au changement de valeur dans ta liste LDpaie ...
A ce moment là..as tu une erreur JavaScript ?
Prends ton code source, je parle du code source généré de ta page..... C'est-à-dire une fois que ta page est affichée dans ton navigateur internet, tu fais contrôle +u et tu récupères le code que tu nous copies ici
Non je n'ai aucune erreur que ce soit PHP ou JS Oui le code source généré par la page c'est bien celle envoyée précédemment. Mon site est généré par le fichier init.php je peux l'envoyer si tu veux?? je reste convaincu que le problème viens du fichier class.liste.php mais malheureusement je ne suis pas capable de l'analyser. Par contre pour info avec la version 5 de php cela fonctionne normalement.
Merci.
Ce que tu montres en #2 n'est pas le code source HTML au moment de l'affichage du formulaire qui est dédié pour enregistrer une nouvelle adhésion.
Pour l'obtenir, tu dois, comme utilisateur du site, naviguer pour afficher le formulaire. Ensuite, tu fais contrôle +u et tu récupères le code que tu nous copies ici.
Il semble y avoir une erreur dans la boucle while pour créer le tableau cotis. Au lieu de récupérer la valeur de la colonne "montant" de la variable $donnees, elle tente de récupérer la valeur de la colonne "montant" de la variable $result, qui est l'objet de la requête SQL. Vous pouvez modifier le code comme suit :
// Début de l'initialisation de la variable tableau javascript $instr = "var cotis = new Array('0'"; // requete pour aller chercher les autres valeurs et finir le tableau $sql = "SELECT montant FROM cdc_paiements ORDER BY idpaie"; $result = executeQuery($sql); while ($donnees = $result->fetch()) { $instr .= ", '".$donnees['montant']."'"; } // récupère la valeur de la colonne "montant" de la variable $donnees $instr .= ")"; echo $instr; // donne => var cotis = new Array('0', '5.00', '150.00', '0.00');
Assurez-vous également que les éléments HTML avec les ID "idpaie" et "montant" existent dans le formulaire. Enfin, vérifiez que la fonction "payer()" est appelée lorsque la liste déroulante "idpaie" change.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question