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 28/07/2007, 11h59   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4
Points : 1
Points : 1
Par défaut [SQL] Affichage de données

Bonjour, je developpe un programme de gestion d'articles et de tarifs.

j'utilise php et mysql.

Explication :
- par un systeme de case a cocher (il y en a 3), je selectionne les tarifs a afficher pour impression. (cette partie fonctionne)

- j'utilise une boucle while pour l'affichage de données.(ca va aussi )

- par contre, quand je selectionne 2 ou toutes les cases a cocher, cela m'affiche toute mes données (c bon) mais je voudrais que les données qui correspondent (a un champ nommé gamme dans ma bdd) s'affichent avec une séparation entre chacune des gammes.(la je bloque)

-Pour corser le tout, je voudrais que les données s'affichent sur 3 colonnes selon une quantité predifinie.

voici 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
$id_tarif=$_POST['tarif'];
 
$req1="select * from tarif where id_tarif='$id_tarif'";
$res1=mysql_query($req1);
 while($data1=mysql_fetch_array($res1))
 {
  $factoring=$data1['factoring'];
  $transport=$data1['transport'];
  $rrr=$data1['rrr'];
 }
 
$options = $_POST['options'];
 
 $ctrl=sizeof($options);
 if($ctrl=='1')
 {
$o=$options[0];
   $o1='';
   $o2='';
 
$req = "SELECT * FROM articles where gamme='$o' and fax='1' order by gamme, origine, nom";
$res=mysql_query($req);
 $total=mysql_num_rows($res);
 
 }elseif($ctrl=='2')
 {
   $o=$options[0];
   $o1=$options[1];
   $o2='';
 
   $req = "SELECT * FROM articles where gamme='$o' and fax='1' || gamme='$o1' and fax='1' order by gamme, origine, nom";
   $res=mysql_query($req);
    $total=mysql_num_rows($res);
 
 }else
 {
   $o=$options[0];
   $o1=$options[1];
   $o2=$options[2];
   $req = "SELECT * FROM articles where fax='1' order by gamme, origine, nom";
   $res=mysql_query($req);
   $total=mysql_num_rows($res);
}
 
 
echo'<center><table border="0" bordercolor="blue" height="100%" width="80%"><tr><td align="center">DELTA MAREE</td></tr>
<tr><td align="center">';
 
while($data=mysql_fetch_array($res))
{
   $tablo[]=$data;
}
 
 $nbcol=2; //--- détermine le nombre de colonnes
 
$nb=count($tablo);
for($i=0;$i<$nb;$i++){
 
//--- les valeurs que l'on souhaite afficher
$nom=$tablo[$i]['nom'];
$conditionnement=$tablo[$i]['conditionnement'];
$origine=$tablo[$i]['origine'];
$prix=$tablo[$i]['prix'];
$marge=$tablo[$i]['marge'];
 
   $pm=$prix+$marge;
  $pv=(($pm*$rrr)+$transport)*$factoring;
  $pv=round($pv,2);
 
  if($total>15)
{
 
if($i%$nbcol==0)
echo '<table border="0" width="70%" bordercolor="red" cellpadding="0" cellspacing="0">';
echo '<tr>';
echo '<td align="center" width="30%">',$nom,'</td>','<td align="center" width="20%">',$conditionnement,'</td>','<td align="center" width="30%">',$origine,'</td>','<td align="center" width="20%">',$pv,'</td>';
 
if($i%$nbcol==($nbcol-1))
echo '</tr>';
 
}
else{
echo'<table border="0" width="60%" bordercolor="red" cellpadding="0" cellspacing="0"><tr><td align="center" width="35%">',$nom,'</td>','<td align="center" width="20%">',$conditionnement,'</td>','<td align="center" width="25%">',$origine,'</td>','<td align="center" width="20%">',$pv,'</td></tr>';
}
}
 
echo'</table>';
Merci d'avance.
bossgui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2007, 16h43   #2
Membre éclairé
 
Avatar de nicocsgamer
 
Inscription : mars 2005
Messages : 324
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Luxembourg

Informations forums :
Inscription : mars 2005
Messages : 324
Points : 365
Points : 365
Envoyer un message via MSN à nicocsgamer
Dans ta requete sql, tu peux faire un group by sur la gamme de produit.

Ou alors tu fais deux boucles. La première parcoure les gammes et pour chaque gamme tu parcoure les produits.
nicocsgamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2007, 16h45   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4
Points : 1
Points : 1
pour le coup des 2 boucles, tu peux approfondir s'il te plait car je vois pas trop comment les imbriquées.

group by marche comme order by?
bossgui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2007, 17h51   #4
Membre éclairé
 
Avatar de nicocsgamer
 
Inscription : mars 2005
Messages : 324
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Luxembourg

Informations forums :
Inscription : mars 2005
Messages : 324
Points : 365
Points : 365
Envoyer un message via MSN à nicocsgamer
Group by regroupe les données par "paquets". Par exemple toutes les lignes dont la gamme sera égale à 1 ensemble.

Pour les deux boucles :

Une première parcoure les gamme. A chaque tour de celle ci tu récupére le numéro de la gamme par exemple.

Tu fais une requête à la base pour selectionner tous les produits dont la gamme est égale au numéro que tu viens de récupéré.(clause where).

Tu fais une boucle qui parcoure tous les produits de ta requête.

Algo :

Recup toutes les gammes
Tant que des gamme dans le résultat
Recup numéro gamme courante
Recup tous les produits de cette gamme
Tant que des produits dans le résultat

Fin tant que
Fin tant que
nicocsgamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2007, 18h11   #5
Invité de passage
 
Inscription : juillet 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4
Points : 1
Points : 1
quand tu parles de numero de gamme, tu penses a un id?
parce que je travaille que sur une table en fait qui se decompose comme tel :

id, nom, conditionnement, gamme, origine, marge, prix, fax. Donc je peux recuperer les noms des gammes mais par leur id car il est pas unique pour le champ gamme.

Dans ton explication, y a un truc que je comprend pas, quand tu dis :
Citation:
Une première parcoure les gamme. A chaque tour de celle ci tu récupére le numéro de la gamme par exemple.

Tu fais une requête à la base pour selectionner tous les produits dont la gamme est égale au numéro que tu viens de récupéré.(clause where).

Tu fais une boucle qui parcoure tous les produits de ta requête.
Sachant que j'ai 4 gammes, faut que je fasses 4 fois l'operation?

Sinon, tu pourrais m'aiguiller un peu car etant autodidacte, je ne fonctionne pas trop avec des algorithmes (d'ou la lourdeur de mon code) et j'ai du mal à traduire ton algorithme en code

Et dernier abus, pour la partie de mon code ou je recupere les case a cocher dans un tableau, comment je peux automatiser ce code si je veux rajouter des case à cocher?

Encore merci de ta patience.
bossgui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2007, 22h44   #6
Membre éclairé
 
Avatar de nicocsgamer
 
Inscription : mars 2005
Messages : 324
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Luxembourg

Informations forums :
Inscription : mars 2005
Messages : 324
Points : 365
Points : 365
Envoyer un message via MSN à nicocsgamer
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql1 = "select * from gamme";
 
$resultat1 = mysql_query($sql1);
 
 while($data1 = mysql_fetch_array($resultat1))
 {
   $gamme = data1['idGamme'];
   $sql2 = "select * from produit where idGamme = ".$gamme; 
   $resultat2 = mysql_query($sql2); 
   while($data2 = mysql_fetch_array($resultat2))
   {
   //affichage des produits d'une gamme
   }
 }
nicocsgamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2007, 12h30   #7
Invité de passage
 
Inscription : juillet 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 4
Points : 1
Points : 1
Merci à toi, j'ai adapté ton idée avec mon code car je t'ai dit, je n'ai pas d'id pour la gamme et ca fonctionne correctement, maintenant il ne me reste plus que de la mise en page.

Merci à toi.
bossgui 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 20h35.


 
 
 
 
Partenaires

Hébergement Web