Formulaire d'enregistrement

Résolu/Fermé
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 - 24 mars 2023 à 15:42
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 - 26 mars 2023 à 23:11

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;

5 réponses

jordane45 Messages postés 38397 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 janvier 2025 4 732
24 mars 2023 à 15:56

Bonjour

As-tu des erreurs dans la console de ton navigateur ?

Quel est le code source généré de cette page ?


0
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 32
24 mars 2023 à 16:31

^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>
0
jordane45 Messages postés 38397 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 janvier 2025 4 732
24 mars 2023 à 16:49

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

0
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 32
24 mars 2023 à 17:44

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.

0
yg_be Messages postés 23449 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 janvier 2025 1 564
25 mars 2023 à 08:38

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.

0
lina-24 Messages postés 63 Date d'inscription vendredi 6 novembre 2020 Statut Membre Dernière intervention 25 mars 2023 4
25 mars 2023 à 02:51

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.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 32
26 mars 2023 à 23:11

Bonjour,merci je me demande pourquoi je n'ai pas vu cette erreur cela a été une bonne nouvelle après être rentré du week-end. Voici la boucle modifié.

while ($donnees = $result->fetch()) { $instr .= ", '".$donnees->montant."'"; }

Encore un grand merci à vous. Bonne continuation.

0