Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2006, 17h36   #1
Membre du Club
 
Inscription : septembre 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 98
Points : 61
Points : 61
Par défaut [Conception] Faire une somme de valeurs définies par une boucle

Bonjour à tous et merci à vous de vous attardez sur mon problème,

Mon problème est le suivant (je l'ai simplifié):

J'ai une table composée de 2 colonnes id et prix et 5 lignes.
J'aimerais additionner la valeur prix de la 2e ligne avec celle de la 3e ligne.

Jusque là rien de bien compliqué me direz-vous. Seulement voilà, mes id sont déterminés par une boucle... Comment dès lors pointer les id qui m'intéresse (ici 2 et 3)....

J'espère avoir été assez clair ...
fixbraun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 17h55   #2
Membre habitué
 
Avatar de alexmorel
 
Inscription : septembre 2003
Messages : 196
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2003
Messages : 196
Points : 120
Points : 120
Envoyer un message via MSN à alexmorel
dans ta boucle qui te donne tes id

Code :
1
2
3
4
5
6
 
$somme = 0;
do
{
  $somme = $somme + table[$id]['prix'];
}
__________________
A.Morel
alexmorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 18h30   #3
Membre confirmé
 
Avatar de max44410
 
Étudiant
Inscription : juin 2003
Messages : 426
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2003
Messages : 426
Points : 259
Points : 259
Envoyer un message via MSN à max44410 Envoyer un message via Skype™ à max44410
Citation:
Envoyé par alexmorel
dans ta boucle qui te donne tes id

Code :
1
2
3
4
5
6
 
$somme = 0;
do
{
  $somme = $somme + table[$id]['prix'];
}
Doit manquer un while dans ton code je pense ...

Pour les id 2 et 3 pas besoin de boucle :
Code :
1
2
 
$somme = table[2]['prix']+table[3]['prix'];
__________________
Venez voir par là...
max44410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 18h53   #4
Membre du Club
 
Inscription : septembre 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 98
Points : 61
Points : 61
Citation:
Envoyé par max44410
Doit manquer un while dans ton code je pense ...

Pour les id 2 et 3 pas besoin de boucle :
Code :
1
2
 
$somme = table[2]['prix']+table[3]['prix'];
D'accord avec toi, sauf que j'ai simplifié mon problème pour qu'il vous soit plus compréhensible... Il s'avère en fait que mes ids sont définis par un formluraire. Les ids de ce formulaire sont récupérés au moyen d'une boucle. D'où mon probleme de: faire une somme dans une boucle...

Pour reformuler en d'autres termes et pour récupere ton code, comment ferais-tu maintenant pour aditionner n valeurs ??
fixbraun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 20h06   #5
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Essaie d'être un petit peu plus clair...

As-tu toujours 2 valeurs à additionner? Ce sont 2 valeurs récupérées du formulaire? Peux-tu en entrer plusieurs ou es-tu limité à 2?

webrider
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 20h21   #6
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Pour infos tu peux aussi faire ca en SQL :

Code :
SELECT SUM(price) FROM `table` WHERE id IN(2,4)
ajoute les prix des id 2 et 4.

Bye
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 20h28   #7
Membre du Club
 
Inscription : septembre 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 98
Points : 61
Points : 61
OK je recommence avec mon code.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Je récupère mes données
$options_text = $_GET['options_text']; // Cette valeur arrive sous la forme un chiffre/un chiffre/un chiffre/un chiffre...	(ex: 5/8/9/10..)	

// Je récupère chacun des chiffres séparés par un slash - chaque chiffre correspondra à un id
$split = explode("/", $options_text);
			
// On lance une boucle. 

for($i = 1; $i < count($split); $i++){
		
// On sélectionne dans les DB les lignes qui nous concernent
		
$query = "SELECT * FROM $table WHERE id=$split[$i]";
$result = mysql_query($query);

// On lance une deuxième boucle. Elle permet d'aller chercher les valeurs correspondantes à chaque id

$j=0;
while ($j < $nb){

$article = mysql_result($result,$j,"article");
$prix = mysql_result($result,$j,"prix");
$description = mysql_result($result,$j,"description");
		
echo "$article - $prix - $description";

$j++; 
// On ferme les 2 boucles
}
}
J'obtiendrai donc plusieures lignes comprenant un article, son prix et sa description..

J'aimerais maintenant faire la somme des prix de ces articles en sachant que:
- Le nombre d'articles varient (en fonction du nombre d'id)
- Les ids sont déterminés par une boucle

J'espère avoir été assez clair cette fois-ci
fixbraun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 20h38   #8
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
C'est plus facile avec du code

Voilà qui devrait régler ton problème

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Je récupère mes données
$options_text = $_GET['options_text']; // Cette valeur arrive sous la forme un chiffre/un chiffre/un chiffre/un chiffre...	(ex: 5/8/9/10..)	

// Je récupère chacun des chiffres séparés par un slash - chaque chiffre correspondra à un id
$split = explode("/", $options_text);
			
// On lance une boucle. 

$total =0; // Le total est à 0 avant la boucle

for($i = 1; $i < count($split); $i++){
		
// On sélectionne dans les DB les lignes qui nous concernent
		
$query = "SELECT * FROM $table WHERE id=$split[$i]";
$result = mysql_query($query);

// On lance une deuxième boucle. Elle permet d'aller chercher les valeurs correspondantes à chaque id

$j=0;
while ($j < $nb){

$article = mysql_result($result,$j,"article");
$prix = mysql_result($result,$j,"prix");
$description = mysql_result($result,$j,"description");
		
echo "$article - $prix - $description";

$j++;

$total += $prix; // A chaque passage $total s'incrémente de $prix
 
// On ferme les 2 boucles
}
}

echo $total;
webrider
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 20h41   #9
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 570
Points : 2 506
Points : 2 506
Salut, excuse-moi, mais je n'ai pas bien saisi le problème : d'où vient le $nb dans ta condition de la boucle while ?

Sinon, petites remarques en passant :
- Tu fais ence qui est déconseillé : dans ton cas, tu n'as besoin apparemment que du prix ; tu devrais donc faire- Tu fais autant de requête que tu reçois d'ID, tu pourrais faire
Code :
$sql = 'SELECT prix FROM ' . $table . ' WHERE id IN = (' . implode(',', $split) . ')';
et tu itères sur la collection que tu reçois

Bon développement
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 23h46   #10
Membre du Club
 
Inscription : septembre 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 98
Points : 61
Points : 61
MERCI beaucoup webrider pour ta solution! Vu comme ça évidemment c'est très simple... Et dire que je me suis cassé la tête pour rien Je ne connaissais pas +=, autant pour moi..

Nesmontou, je n'ai pas eu l'occasion d'essayer ta solution mais merci tout de même!
fixbraun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h15.


 
 
 
 
Partenaires

Hébergement Web