Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<?php //requete des reference $requete = mysql_query("SELECT DISTINCT reference, couleur1, couleur2, couleur3, couleur4, couleur5, couleur6, couleur7, couleur8 FROM barre ORDER BY reference", $connexion); if($requete) { ?> Référence, 9010, 1015, 3004, 6005, gris antique, rouge de mars, vert olive, sienne, dune, bleu orage, vert antique, modification, <?php while($ligne = mysql_fetch_array($requete)) { $nbre++; //affichage des reference $subrequete = mysql_query(\"SELECT quantite FROM codebarre WHERE reference='\".$ligne['reference'].\"' AND couleur='\".$ligne['couleur1'].\"'\", $connexion); $nbbarre = mysql_fetch_array($subrequete); $ligne['couleur1'] = $nbbarre[\"quantite\"]; $subrequete = mysql_query(\"SELECT quantite FROM codebarre WHERE reference='\".$ligne['reference'].\"' AND couleur='\".$ligne['couleur2'].\"'\", $connexion); $nbbarre = mysql_fetch_array($subrequete); $ligne['couleur2'] = $nbbarre[\"quantite\"]; // Etc. ?> ---- <?php echo $ligne['reference']; ?>, <?php echo $ligne['couleur1']; ?>, <?php echo $ligne['couleur2']; ?>, <?php echo $ligne['couleur3']; ?>, <?php echo $ligne['couleur4']; ?>, <?php echo $ligne['couleur5']; ?>, <?php echo $ligne['couleur6']; ?>, <?php echo $ligne['couleur7']; ?>, <?php echo $ligne['couleur8']; ?>, &reference=<?php echo $ligne['reference']; ?>"> " onclick="return(confirm(\'Etes-vous sûr de vouloir supprimer la direction <?php echo $ligne['reference']; ?> ?\'));">, <?php } mysql_free_result($requete); ?> <?php } else { echo "Impossible d'exécuter la requête de sélection ! "; } ?>
<?php // J'active le débug, à ne pas mettre sur un site en production. error_reporting(E_ALL); ini_set( 'display_errors', 1 ); // Je gere la connexion à ma DB ainsi que la séléction de celle-ci $connexion = mysql_connect('localhost', "root", 'root') or die("erreur connex sql"); mysql_select_db('test', $connexion) or die("erreur connex sql"); // Je vais chercher toutes les couleurs $requete = mysql_query("SELECT id, couleur FROM couleurs ORDER BY couleur", $connexion) or die("erreur sql"); // Je stoque le retour SQL dans un tableau car je vais m'en re-servir // (Sorte de cache pour éviter de faire plusieurs fois les mêmes requetes) $tab_couleur = array(); while ($row = mysql_fetch_assoc($requete)) { $tab_couleur[] = $row; } // Je crée mon tableau ?> Référence, <?php // Je liste les couleurs stoquées dans mon tableau foreach($tab_couleur as $row) { ?> <?php echo $row['couleur']; ?>, <?php } ?> Action, <?php // Je vais chercher mes références pour en afficher une par ligne $requete = mysql_query(\"SELECT id, myreference FROM myreferences ORDER BY myreference\", $connexion) or die(\"erreur sql\"); while ($row = mysql_fetch_assoc($requete)) { ?> ---- <?php // Premiere cellule, le numéro de la réference echo $row['myreference']; ?>, <?php // Je vais aller chercher pour chaque couleur associée à la référence le nombre de code barres // Pour comencer je vais parcourir mon tableau de couleurs foreach($tab_couleur as $couleur) { // Ici je séléctionne la quantitée dans ma table code barre (SELECT quantite FROM code_barre cb) // cb c'est un ALIAS qui me permetteras d'utiliser cb dans ma requete au lieu de code_barre // Je vais chercher ensuite la ligne de la table couleur_myreference qui correspond au code barre // en me servant le la colonne couleur_reference_id de ma table code barre // (INNER JOIN couleur_myreference cr ON cb.couleur_reference_id=cr.id) // A ce stade la requete renvois tout les codes barres avec leurs couleurs (l'id) et leur référence (l'id) // Or nous voulons le code barre qui à pour couleur, la couleur que nous parcourons $couleur['id'] et // la référence que nous parcourons $row['id'] // On ajoute donc la close WHERE : (WHERE cr.myreference_id=\".$row['id'].\" AND cr.couleur_id=\".$couleur['id']) $requete_qtt = mysql_query(\"SELECT quantite FROM code_barre cb INNER JOIN couleur_myreference cr ON cb.couleur_reference_id=cr.id WHERE cr.myreference_id=\".$row['id'].\" AND cr.couleur_id=\".$couleur['id'], $connexion) or die(\"erreur sql\"); // Il se peut que le couple \"Référence/couleur\" n'existe pas // Si par exemple la référence 315,055 n'as pas de bleu // Dans ce cas notre requete retourne aucune ligne et aucune quantité // J'utilise donc un \"-\" si le couple n'existe pas (que la requete ne // renvois pas de ligne) pour differencier ce cas de la quantité 0 if(mysql_num_rows($requete_qtt)==0) { $nbr = '-'; } else { // Je récup la quantité... $nbr = mysql_fetch_assoc($requete_qtt); $nbr = $nbr['quantite']; } ?> <?php echo $nbr; ?>, <?php } ?> ">E | ">D, <?php } ?>
-- phpMyAdmin SQL Dump -- version 3.2.0.1 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Mer 24 Mars 2010 à 10:25 -- Version du serveur: 5.1.37 -- Version de PHP: 5.2.10 SET SQL_MODE ="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de données: `test` -- -- -------------------------------------------------------- -- -- Structure de la table `code_barre` -- CREATE TABLE `code_barre` ( `id` int(11) NOT NULL AUTO_INCREMENT, `couleur_reference_id` int(11) NOT NULL, `quantite` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `couleur_reference_id` (`couleur_reference_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Contenu de la table `code_barre` -- INSERT INTO `code_barre` VALUES(1, 1, 10); INSERT INTO `code_barre` VALUES(2, 3, 2); INSERT INTO `code_barre` VALUES(3, 2, 8); INSERT INTO `code_barre` VALUES(4, 7, 3); -- -------------------------------------------------------- -- -- Structure de la table `couleurs` -- CREATE TABLE `couleurs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `couleur` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Contenu de la table `couleurs` -- INSERT INTO `couleurs` VALUES(1, 'Vert'); INSERT INTO `couleurs` VALUES(2, 'Rouge'); INSERT INTO `couleurs` VALUES(3, 'Gris'); INSERT INTO `couleurs` VALUES(4, 'Bleu'); -- -------------------------------------------------------- -- -- Structure de la table `couleur_myreference` -- CREATE TABLE `couleur_myreference` ( `id` int(11) NOT NULL AUTO_INCREMENT, `myreference_id` int(11) NOT NULL, `couleur_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `couleur_id` (`couleur_id`), KEY `myreference_id` (`myreference_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ; -- -- Contenu de la table `couleur_myreference` -- INSERT INTO `couleur_myreference` VALUES(1, 1, 2); INSERT INTO `couleur_myreference` VALUES(2, 1, 3); INSERT INTO `couleur_myreference` VALUES(3, 2, 4); INSERT INTO `couleur_myreference` VALUES(4, 2, 1); INSERT INTO `couleur_myreference` VALUES(7, 3, 1); INSERT INTO `couleur_myreference` VALUES(8, 4, 1); INSERT INTO `couleur_myreference` VALUES(9, 4, 2); INSERT INTO `couleur_myreference` VALUES(10, 4, 4); -- -------------------------------------------------------- -- -- Structure de la table `myreferences` -- CREATE TABLE `myreferences` ( `id` int(11) NOT NULL AUTO_INCREMENT, `myreference` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Contenu de la table `myreferences` -- INSERT INTO `myreferences` VALUES(1, '315,055'); INSERT INTO `myreferences` VALUES(2, '215,055'); INSERT INTO `myreferences` VALUES(3, '415,055'); INSERT INTO `myreferences` VALUES(4, '615,055'); -- -- Contraintes pour les tables exportées -- -- -- Contraintes pour la table `code_barre` -- ALTER TABLE `code_barre` ADD CONSTRAINT `code_barre_ibfk_1` FOREIGN KEY (`couleur_reference_id`) REFERENCES `couleur_myreference` (`id`); -- -- Contraintes pour la table `couleur_myreference` -- ALTER TABLE `couleur_myreference` ADD CONSTRAINT `couleur_myreference_ibfk_3` FOREIGN KEY (`myreference_id`) REFERENCES `myreferences` (`id`), ADD CONSTRAINT `couleur_myreference_ibfk_2` FOREIGN KEY (`couleur_id`) REFERENCES `couleurs` (`id`);