begin process at 2012 05 31 15:50:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

La somme de plusieurs lignes dans un tableau en php


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

La somme de plusieurs lignes dans un tableau en php

mercredi 29 septembre 2010 à 09:18:21 | La somme de plusieurs lignes dans un tableau en php

nahac



Bonjour,

Je suis en train de realiser une facture qui contient plusieurs produits(nombre defini par le client )
A la fin je doit additionner la somme de toutes les lignes pour avoir le montant total de la facture en H.T.
Mais j'en ai aucune idée comment faire ça.
Pouvez vous m'aidez.
Merci d'avance.
mercredi 29 septembre 2010 à 10:42:35 | Re : La somme de plusieurs lignes dans un tableau en php

neigedhiver

Salut,

Personnellement, j'aurais fait une addition...

On peut te proposer plusieurs manières de faire, mais si on ne sait pas à quoi ressemble ton code, on ne peut rien dire. On a besoin de savoir ce que tu fais des données, si tu les stockes, les traites, les affiches, comment tu fais ça : est-ce que tu parcours un tableau, une ressources, ets-ce que tu t'y prends autrement... ? Bref...

Y'a bien array_sum() mais je pense que ça ne conviendra pas à ce que tu veux faire.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 29 septembre 2010 à 12:08:01 | Re : La somme de plusieurs lignes dans un tableau en php

nahac


Salut voici le code:
<?php
session_start (); // création d'une nouvelle session ***********************

// variables de connexion **************************************************
$database = "gestion_stock";
$user = "root";
$pwd = "";
$host = "localhost";
// fin variables de connexion **********************************************

//réinitialisation des sessions ********************************************
if(isset($_POST['reset']))
{
session_unregister('selectp');
}
// fin réinitialisation des sessions ****************************************

// deselectionner un produit ***********************************************
$sDelProd = (isset($_GET['iDelProd'])) ? $_GET['iDelProd'] : '';
if($sDelProd !="")
{ if(isset($_SESSION['selectp']))
{
$aDelProd[$_GET['iDelProd']] = $_GET['iDelProd'];
$aSelectedProdq = explode(",", $_SESSION['selectp']);
foreach($aSelectedProdq as $k=>$v)
{
$aElem = explode(":", $v);
$aSelectedProd[$aElem[0]] = $aElem[1];
}

$iNbr = count($aSelectedProd);
if($iNbr ==1)
{
session_unregister('selectp');
}
else
{
$aSelectedProd = array_diff_key($aSelectedProd,$aDelProd);
$_SESSION['selectp'] = '';
foreach($aSelectedProd as $k=>$v)
{
$_SESSION['selectp'] = ($_SESSION['selectp'] == '') ? $k.':'.$v : $_SESSION['selectp'].','.$k.':'.$v;
}
}

header('location:Ajouter_facture3.php');
}
}
// fin deselctionner un produit *********************************************

// connexion au serveur mysql
mysql_pconnect($host,$user,$pwd) or die("Erreur d'accès au serveur Mysql");
// selection de la base de données
mysql_select_db($database) or die("Erreur de selection de la base de données");

// Inialisation des variables utilisateur ********************************
$iSelectedProd = (isset($_POST['refp'])) ? $_POST['refp'] : '';
$iQteProd = (isset($_POST['qte'])) ? (integer) $_POST['qte'] : '';

if($iSelectedProd != "" and is_int($iQteProd) and $iQteProd != 0)
{
if(isset($_SESSION['selectp'])) {$_SESSION['selectp'] .= ",".$iSelectedProd.':'.$iQteProd;
}
else{$_SESSION['selectp'] = $iSelectedProd.':'.$iQteProd;
}
}
// Fin Inialisation des variables utilisateur ****************************

$sSql = "SELECT ref FROM produit";

$iRes = mysql_query($sSql) or die(mysql_error());

$iNbr = mysql_num_rows($iRes);

while($aData = mysql_fetch_assoc($iRes))
{
$aListProd[$aData['ref']] = $aData['ref'];
}

