grille comparative aide ps

Eléphanteau du PHP | 41 Messages

09 déc. 2007, 12:12

Salut,

J’ai besoin d’aide sur un problème : je dois réaliser une grille comparative de prix.
Pour cela j ai une table mysql voir exemple plus bas.
Je vais la réaliser avec les tableaux (html)
(Image).

Pour l’entête du tableau j ai réussi je fais une requête ($requette="SELECT DISTINCT `quantite` FROM `tarif_quantite` WHERE `id_famille` =1";). Je récupère donc toutes les quantités disponibles (sans doublons)
Mais âpres je bloc, je ne sais pas comment faire les lignes de mon tableau. Le dois récupérer de ma table tous les éléments avec la même id_produit.
Exemple :

Code : Tout sélectionner

(1, 1, 1, 34, 100),(2, 1, 1, 45, 200),(3, 1, 1, 59, 300),(4, 1, 1, 69, 400)
Et je dois les placer sous la bonne quantité de mon tableau cela pour chaque id_produit différent.
(voir explication sou forme d’image).
Si vous pouvez m aider cela m aiderais beaucoup.

Salutations

Exemple :

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS ` tarif_quantite ` ( `id` int(11) NOT NULL auto_increment, `id_famille` int(11) NOT NULL default '0', `id_produits` int(11) NOT NULL default '0', `prix` decimal(10,0) NOT NULL default '0', `quantite` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; -- -- Contenu de la table `temp` -- INSERT INTO `temp` (`id`, `id_famille`, `id_produits`, `prix`, `quantite`) VALUES (1, 1, 1, 34, 100), (2, 1, 1, 45, 200), (3, 1, 1, 59, 300), (4, 1, 1, 69, 400), (5, 1, 2, 45, 50), (6, 1, 2, 67, 150), (7, 1, 2, 69, 250), (8, 1, 2, 70, 300), (9, 1, 3, 34, 20), (10, 1, 3, 40, 100), (11, 1, 3, 45, 200), (12, 1, 3, 70, 400);

ViPHP
ViPHP | 4039 Messages

09 déc. 2007, 17:29

eum, c'est sur la représentation html que tu sèche ? sur le code php pour le générer ? sur la façon d'interroger ta base ? ou sur le tout réuni ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 41 Messages

09 déc. 2007, 20:43

En faite je dois le faire en direct en fonction d un paramètre (id famille).

Donc ton option n est pas possible je dois le faire via php et mysql et l afficher en html sur le navigateur.

MErci

ViPHP
ViPHP | 4039 Messages

18 déc. 2007, 15:22

Alors, (je relance, jeanmed m'ayant contacté, dévoré par le désespoir)

J'ai eu un peu de peine à comprendre ce que tu recherchais, mais je crois que je suis plus ou moins arrivé à saisir..

Tu veux donc sélectionner tes produits par famille.. (je vais faire l'impasse sur la normalisation et la structure à donner à ses DB's)

Le plus facile, dans ce cas, c'est d'aboutir à une structure (dans un tableau) identique à ta représentation html (la conversion se fera d'autant plus facilement):

D'abord, un tableau "type":

Tu as déjà les quantités, je vais suposer que tu les a mises dans un tableau, par famille ($tabl[$id_famille] = ["20","50","100",etc..] );


On va utiliser ça comme base pour chaque tableau..
$tableaux = array();
foreach ($resulat as $val) {
  // on fait de chaque clé une variable indépendante, pour la facilité.
  extract($val,EXTR_OVERWRITE);
  // on applique le tableau par défaut:
  if (!isset($tableaux["fam_".$id_famille]["prod_".$id_produits])
    $tableaux["fam_".$id_famille]["prod_".$id_produits] = array_fill_keys($tabl[$id_famille],"");
    
  // on y ajoute le prix:
  $tableaux["fam_".$id_famille]["prod_".$id_produits][$quantite] = $prix;
}
Et voilà, un joli tableau:

Code : Tout sélectionner

tableaux => famille => id_produit => quantite => 20 => "1" 40 => "49" etc...
C'est déjà un début, non ? De la, il ne reste plus qu'a convertir le tableau en HTML.. ça aide ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.