Additionner les valeurs d'une liste déroulante multiple
Fermé
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
-
22 août 2019 à 22:19
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 - 26 août 2019 à 23:15
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 - 26 août 2019 à 23:15
A voir également:
- Javascript liste déroulante onchange
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Supprimer une liste déroulante excel - Forum Word
- Telecharger javascript - Télécharger - Langages
7 réponses
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
22 août 2019 à 22:38
22 août 2019 à 22:38
Bonjour,
Ton code semble mélanger du php et du JS en même temps....
Ce n'est pas possible.
Soit tu ne nous a pas tout montré.... soit il manque des balises de code...
Il faudrait également que tu nous précises si tu veux que cette "addition" se fasse dans le code PHP (avant de faire l'insertion en base) .. ou bien que le calcul se fasse lors du "click" sur les différents montants (donc côté javascript )
Ton code semble mélanger du php et du JS en même temps....
Ce n'est pas possible.
Soit tu ne nous a pas tout montré.... soit il manque des balises de code...
Il faudrait également que tu nous précises si tu veux que cette "addition" se fasse dans le code PHP (avant de faire l'insertion en base) .. ou bien que le calcul se fasse lors du "click" sur les différents montants (donc côté javascript )
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
22 août 2019 à 23:36
22 août 2019 à 23:36
Bonjour,
Oui effectivement il manque les balises <?php
Le calcul il faudrait qu'il se fasse lors du click sur les différents items côté javascript.
Par exemple je sélectionne un premier item qui a pour montant 10
Alors le montant affiché sera 10
Je sélectionne un deuxième item qui a pour montant 100
Alors le montant affiché sera 110.
Je vous remercie, malheureusement je n'arrive pas à trouver la solution.
Oui effectivement il manque les balises <?php
Le calcul il faudrait qu'il se fasse lors du click sur les différents items côté javascript.
Par exemple je sélectionne un premier item qui a pour montant 10
Alors le montant affiché sera 10
Je sélectionne un deuxième item qui a pour montant 100
Alors le montant affiché sera 110.
Je vous remercie, malheureusement je n'arrive pas à trouver la solution.
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
23 août 2019 à 07:07
23 août 2019 à 07:07
Donc...
Tu nous postes le code avec les balises
Tu nous montres le code html qui va avec
Tu nous postes le code avec les balises
Tu nous montres le code html qui va avec
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
23 août 2019 à 11:07
23 août 2019 à 11:07
Bonjour,
Voici le code complet.
Voici le formulaire. Je pense avoir tout poster en ce qui concerne mon problème. Merci.
Voici le code complet.
<script language="javascript" type="text/javascript"> <?php require("libs/class.liste.php"); $LDpaie = new liste("libs/paiements","","oblig"); //classe qui gère les listes déroulantes $LDpaie->onchange = "payer()"; $instr = "var cotis = new Array('0'"; $requete = "SELECT montant FROM cdc_paiements ORDER BY idpaie"; $resultat = executeQuery($requete,$bdd); while ($donnees = $resultat->fetch()) { $instr .= ", '".$donnees->montant."'"; } $instr .= ")"; echo $instr; ?> </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>
Voici le formulaire. Je pense avoir tout poster en ce qui concerne mon problème. Merci.
echo '<form method="post" name="adh" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">'; echo '<h1>'.$title.'</h1>'; echo '<table>'; echo '<tr>'; echo '<td class="libel">Adhérent</td>'; echo '<td class="data">'; echo $LDpers->write($idpers).'<input type="button" name="plus" value="+" onclick="javascript:document.location=\'sais_personnes.php?a=add\'" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Cotisation</td>'; echo '<td class="data">'; echo $LDpaie->write($idpaie).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Classe de musicien</td>'; echo '<td class="data">'; echo $LDclas->write($idclas).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Instrument du musicien</td>'; echo '<td class="data">'; echo $LDpup->write($idpup).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Au titre de l\'année</td>'; echo '<td class="data"><input type="text" name="annee" size="3" value="'.$aadh.'" class="oblig" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Date de début</td>'; echo '<td class="data"><input type="text" name="ddebut" size="8" value="'.$ddebut.'" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Date de fin</td>'; echo '<td class="data"><input type="text" name="dfin" size="8" value="'.$dfin.'" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Montant payé</td>'; echo '<td class="data"><input type="text" name="montant" size="5" style="text-align:right" value="'.$montant.'" /> €</td>'; echo '</tr><tr>'; echo '<td>'; echo '<input type="hidden" name="haction" value="'.$action.'" />'; echo '<input type="hidden" name="oldid" value="'.$oldid.'" />'; echo '</td>'; echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>';
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
23 août 2019 à 12:15
23 août 2019 à 12:15
C'est moi.....ou il manque la liste déroulante ??
Je ne la trouve pas dans le code que tu nous montres...
Une fois de plus.. on galère a comprendre ton code et à obtenir toutes les infos....
Merci de bien vouloir faire de gros efforts pour nous communiquer TOUT ce qui peut nous servir à te répondre !
C'est fatiguant de toujours devoir te répéter les même choses.... :-(
Je ne la trouve pas dans le code que tu nous montres...
Une fois de plus.. on galère a comprendre ton code et à obtenir toutes les infos....
Merci de bien vouloir faire de gros efforts pour nous communiquer TOUT ce qui peut nous servir à te répondre !
C'est fatiguant de toujours devoir te répéter les même choses.... :-(
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
23 août 2019 à 14:43
23 août 2019 à 14:43
En fait j'ai hésité à mettre ma class mais je me suis dit qu'elle ne servirai pas à résoudre mon soucis. Comme une fois on m'a reproché de mettre du code qui n'a aucun intérêt avec le problème concerné, alors voilà.
voici ma page 'paiements.def'
'class.liste.php'
voici ma page 'paiements.def'
<?php $table = "cdc_paiements"; $champs = "idpaie,libelle"; $ordre = "libelle"; $lignes = "5"; $texte = "-- Type de paiement --"; ?>
'class.liste.php'
class liste { var $champs = ""; var $texte = ""; var $requete = ""; var $ctrlname = ""; var $tronque = 0; var $option = ""; var $style = ""; var $onchange = ""; var $slimit = ""; var $limit = ""; var $nbrecs = 0; function liste($objet, $ctrlname="", $style="", $limit=0) { if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def require("$objet.def.php"); $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->onchange = $onchange; $this->champs = $this->getfieldnames($champs); if($limit) { $this->limit = $limit; } if($lignes) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if($where) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if($group) { $insGROUP = "GROUP BY $group"; } else { $insGROUP = ""; } if($ordre) { $insORDER = "ORDER BY $ordre"; } else { $insORDER = ""; } if($limit) { $insLIMIT = "LIMIT 0,$limit"; } else { $insLIMIT = ""; } if($slimit) { $insLIMIT = "LIMIT 0,$slimit"; } else { $insLIMIT = ""; } $this->sql = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT;"; $datas = NULL; //$cnx = $GLOBALS["connexion"]; $result = executeQuery($this->sql,$datas); $this->nbrecs = $result->rowCount(); unset($resultat); } } function write($indice="",$text=0) { $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } if($this->style) { $style = " class=\"$this->style\""; } if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $datas = NULL; $result = executeQuery($this->sql,$datas); $this->nbrecs = $result->rowCount(); if($text && $indice) { $textonly = 1; } else { $textonly = 0; } if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } while ($donnees = $result->fetch()) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $donnees->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $donnees->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$donnees->$champs[$n]; $n++; } else { $texte .= " ".$donnees->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $donnees->$champs[1]; } else { $texte = $donnees->$champs[1]; } } if($this->tronque) { $lg = $this->tronque-9; // 9 = longueur de "... / ..." if(($lg % 2) != 0) { $lg++; } if(strlen($texte) > $lg) { $texte = substr($texte,0,$lg/2) . "... / ..." . substr($texte,strlen($texte)-($lg/2),$lg/2); } if(strlen($buffer) > $lg) { $buffer = substr($buffer,0,$lg/2) . "... / ..." . substr($buffer,strlen($buffer)-($lg/2),$lg/2); } } if(!$textonly) { echo "<option value=\"".$donnees->$champs[0]."\""; if($thisrec) { echo " selected"; } echo ">".$texte; } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } }
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
23 août 2019 à 16:38
23 août 2019 à 16:38
il nous faut le code HTML de ton select ... pas le code php qui le génère.
Pour cela :
- Affiche ta page dans ton navigateur,
- Affiche son code source ( via le raccourci CTRL + u par exemple )
- Trouve la partie qui concerne ta liste déroulante
- Colle nous son code.
Je vois, au passage, que tu ne fermes pas tes balises option ?? (il semble manquer les </option>
Pour cela :
- Affiche ta page dans ton navigateur,
- Affiche son code source ( via le raccourci CTRL + u par exemple )
- Trouve la partie qui concerne ta liste déroulante
- Colle nous son code.
Je vois, au passage, que tu ne fermes pas tes balises option ?? (il semble manquer les </option>
<option value="10" > texte </option>
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
23 août 2019 à 18:20
23 août 2019 à 18:20
Je suis actuellement dans la partie administration du site. Cette partie admin est un sous domaine alors en ce qui est du code source il y a uniquement cela.
hai hai hai
Pour les balises options je regarde ça.
hai hai hai
<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>
Pour les balises options je regarde ça.
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
23 août 2019 à 20:12
23 août 2019 à 20:12
Ben reviens nous voir quand tu auras ta liste déroulante.... histoire qu'on puisse avancer....
Car je ne vois pas comment tu peux développer le côté interactif Javascript sans pouvoir le tester ...
Car je ne vois pas comment tu peux développer le côté interactif Javascript sans pouvoir le tester ...
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
23 août 2019 à 22:22
23 août 2019 à 22:22
Est ce que c'est ça qu'il te faudrait pour essayer de m'aider?
<tr><td class="libel">Cotisation</td><td class="data"><select name="idpaie" multiple size="5" class="oblig" onchange="javascript:payer()"><option value="4">Adhésion gratuite<option value="1">Cotisation annuelle<option value="2">Cours collectif<option value="3">Cours individuel<option value="5">Paiement Dégressif</select>
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
26 août 2019 à 23:15
26 août 2019 à 23:15
Bonjour,
Voilà trois jours que j'essaie à vouloir trouver une solution à mon problème, mais je pense que c'est un peu plus compliqué que je ne le pensais sans votre aide je vais devoir y renoncer. J'ai changé quelques petites choses déjà mais en vain. J'ai vraiment besoin de votre aide s'ils vous plait. Je vous remercie.
Voilà trois jours que j'essaie à vouloir trouver une solution à mon problème, mais je pense que c'est un peu plus compliqué que je ne le pensais sans votre aide je vais devoir y renoncer. J'ai changé quelques petites choses déjà mais en vain. J'ai vraiment besoin de votre aide s'ils vous plait. Je vous remercie.