if(isset($_SESSION['selectp']) && isset($aListProd))
{
$aSelectedProdq = explode(",", $_SESSION['selectp']);
foreach($aSelectedProdq as $k=>$v)
{
$aElem = explode(":", $v);
$aSelectedProd[$aElem[0]] = $aElem[1];
}

$aProdNotSelected = array_diff_key($aListProd,$aSelectedProd);
}
else
{
$aProdNotSelected = $aListProd;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Facture</title>

<link href="styles.css" rel="stylesheet" type="text/css" />

</head>

<body>
<form action="#" name="prod" method="post" enctype="multipart/form-data">

<div id="Layer5">
<table width="402" height="219" border="0">
<tr>
<td width="396" bgcolor="#CCCCCC"><p><strong>MICROHARD Vente Materiel et Accessoire </strong></p>
<p><strong>Compte bancaire:</strong><strong><br />
</strong><strong>R.C:</strong></p>
<p><strong>Id_fiscal:</strong></p>
<p><strong>Art_impo:</strong></p>
<p><strong>Tel:0553524888</strong></p>
<p><strong>Adresse:Local N&deg;2 Immeuble HADRI Azeffoun Centre </strong></p></td>
</tr>
</table>
</div>
<div id="Layer8"><img src="../../../EasyPHP 3.0/www/facture/IMAGES/Ajouter_facture_clip_image001_0002.gif" width="184" height="34" />
<div id="Layer18"> <strong><?php echo date("d/F/Y"); ?></strong></div>
</div>

<div id="Layer7"><strong></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="Layer11"><span class="Style2"><strong>Client:<?php require_once('Connections/connect.php'); ?>
<?php
mysql_select_db($database_connect, $connect);
$query_Recordset1 = "SELECT identifiant FROM client";
$Recordset1 = mysql_query($query_Recordset1, $connect) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<label>
<select name="select">
<?php
do {
?>
<option value="<?php echo $row_Recordset1['identifiant']?>"<?php if (!(strcmp($row_Recordset1['identifiant'], $row_Recordset1['identifiant']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Recordset1['identifiant']?></option>
<?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
$rows = mysql_num_rows($Recordset1);
if($rows > 0) {
mysql_data_seek($Recordset1, 0);
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
}
?>
</select>
</label>
<?php
mysql_free_result($Recordset1);
?>
</strong>
</span>
<div class="Style2" id="Layer12"><strong>Facture N&deg;: <?php echo date("Y");?></strong></div>
<label></label>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Mode de paiement: </strong>
<label>
<select name="select">
<option>En esp&egrave;ce</option>
<option>Par ch&egrave;que</option>
</select>
</label>
<p>
<label>
Produit : <select name="refp">
<option value="">Choisir</option>
<?php

foreach($aProdNotSelected as $k=>$v)
{
?>
<option value="<?php echo $v; ?>"> <?php echo $v; ?> </option>
<?php
}
?>
</select>
Quantit&eacute; : <input type="text" name="qte" size="3"/>
<input type="button" name="add" value="Ajouter" onclick="javascript:document.prod.submit();"/>
</label>
<label> </label>

<div id="Layer14">
<table width="1209" height="54" border="1">
<tr>
<td width="185"><strong>Reference</strong></td>
<td width="487"><strong>Designation</strong></td>
<td width="126"><strong>Quantite</strong></td>
<td width="135"><strong>Prix Unitaire </strong></td>
<td width="125"><strong>Montant</strong></td>
</tr>
</table>
</td>
<?php
$somme =0;
?>
<?php
mysql_free_result($iRes);

if(isset($aSelectedProd))
{
$somme = 0;
foreach($aSelectedProd as $k=>$v)
{
$Sqlp = "SELECT * FROM produit WHERE ref ='".$k."' " ;
$ress = mysql_query($Sqlp);
$data = mysql_fetch_assoc($ress);


?>
<label> </label>
<table width="1208" border="1">
<tr>
<td width="186"> <label></label> <strong><spacer /><?php echo $data['ref'];?></strong>
<br/>
<td width="486" height="35"><strong><?php echo $data['nom'];?>
</strong></td>
<td width="127" height="35"><strong><?php echo $v;?></strong></td>
<td width="135" height="35"><strong><?php echo $data['prix_achat'];?></strong></td>
<td width="124" height="35"><strong><?php echo $data['prix_achat']*$v;?></strong>
<a href="Ajouter_facture3.php?iDelProd=<?php echo $data['ref']; ?>">Enlever</a>
</td>
</tr>
</table>


<div align="right">

<table width="244" border="1">
<tr>
<td>Total H.T:<?php $somme = $somme + $data['prix_achat']*$v;?>

</td>
</tr>
</table>
<table width="242" border="1">
<tr>
<td>Total T.V.A: </td>
</tr>
</table>
<table width="242" border="1">
<tr>
<td>Total T.T.C: </td>
</tr>
</table>
<?php
}
}
?>
<div align="center">
<p><strong><?php echo "La presente facture est arretée à la somme de :" ;?>
</strong></p>
<p><strong>
<input type="submit" name="reset" value="R&eacute;initialiser" />
<input type="submit" name="valider" value="Valider" />
</strong></p>
</div>
</div>
</div>
</p>
<p>&nbsp;</p>
</form>

</body>
</html>
mercredi 29 septembre 2010 à 13:41:02 | Re : La somme de plusieurs lignes dans un tableau en php

neigedhiver

C'est très difficilement lisible... La balise code est là justement pour que le code soit lisible, et elle n'est pas difficile à utiliser...

Ceci :
Code PHP :
header('location:Ajouter_facture3.php');

n'est pas correct. Il FAUT écrire :
Code PHP :
header('Location: Ajouter_facture3.php');

"Location" prend une majuscule : ce n'est pas facultatif, c'est un entête HTTP défini dans les standards et implémenté ainsi. Il faut aussi un espace après les deux points, idem, c'est défini ainsi dans les standards.

Code PHP :
$rows = mysql_num_rows($Recordset1); 

Tu as déjà calculé le nombre de lignes, que tu as stocké dans $totalRows_Recordset1. Là, en plus, tu recalcule cette valeur à chaque nouveau résultat (comme s'il risquait de changer pendant la lecture ?)

Bon. Pour répondre à ta question, puisque tu parcours des résultats qui contiennent entre autres informations, le prix, il te suffit de stocker les prix dans un tableau et d'utiliser array_sum() sur ce tableau, au moment de l'afficher.

Grosse erreur de conception qui entraîne des performances déplorables : utiliser une requête SELECT pour chaque produit... MySQL permet d'utiliser IN dans la clause WHERE... Je t'invite à aller jeter un oeil à la doc de MySQL, tu y trouveras des choses intéressantes (ça te permettra de ne faire qu'une requête pour sélectionner tous les produits d'une liste).

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)


Cette discussion est classée dans : php, tableau, lignes, facture, somme


Répondre à ce message

Sujets en rapport avec ce message

afficher une longue variable php sur plusieurs lignes dans un tableau html [ par bastiencb ] je ne parvient pas à ce que les variables trop longues (un texte entier)que j'extrait de ma base de données mysql s'affichent dans un tableau html sur somme des lignes d'un tableau [ par yravas ] bonjour, j'ai réalisé un tableau avec plusieurs textbox où un utilisateur entre des valeurs. J'ai réussi à calculer la somme total du tableau, la so Générer les lignes d'un tableau en php [ par Kaotic21 ] Bonjour a tous,Voila mon probleme est le suivant :je viens de développer un formulaire en php basique concernant des notes de frais d'une entreprise.u Php et checkbox [ par proprince ] slt, je ve selectionner les lignes écrites dans le tableau a l'aide des checkbox pour effectuer des fonction que jé cérer.c a d : lorsque j'apui sur m Inversion des lignes et colonnes dans un tableau issu de MySql [ par pclavier ] Bonjour,J'ai un tableau issu d'une requête mysql.Je souhaite affiche les lignes verticalement et les colonnes horizontalement (soit inverser le tablea Tableau triable ajax [ par Kikinoubarca ] Bonjour, Me voici confronté à un gros problème. Explication : J'ai une page php nommé index.php qui dispose de deux grandes parties. La partie du haut Checkbox tableau php/html [ par ninho44 ] Bonjour a tous,voila je code en php un site intranet...je voudrais faire un tableau avec quatre colonnes dont une qui contient des checkbox...comme ce transformer un tableau multidimensionnel javascript en tableau multidimensionnel php [ par sagat06 ] Bonjour à tous.Je tiens à préciser que mon niveau en php est assez limité, mes excuses, je tenterai d'y remédier.Voilà mon soucis: actuellement sur un tableau dynamique [ par oppossom ] slt tous, j'ai un question qui m'a fait mal à tete ????je veux programmer un tableau dynamique qui affiche le contenu d'un table de la base des donnee Pagination d'un tableau en php [ par liobrice ] Bonjour sauriez vous comment faire la pagination d'un tableau en php.Voici ma fonction qui me permet de le faire./ displayTop2 ($filename,$n)// Foncti


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales