Calcul dynamique
stephy
-
stephy -
stephy -
Bonjour,
Voici mon pb:
je veux créer une commande ;
je selectionne un fournisseur grace à une liste déroulante
une fois le fournisseur selectionné, j'ai un tableau qui saffiche avec les produit que le fournisseur vend, avec la référence et le prix associé
mon tableau contient aussi une colonne avec en titre "quantité" qui correspond à la qte de produit que l'on souhaite commandé, et une colonne 'total' qui calcul le prix*la qte
je voudrais quen entrant simplement une qte dans la ligne correspondante au produit dont jai besoin, mon total saffiche sans appuyer sur un bouton
étant donné que c un tableau contenant plusieur produit il faut associé la qte au produit, donc la jai un peu de mal,jai essayé la métode des sessions, ensuite jai opté pr le javascript, mais rien ne fonctionne correctement
merci de votre aide
voici mon code:
<?
session_start();
require_once ('inc/header.php');
$res=0;
$total=0;
?>
<center>
<h1>FOURNISSEURS ET PRODUITS ASSOCIES</h1></center>
<form name="fournisseur" action="fournisseur.php" method="POST">
<center>Fournisseur :
<select name="fournisseur">
<option value="0"></option>
<?php
$montant=0;
//on selectionne le nom des fournisseurs pour la liste deroulante
$result = mysql_query ("SELECT id_fournisseur, nom_fournisseur FROM fournisseurs ORDER BY nom_fournisseur");
if (!$result)
{
echo "Une erreur est survenue.\n";
}
while ($row = mysql_fetch_row($result))
{
echo "<option value=\"".$row[0]."\">".$row[1]."</option>";
}
?>
</select>
<input type="submit" value="OK" name="valider" />
</form>
<table border=1>
<?
echo '<tr><td align="left" colspan=6>';
if (isset($_POST['valider']) || isset($_SESSION['fournisseur']))
{
// coordonnees du fournisseur pour le devis
$result = mysql_query ("select nom_fournisseur, rue_fournisseur, cp_fournisseur, ville_fournisseur from fournisseurs where fournisseurs.id_fournisseur=".$_SESSION['fournisseur']."" );
if (!$result)
{
echo "Une erreur est survenue.\n";
}
while ($row = mysql_fetch_row($result))
{
echo '<center>';
echo $row[0];
echo '<br/><br/>';
echo "adresse : ";
echo '<br/><br/>';
echo $row[1];
echo '<br/>';
echo $row[2]." " .$row[3];
echo '</center>';
echo '<br/></td></tr><tr>';
?>
<tr>
<th>reference</th>
<th>designation</th>
<th>quantite</th>
<th>unite</th>
<th>prix</th>
<th>total</th>
</tr>
<?
if(isset($_GET['act']))
{
$action=$_GET['act'];
}
$now=date('j/m/y');
echo 'date du jour : '.$now;
$result2 = mysql_query ("select COUNT(id_produit) from produits, fournisseurs where fournisseurs.id_fournisseur=produits.id_fournisseur and fournisseurs.id_fournisseur=".$_SESSION['fournisseur']."" );
if (!$result2)
{
echo "Une erreur est survenue.\n";
}
while ($row2 = mysql_fetch_row($result2))
{
$nb=$row2[0];
}
$result1 = mysql_query ("select id_produit, nom_produit, prix_produit, nom_unite from produits, unite_produits , fournisseurs where fournisseurs.id_fournisseur=produits.id_fournisseur and unite_produits.id_unite=produits.unite_produit and fournisseurs.id_fournisseur=".$_SESSION['fournisseur']."" );
if (!$result1)
{
echo "Une erreur est survenue.\n";
}
$j=1;
echo "<br/>";
while ($row1 = mysql_fetch_row($result1))
{
if ($j<$nb)
{
echo "</td><td>";
echo $row1[0];
echo "</td><td>";
echo $row1[1];
echo "<td>";
echo '<input type="text" value="" >';
//echo $_SESSION['quantite'][$j];
echo "</td><td>";
echo $row1[3];
echo "</td><td>";
echo $row1[2];
echo "</td><td>";
echo '<input type="text" id="total" name="total" value="">';
// echo $total;
echo "</td>";
echo "</tr>";
}
}
echo '<tr><td colspan="5" align="right">';
echo '<b>Total HT </b>: </td><td>'.$_SESSION['montant']. '€';
echo '</td></tr><tr><td colspan="6">';
echo '</td></tr></table>';
echo '<a href="exportation.php">CREER LA COMMANDE</a>';
// echo '<input type="submit" value="CREER LA COMMANDE" name="valider" />';
echo '<br/>';
}
}
?>
Voici mon pb:
je veux créer une commande ;
je selectionne un fournisseur grace à une liste déroulante
une fois le fournisseur selectionné, j'ai un tableau qui saffiche avec les produit que le fournisseur vend, avec la référence et le prix associé
mon tableau contient aussi une colonne avec en titre "quantité" qui correspond à la qte de produit que l'on souhaite commandé, et une colonne 'total' qui calcul le prix*la qte
je voudrais quen entrant simplement une qte dans la ligne correspondante au produit dont jai besoin, mon total saffiche sans appuyer sur un bouton
étant donné que c un tableau contenant plusieur produit il faut associé la qte au produit, donc la jai un peu de mal,jai essayé la métode des sessions, ensuite jai opté pr le javascript, mais rien ne fonctionne correctement
merci de votre aide
voici mon code:
<?
session_start();
require_once ('inc/header.php');
$res=0;
$total=0;
?>
<center>
<h1>FOURNISSEURS ET PRODUITS ASSOCIES</h1></center>
<form name="fournisseur" action="fournisseur.php" method="POST">
<center>Fournisseur :
<select name="fournisseur">
<option value="0"></option>
<?php
$montant=0;
//on selectionne le nom des fournisseurs pour la liste deroulante
$result = mysql_query ("SELECT id_fournisseur, nom_fournisseur FROM fournisseurs ORDER BY nom_fournisseur");
if (!$result)
{
echo "Une erreur est survenue.\n";
}
while ($row = mysql_fetch_row($result))
{
echo "<option value=\"".$row[0]."\">".$row[1]."</option>";
}
?>
</select>
<input type="submit" value="OK" name="valider" />
</form>
<table border=1>
<?
echo '<tr><td align="left" colspan=6>';
if (isset($_POST['valider']) || isset($_SESSION['fournisseur']))
{
// coordonnees du fournisseur pour le devis
$result = mysql_query ("select nom_fournisseur, rue_fournisseur, cp_fournisseur, ville_fournisseur from fournisseurs where fournisseurs.id_fournisseur=".$_SESSION['fournisseur']."" );
if (!$result)
{
echo "Une erreur est survenue.\n";
}
while ($row = mysql_fetch_row($result))
{
echo '<center>';
echo $row[0];
echo '<br/><br/>';
echo "adresse : ";
echo '<br/><br/>';
echo $row[1];
echo '<br/>';
echo $row[2]." " .$row[3];
echo '</center>';
echo '<br/></td></tr><tr>';
?>
<tr>
<th>reference</th>
<th>designation</th>
<th>quantite</th>
<th>unite</th>
<th>prix</th>
<th>total</th>
</tr>
<?
if(isset($_GET['act']))
{
$action=$_GET['act'];
}
$now=date('j/m/y');
echo 'date du jour : '.$now;
$result2 = mysql_query ("select COUNT(id_produit) from produits, fournisseurs where fournisseurs.id_fournisseur=produits.id_fournisseur and fournisseurs.id_fournisseur=".$_SESSION['fournisseur']."" );
if (!$result2)
{
echo "Une erreur est survenue.\n";
}
while ($row2 = mysql_fetch_row($result2))
{
$nb=$row2[0];
}
$result1 = mysql_query ("select id_produit, nom_produit, prix_produit, nom_unite from produits, unite_produits , fournisseurs where fournisseurs.id_fournisseur=produits.id_fournisseur and unite_produits.id_unite=produits.unite_produit and fournisseurs.id_fournisseur=".$_SESSION['fournisseur']."" );
if (!$result1)
{
echo "Une erreur est survenue.\n";
}
$j=1;
echo "<br/>";
while ($row1 = mysql_fetch_row($result1))
{
if ($j<$nb)
{
echo "</td><td>";
echo $row1[0];
echo "</td><td>";
echo $row1[1];
echo "<td>";
echo '<input type="text" value="" >';
//echo $_SESSION['quantite'][$j];
echo "</td><td>";
echo $row1[3];
echo "</td><td>";
echo $row1[2];
echo "</td><td>";
echo '<input type="text" id="total" name="total" value="">';
// echo $total;
echo "</td>";
echo "</tr>";
}
}
echo '<tr><td colspan="5" align="right">';
echo '<b>Total HT </b>: </td><td>'.$_SESSION['montant']. '€';
echo '</td></tr><tr><td colspan="6">';
echo '</td></tr></table>';
echo '<a href="exportation.php">CREER LA COMMANDE</a>';
// echo '<input type="submit" value="CREER LA COMMANDE" name="valider" />';
echo '<br/>';
}
}
?>
A voir également:
- Calcul dynamique
- Fiche pratique tableau croisé dynamique - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Liste déroulante dynamique excel - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
4 réponses
Salut,
sur le input contenant la quantité du produit as tu essayé de faire un:
onkeydown = "document.getElementById('id_de_ton_input_total').value = (this * document.getElementById('id_de_ton_input_prixduproduit').value);"
Et n'oublies pas de tester si on a rentré un caractère numérique, sinon ça te mettra une undifined dans ton input total
sur le input contenant la quantité du produit as tu essayé de faire un:
onkeydown = "document.getElementById('id_de_ton_input_total').value = (this * document.getElementById('id_de_ton_input_prixduproduit').value);"
Et n'oublies pas de tester si on a rentré un caractère numérique, sinon ça te mettra une undifined dans ton input total
je ne travail pas dans un formulaire, c juste ma qte qui est ds un input, c pr cela que je ne sais pas si je mi prend bien
pour calculer le montant total je n'aurais juste a faire un $montant=$montant+$total dans une boucle;
le pb c pr le total en fasse de la ligne souhaité
je ne comprend pas ce que vous voulais dire pour 'id_de_ton_input_prixduproduit' ?
pour calculer le montant total je n'aurais juste a faire un $montant=$montant+$total dans une boucle;
le pb c pr le total en fasse de la ligne souhaité
je ne comprend pas ce que vous voulais dire pour 'id_de_ton_input_prixduproduit' ?
J'ai essayé avec ce que vous m'avez conseillé, mais qd je saisie une qte, le total ne saffiche pas
while ($row1 = mysql_fetch_row($result1))
{
if ($j<$nb)
{
echo "</td><td>";
echo $row1[0];
echo "</td><td>";
echo $row1[1];
echo "<td>";
echo '<input type="text" id="qte" value="" onkeydown = "document.getElementById(\'total\').value = (this * document.getElementById("prix").value);" >';
//echo $_SESSION['quantite'][$j];
echo "</td><td>";
echo '<input type="text" id="prix" value="'.$row1[3].'">';
//echo $row1[3];
echo "</td><td>";
echo $row1[2];
echo "</td><td>";
echo '<input type="text" id="total" name="total" value="">';
// echo $total;
echo "</td>";
echo "</tr>";
$montant=$montant+$total;
}
}
while ($row1 = mysql_fetch_row($result1))
{
if ($j<$nb)
{
echo "</td><td>";
echo $row1[0];
echo "</td><td>";
echo $row1[1];
echo "<td>";
echo '<input type="text" id="qte" value="" onkeydown = "document.getElementById(\'total\').value = (this * document.getElementById("prix").value);" >';
//echo $_SESSION['quantite'][$j];
echo "</td><td>";
echo '<input type="text" id="prix" value="'.$row1[3].'">';
//echo $row1[3];
echo "</td><td>";
echo $row1[2];
echo "</td><td>";
echo '<input type="text" id="total" name="total" value="">';
// echo $total;
echo "</td>";
echo "</tr>";
$montant=$montant+$total;
}
}
re-bonjour:
les id tu as l'air ed les avoir bien mis.
essaye de mettre cela:
echo "<input type=\"text\" id=\"qte\" value=\"\" onkeydown = \"document.getElementById('total').value = (this.value * document.getElementById('prix').value);\" >";
pour voir si ça marche.
Tu es obligé de passer par du javascript pour mettre à jour le champ total.
les id tu as l'air ed les avoir bien mis.
essaye de mettre cela:
echo "<input type=\"text\" id=\"qte\" value=\"\" onkeydown = \"document.getElementById('total').value = (this.value * document.getElementById('prix').value);\" >";
pour voir si ça marche.
Tu es obligé de passer par du javascript pour mettre à jour le champ total.
non, il faut que tu crée tes input dynamiquement, afin de créer des id dynamique.
ainsi, tu peux faire:
dans ton while: ($id = id unique de chaque ligne de ta requete)
echo "<input id='prix".$id."'
et dans le onkeypress => pense à mettre les id suivi du numéro.
et echo "<input id='total".$id"'
comme cela ils ont un id unique.
sinon, c'est normal que ça marche pas, car ils ont tous le même nom.
ainsi, tu peux faire:
dans ton while: ($id = id unique de chaque ligne de ta requete)
echo "<input id='prix".$id."'
et dans le onkeypress => pense à mettre les id suivi du numéro.
et echo "<input id='total".$id"'
comme cela ils ont un id unique.
sinon, c'est normal que ça marche pas, car ils ont tous le même nom.
Merci guimtond'avoir pris le tps de me répondre,
voici donc mon code avec les $id dynamique, pour l'instant le code se fait tjr sur la mm ligne:
while ($row1 = mysql_fetch_row($result1))
{
if ($i<$nb)
{
echo "</td><td>";
//reference du produit
echo $row1[0];
echo "</td><td>";
//designation du produit
echo $row1[1];
echo "<td>";
//quantite du produit
echo "<input type=\"text\" id=\"qte".$i."\" value=\"\" onkeydown = \"document.getElementById('total".$i."').value = (this.value * document.getElementById('prix".$i."').value);\" >";
echo "</td><td>";
//unite du produit
echo $row1[3];
echo "</td><td>";
// echo $row1[2];
//prix du produit
echo "<input type=\"text\" id=\"prix".$i."\"
name=\"prix\" readonly value=\"$row1[2]\" />";
echo "</td><td>";
echo "<input type=\"text\" id=\"total".$i."\" name=\"total\" readonly value=\"\" >";
echo "</td>";
echo "</tr>";
$i=$i++;
$montant=$montant+$total;
}
}
voici donc mon code avec les $id dynamique, pour l'instant le code se fait tjr sur la mm ligne:
while ($row1 = mysql_fetch_row($result1))
{
if ($i<$nb)
{
echo "</td><td>";
//reference du produit
echo $row1[0];
echo "</td><td>";
//designation du produit
echo $row1[1];
echo "<td>";
//quantite du produit
echo "<input type=\"text\" id=\"qte".$i."\" value=\"\" onkeydown = \"document.getElementById('total".$i."').value = (this.value * document.getElementById('prix".$i."').value);\" >";
echo "</td><td>";
//unite du produit
echo $row1[3];
echo "</td><td>";
// echo $row1[2];
//prix du produit
echo "<input type=\"text\" id=\"prix".$i."\"
name=\"prix\" readonly value=\"$row1[2]\" />";
echo "</td><td>";
echo "<input type=\"text\" id=\"total".$i."\" name=\"total\" readonly value=\"\" >";
echo "</td>";
echo "</tr>";
$i=$i++;
$montant=$montant+$total;
}
}
seule ma qte se trouve ds un input
je ne comprend pas ce que vs voulez dire pr 'id_de_ton_input_prixduproduit' ?