Code pas totalement fonctionnel

Code pas totalement fonctionnel - PHP - Programmation

Marsh Posté le 27-04-2014 à 12:22:40    

Bonjour,
 
Je tente de faire apparaitre les plantes mellifères, fruits et légumes des mois en cours, mais j'ai un petit souci au niveau des plantes mellifères, autant les 2 premiers mois tout s'affiche nickel, autant par la suite ils se répètent une puis à plusieurs reprises, pour mieux visualiser le problème, voici la page en question : http://co-nexion.com/page/allsaisons
 
Le code  
 

Code :
  1. <?php
  2. $db = Zend_Registry::get('database');
  3. echo "<center><h1>Plantes méllifères, aromates, fruits, légumes, salades et champignons de saison</h1></center><br /><br />";
  4. $mois = array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" );
  5. for ($i = 1; $i <= 12; $i++)
  6. {
  7.     $select1 = "SELECT * FROM saisonapicole WHERE Mois='$mois[$i]'";
  8.     $toElect1 = $db->fetchAll($select1, array(), Zend_Db::FETCH_ASSOC);
  9.     echo '<center><h3>' . $mois[$i] . '</h3></center>';
  10.     $OldCat1 = '';
  11.     foreach ($toElect1 as $elect1)
  12.     {
  13.  $Fleurs=$elect1['Fleurs'];
  14.  $Cat1 = $elect1['Categorie'];
  15.         if (($OldCat1 == '') || ($Cat1 != $OldCat1))
  16.         {
  17.             // si on est en début d'itération (OldCat vide)
  18.             // OU qu'on a changé de catégorie (OldCat et Cat différents)
  19.             // afficher le nom de catégorie ET l'aliment
  20.             echo '<br /><strong>Plantes méllifères</strong> : ' . $Fleurs;
  21.         } else
  22.         {
  23.             // sinon afficher juste l'aliment précédé d'une virgule
  24.             echo ', ' . $Fleurs;
  25.         }
  26.         $OldCat1 = $Cat1; // mettre a jour l'ancienne catégorie avec la courante pour le test a la prochaine itération
  27.     }
  28. echo "<br />";
  29. $select = "SELECT * FROM saison WHERE Mois='$mois[$i]' ORDER BY Categorie";
  30.     $toElect = $db->fetchAll($select, array(), Zend_Db::FETCH_ASSOC);
  31. $OldCat = '';
  32. foreach ($toElect as $elect)
  33.     {
  34.         $Cat = $elect['Categorie'];
  35.         $Aliment = $elect['Nom'];
  36.         if (($OldCat == '') || ($Cat != $OldCat))
  37.         {
  38.             // si on est en début d'itération (OldCat vide)
  39.             // OU qu'on a changé de catégorie (OldCat et Cat différents)
  40.             // afficher le nom de catégorie ET l'aliment
  41.             echo '<br /><strong>' . $Cat . 's</strong> : ' . $Aliment;
  42.         } else
  43.         {
  44.             // sinon afficher juste l'aliment précédé d'une virgule
  45.             echo ', ' . $Aliment;
  46.         }
  47.         $OldCat = $Cat; // mettre a jour l'ancienne catégorie avec la courante pour le test a la prochaine itération
  48.     }
  49.     echo "<br /><br />";
  50. }
  51. ?>


 
 
Les tables :  
saison : Id, Nom, Categorie, Mois
saisonapicole : Id, Fleurs, Mois, Special, Categorie
 
 
Pourriez vous m'aider à résoudre ce problème ? D'avance merci.

Reply

Marsh Posté le 27-04-2014 à 12:22:40   

Reply

Marsh Posté le 28-04-2014 à 09:26:10    

C'est sûr que c'est pas ta base qui est pourrie ?

Reply

Marsh Posté le 28-04-2014 à 16:19:21    

Comment ça ? Du genre mal construite ?


---------------
Comment assembler & optimiser soi même son pc
Reply

Marsh Posté le 28-04-2014 à 16:21:57    

Du genre il y a des doublons je pense ?

Reply

Marsh Posté le 28-04-2014 à 17:26:49    

Aurais-je du faire une seule table ? J'avais tenté d'abord une requête SQL impliquant les 2 tables mais ayant du mal à avoir des résultats j'ai préféré faire comme cela..


---------------
Comment assembler & optimiser soi même son pc
Reply

Marsh Posté le 29-04-2014 à 09:31:46    

Fais voir la structure de ta bdd ;)

Reply

Marsh Posté le 29-04-2014 à 17:19:13    

saison : Id, Nom, Categorie, Mois
saisonapicole : Id, Fleurs, Mois, Special, Categorie  
 
L'id est en mediumint auto_increment, les autres sont en varchar 100.


---------------
Comment assembler & optimiser soi même son pc
Reply

Marsh Posté le 30-04-2014 à 07:28:58    

Sers-toi de jointures, les requêtes dans les boucles c'est le mal  :o  
 
Là rien d’étonnant tes doublons.
C'quoi la différence entre les catégories des 2 tables ? C'est leur relation ?


Message édité par bistouille le 30-04-2014 à 07:29:49
Reply

Marsh Posté le 30-04-2014 à 17:34:21    

Il n y a pas de différence pour la catégorie des 2 tables, enfin, celle de saisonapicole n'a même pas vraiment d'utilité en fait... Et niveau jointure, comme dit, j'avais tenté mais ne suis pas doué..


---------------
Comment assembler & optimiser soi même son pc
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed