Probleme de calcul lorsque j'ajoute une ligne

Résolu/Fermé
Groupe FIrst Messages postés 1 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 24 octobre 2013 - 24 oct. 2013 à 20:40
 GROUPE FIRST - 31 oct. 2013 à 09:48
bonsoir la communauté des dev
je remercie d'avance toutes les personnes qui s pencherons sur mon sujet et voudrons bien m'apporter une assistance, en effet je developpe une application de gestion de stcok et je suis a l'etape ou on doit générer une facture a ce niveau pas de blème j'ariv a aficher les données. j'ai mm mis un code javascript qui permet d'ajouter une ligne afin d'ajouter un produit mais le probleme est que lorsque je click sur le bouton ajout qui apel la function ajout ligne , le calcul a la deuxieme lignes ajouter n'est plus possible.
je vous donne la structure de ma table

CREATE TABLE IF NOT EXISTS 'caisse_boss' (
'id_caisse' int(11) NOT NULL AUTO_INCREMENT,
'action' varchar(100) NOT NULL,
'motif' varchar(100) NOT NULL,
'date' date NOT NULL,
'heure' time NOT NULL,
'qui' varchar(100) NOT NULL,
'somme' int(100) NOT NULL,

PRIMARY KEY ('id_caisse')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
A voir également:

3 réponses

et la fonction calcul ?
1
Ta fonction pour ajouter n'est pas bonne, tu utilises les mêmes ID.
<input type='text' id='Pu' value='0'>
l'idée je pense c'est de faire quelquechose comme:
<input type='text' name='Pu[]' value='0'>
0
Groupe FIrst
29 oct. 2013 à 18:24
j'ai besoin de Id='pu' pour permettre a ma fonction ajout de ligne de fonctionner puisque c'est par rapport a Id que la fonction ajout ligne s'exécute
0
Groupe FIrst
29 oct. 2013 à 18:32
cher Kilogrom merci de l' interêt que vous avez porté a mon poste en répondant mais je voudrais juste vous dire que dans ma fonction" function insererLigne_Fin() " le calcul de la première ligne et l'ajout de ligne est pris en compte en tenant compte de l'id de chaque input
type.
sinon avec cet code je peux calculer la première ligne et meme ajouter une autre ligne mais cette ligne ajouter n'est pas prise en compte par ma fonction, je sais pas pourquoi.

j'espère avoir d'avantage apporté un éclaircir sur ma préoccupation? je vous remercie cher Kilogrom
0
A tester sur un nouveau fichier, tu peux t'en inspirer !
<html>
<head>
<script type="text/javascript">


var total = 0;

function getValues() {
var qte = 0;
var unit = 0;
var obj = document.getElementsByTagName("input");
for(var i=0; i<obj.length; i++){
if(obj[i].name == "quantite[]"){var qte = obj[i].value;}
if(obj[i].name == "unite[]"){var unit = obj[i].value;}
if(obj[i].name == "prix[]"){
if(qte > 0 && unit > 0){
obj[i].value = (qte*unit).toFixed(2);
total+=(obj[i].value*1);
}else{
obj[i].value = 0;
total+=(obj[i].value*1);
}
}
}
document.getElementById("total").value = (total*1).toFixed(2);


total=0;
}
</script>

<script>
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[1].cells[i].innerHTML;

switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
}
}
}
function deleteRow(tableID)
{
try
{
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for(var i=0; i<rowCount; i++)
{
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if (null != chkbox && true == chkbox.checked)
{
if (rowCount <= 1){
alert("Cannot delete all the rows.");
break;
}
table.deleteRow(i);
rowCount--;
i--;
}
}
} catch(e)
{
alert(e);
}
getValues();
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<div align='left'>
<p><INPUT type="button" value="Ajouter Ligne" onclick="addRow('dataTable')" /><INPUT type="button" value="Supprimer Ligne" onclick="deleteRow('dataTable')" /></p>

<div>
<table width="800" border="1"id="dataTable">
<tr align='center'>
<td>Case à coche</td>
<td>Quantité</td>
<td>Unité</td>
<td>Total</td>
</tr>
<tr>
<td><input name="chk[]" type="checkbox"/></td>
<td><input type="text" name="quantite[]" id="quantite" onkeyup="getValues()"/></td>
<td><input type="text" name="unite[]" id="unite" onkeyup="getValues()"/></td>
<td><input type="text" name="prix[]" id="prix" onkeyup="getValues()" /></td>
</tr>
</table>
</div>
<table id='totquant'>
<tr>
<td>Total <input type="text" name="total" id="total" value="" /></td>
</tr>
</table>
</form>
</body>
</html>
0
ton pb est que les ID des input sont identiques ! voire il n'y en a pas.

soit tu mets des identifiants du genre <input name='quantite[]' ... /> soit tu mets
<input name=quantite0 ... />
<input name=quantite1 ... />
et tu fais tes calculs en récupérant les identifiants des input...
0
ce qui va plutôt nous intéresser ici c'est le code javascript pas la base de donnée.
0
Groupe FIrst
28 oct. 2013 à 10:40
<script>
function insererLigne_Fin()
{
document.getElementById('total').value = document.getElementById('Pu').value * document.getElementById('qte').value ;
var cell, ligne;

// on récupère l'identifiant (id) de la table qui sera modifiée
var tableau = document.getElementById("idTable");
// nombre de lignes dans la table (avant ajout de la ligne)
var nbLignes = tableau.rows.length;

ligne = tableau.insertRow(-1);
// création d'une ligne pour ajout en fin de table
// le paramètre est dans ce cas (-1)

// création et insertion des cellules dans la nouvelle ligne créée
cell = ligne.insertCell(0);
cell.innerHTML = "<input type='text'>";

cell = ligne.insertCell(1);
cell.innerHTML = "<input type='text'>";
cell = ligne.insertCell(2);
cell.innerHTML = "<input type='text' id='Pu' value=0 onchange='insererLigne_Fin(); return false;'>";
cell = ligne.insertCell(3);
cell.innerHTML = "<input type='text' id='qte' value=0 onchange='insererLigne_Fin(); return false; '>";
cell = ligne.insertCell(4);
cell.innerHTML = "<input type='text' id='total' readonly>";
}


</script>




<form action="?" method="POST">

<div class="supplier">


<h5>Destinataire de la Facturation:</h5>
<p><strong><input type="text" name="cli_name" title="nom et prenoms du client"></strong><br></p>
<h5>Coordonnées:</h5>
<p>
<input type="text" name="bp" title="Boite postale ou email"><br>
<input type="text" name="tel1" title="numero du client"> / <input type="text" name="tel2" title="entrer un deuxieme numero si possible"> <br>
</p>
</div>
<div class="customer">
<h5>Expediteur:</h5>
<p>
<strong>xxxxxx s.a.r.l</strong><br>
xxxxxxxxxxxx<br>
(BUR) xxxxxxxxxxxx<br>
(COM) xxxxxxxxxxxx<br>
www.xxxxxxxxxxxxx
</p>
</div>
<div class="clearfix"></div>
<div class="details">
<div class=highlighted>
<span>N° Facture:</span> <strong>CLte-</strong>
</div><div>
<span>Date de Facturation:</span> <strong><input type="date" name="date_fact"></strong>
</div><div>
<span>Date d'Echéance:</span> <strong><input type="date" name="date_echeance"></strong>
</div>
</div>
<table class="styled borders" id="idTable">
<thead>
<tr><th>Article</th>
<th>Description</th>
<th>Prix Unitaire (FCFA)</th>
<th>Qte</th>
<th>TOTAL (FCFA)</th>
</tr>
</thead>

<tbody>

<tr>
<td><input type="text" name="article"></td>
<td><input type="text" name="description"></td>
<td><input type="text" name="Pu" id="Pu" value="0" onchange="calcul(); return false;" ></td>
<td><input type="text" name="qte" id="qte" value="0" onchange="calcul();return false;"></td>
<td><input type="text" name="total" id="total" value="" readonly></td>
</tr>


</tbody>
</table>
    <input value="Ajouter" type="button" onclick="insererLigne_Fin(); return false;"/>

<div class="total">
<span>Net a payer</span><strong><input type="text" name="net_payer" readonly></strong>
</div>
<p> </p>
<p> </p><p> </p>
<p align="right">
<strong> Somme Versée</strong> <input type="text"name="somme_remis">      
<br><br>
<strong> Reste à payer</strong> <input type="text"name="rest" readonly>      
<br><br>
<strong> Etat Achat</strong> : Soldé
<input type="radio" name="etat" value="solde">  
Non soldé <input type="radio" name="etat" value="non">    
</p>
<div class="clearfix"></div>

<div class="notes">

<input type="reset" class="grey cancel" value="Annuler">

<input type="submit" class="submit" value="Apercu" >

</div>
</form>
0