Bug lors de récupération de données dans BDD

Bug lors de récupération de données dans BDD - PHP - Programmation

Marsh Posté le 08-10-2014 à 17:51:17    

Bonjour à tous, j'ai un bug lors de récupération de données dans une BDD. Ma page d'accueil est composé d'un effet parallax en 4 parties, mais lorsque je fais apparaître le texte via php je me retrouve avec 6 parties. Ce qui me qui me fait tout buger.
Avec Html : http://the-division.96.lt/The%20Division/index.html
Avec Php : http://the-division.96.lt/The%20Division/index.php
 
Voici le code que j'utilise :
 

Code :
  1. <?php
  2. try
  3. {
  4.     // On se connecte à MySQL
  5.     $bdd = new PDO('mysql:host=*****;dbname=*****', '****', '****');
  6. }
  7. catch(Exception $e)
  8. {
  9.     // En cas d'erreur, on affiche un message et on arrête tout
  10.         die('Erreur : '.$e->getMessage());
  11. }
  12. // Si tout va bien, on peut continuer
  13. // On récupère tout le contenu de la table jeux_video
  14. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 0,1');
  15. // On affiche chaque entrée une à une
  16. while ($donnees = $reponse->fetch())
  17. {
  18. ?>
  19. <div id="fullpage">
  20. <div class="section " id="section0">
  21. <div id="intro">
  22.     <div class="story">
  23.     <div id="gauchebiss">
  24.         <div id="titre">
  25. <?php echo $donnees['titre']; ?>
  26.           </div>
  27.       </div>
  28.             <div class="float-left">
  29.                 <div id="carre">
  30.             <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  31.                 <hr><br/>
  32.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  33.                 </div>
  34.             </div>
  35.         </div> <!--.story-->
  36.     </div> <!--#intro-->
  37. </div>
  38. <?php
  39. }
  40. $reponse->closeCursor(); // Termine le traitement de la requête
  41. ?>
  42. <?php
  43. try
  44. {
  45.     // On se connecte à MySQL
  46.      $bdd = new PDO('mysql:host=*****;dbname=*****', '****', '****');
  47. }
  48. catch(Exception $e)
  49. {
  50.     // En cas d'erreur, on affiche un message et on arrête tout
  51.         die('Erreur : '.$e->getMessage());
  52. }
  53. // Si tout va bien, on peut continuer
  54. // On récupère tout le contenu de la table jeux_video
  55. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 1,2');
  56. // On affiche chaque entrée une à une
  57. while ($donnees = $reponse->fetch())
  58. {
  59. ?>
  60. <div class="section" id="section1">
  61.  <div class="intro">
  62.   <div id="second">
  63.         <div class="story">
  64.         <div id="gauchebisss">
  65.                 <div id="titre">
  66. <?php echo $donnees['titre']; ?>
  67.                 </div>
  68.             </div>
  69.             <div class="float-left">
  70.                 <div id="carre">
  71.                 <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  72.              <hr><br/>
  73.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  74.               </div>
  75.              </div>
  76.         </div> <!--.story-->
  77.        
  78.     </div> <!--#second-->
  79.  </div>
  80. </div>
  81.  <?php
  82. }
  83. $reponse->closeCursor(); // Termine le traitement de la requête
  84. ?>
  85.    
  86. <?php
  87. try
  88. {
  89.     // On se connecte à MySQL
  90.      $bdd = new PDO('mysql:host=*****;dbname=*****', '****', '****');
  91. }
  92. catch(Exception $e)
  93. {
  94.     // En cas d'erreur, on affiche un message et on arrête tout
  95.         die('Erreur : '.$e->getMessage());
  96. }
  97. // Si tout va bien, on peut continuer
  98. // On récupère tout le contenu de la table jeux_video
  99. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 2,3');
  100. // On affiche chaque entrée une à une
  101. while ($donnees = $reponse->fetch())
  102. {
  103. ?>
  104. <div class="section" id="section2">
  105.  <div class="intro">
  106.   <div id="third">
  107.         <div class="story">
  108.         <div id="gauchebissss">
  109.                 <div id="titre">
  110. <?php echo $donnees['titre']; ?>
  111.                 </div>
  112.             </div>
  113.             <div class="float-left">
  114.         <div id="carre">
  115.                 <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  116.             <hr><br/>
  117.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  118.               </div>
  119.               </div>
  120.         </div> <!--.story-->
  121.     </div> <!--#third-->
  122.  </div>
  123. </div>
  124.  <?php
  125. }
  126. $reponse->closeCursor(); // Termine le traitement de la requête
  127. ?>
  128.    
  129. <?php
  130. try
  131. {
  132.     // On se connecte à MySQL
  133.      $bdd = new PDO('mysql:host=*****;dbname=*****', '****', '****');
  134. }
  135. catch(Exception $e)
  136. {
  137.     // En cas d'erreur, on affiche un message et on arrête tout
  138.         die('Erreur : '.$e->getMessage());
  139. }
  140. // Si tout va bien, on peut continuer
  141. // On récupère tout le contenu de la table jeux_video
  142. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 3,4');
  143. // On affiche chaque entrée une à une
  144. while ($donnees = $reponse->fetch())
  145. {
  146. ?>
  147. <div class="section" id="section3">
  148.  <div class="intro">
  149.   <div id="fifth">
  150.         <div class="story">
  151.         <div id="gauchebisssss">
  152.                 <div id="titre">
  153. <?php echo $donnees['titre']; ?>
  154.                 </div>
  155.             </div>
  156.                 <div class="float-left">
  157.         <div id="carre">
  158.                     <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  159.             <hr><br/>
  160.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  161.               </div>
  162.              </div>
  163.  </div>
  164. </div>
  165. </div>
  166. <?php
  167. }
  168. $reponse->closeCursor(); // Termine le traitement de la requête
  169. ?>


 
Je me retrouve avec cela --" :
 

Code :
  1. <div id="fullpage">
  2. <div class="section " id="section0">
  3. <div id="intro">
  4.     <div class="story">
  5.     <div id="gauchebiss">
  6.         <div id="titre">
  7. fgtyhrt          </div>
  8.       </div>
  9.             <div class="float-left">
  10.                 <div id="carre">
  11.             <h2>fdesfds</h2><br/><br/>
  12.                 <hr><br/>
  13.                 <a href="cxfgvds"><h2>EN SAVOIR PLUS</h2></a>
  14.                 </div>
  15.             </div>
  16.         </div> <!--.story-->
  17.     </div> <!--#intro-->
  18. </div>
  19. <div class="section" id="section1">
  20.  <div class="intro">
  21.   <div id="second">
  22.         <div class="story">
  23.         <div id="gauchebisss">
  24.                 <div id="titre">
  25. Nouvelle vidéo                </div>
  26.             </div>
  27.             <div class="float-left">
  28.                 <div id="carre">
  29.                 <h2>Nouvelle vidéo</h2><br/><br/>
  30.              <hr><br/>
  31.                 <a href="http://the-division.96.lt/The%20Division/index.php#3rdPage"><h2>EN SAVOIR PLUS</h2></a>
  32.               </div>
  33.              </div>
  34.         </div> <!--.story-->
  35.        
  36.     </div> <!--#second-->
  37.  </div>
  38. </div>
  39. <div class="section" id="section1">
  40.  <div class="intro">
  41.   <div id="second">
  42.         <div class="story">
  43.         <div id="gauchebisss">
  44.                 <div id="titre">
  45. Nouveaux Screenshots                </div>
  46.             </div>
  47.             <div class="float-left">
  48.                 <div id="carre">
  49.                 <h2>Bientôt un an que Battlefield 4 est sorti, EA déploie une mise à jour qui ne laissera aucun joueur indifférent.
  50. Voici quelques informations importantes du changelog officiel :</h2><br/><br/>
  51.              <hr><br/>
  52.                 <a href="http://the-division.96.lt/The%20Division/admin.html"><h2>EN SAVOIR PLUS</h2></a>
  53.               </div>
  54.              </div>
  55.         </div> <!--.story-->
  56.        
  57.     </div> <!--#second-->
  58.  </div>
  59. </div>
  60.     
  61. <div class="section" id="section2">
  62.  <div class="intro">
  63.   <div id="third">
  64.         <div class="story">
  65.         <div id="gauchebissss">
  66.                 <div id="titre">
  67. Nouveaux Screenshots                </div>
  68.             </div>
  69.             <div class="float-left">
  70.         <div id="carre">
  71.                 <h2>Bientôt un an que Battlefield 4 est sorti, EA déploie une mise à jour qui ne laissera aucun joueur indifférent.
  72. Voici quelques informations importantes du changelog officiel :</h2><br/><br/>
  73.             <hr><br/>
  74.                 <a href="http://the-division.96.lt/The%20Division/admin.html"><h2>EN SAVOIR PLUS</h2></a>
  75.               </div>
  76.               </div>
  77.         </div> <!--.story-->
  78.     </div> <!--#third-->
  79.  </div>
  80. </div>
  81. <div class="section" id="section2">
  82.  <div class="intro">
  83.   <div id="third">
  84.         <div class="story">
  85.         <div id="gauchebissss">
  86.                 <div id="titre">
  87. Nouveaux Screenshots                </div>
  88.             </div>
  89.             <div class="float-left">
  90.         <div id="carre">
  91.                 <h2>Bientôt un an que Battlefield 4 est sorti, EA déploie une mise à jour qui ne laissera aucun joueur indifférent.
  92. Voici quelques informations importantes du changelog officiel :</h2><br/><br/>
  93.             <hr><br/>
  94.                 <a href="http://the-division.96.lt/The%20Division/admin.html"><h2>EN SAVOIR PLUS</h2></a>
  95.               </div>
  96.               </div>
  97.         </div> <!--.story-->
  98.     </div> <!--#third-->
  99.  </div>
  100. </div>
  101.    
  102. <div class="section" id="section3">
  103.  <div class="intro">
  104.   <div id="fifth">
  105.         <div class="story">
  106.         <div id="gauchebisssss">
  107.                 <div id="titre">
  108. Nouveaux Screenshots                </div>
  109.             </div>
  110.                 <div class="float-left">
  111.         <div id="carre">
  112.                     <h2>Bientôt un an que Battlefield 4 est sorti, EA déploie une mise à jour qui ne laissera aucun joueur indifférent.
  113. Voici quelques informations importantes du changelog officiel :</h2><br/><br/>
  114.             <hr><br/>
  115.                 <a href="http://the-division.96.lt/The%20Division/admin.html"><h2>EN SAVOIR PLUS</h2></a>
  116.               </div>
  117.              </div>
  118.  </div>
  119. </div>
  120. </div>


 
Merci d'avance  :bounce:


Message édité par sparadra1 le 08-10-2014 à 17:52:35
Reply

Marsh Posté le 08-10-2014 à 17:51:17   

Reply

Marsh Posté le 08-10-2014 à 21:52:58    

LIMIT 0,1
LIMIT 1,1
LIMIT 2,1
LIMIT 3,1
 
?
Le premier chiffre c'est le décalage et le deuxième le nombre d’occurrences si je me souviens bien.
 
Au passage une seule requête LIMIT 4, non?


Message édité par MaybeEijOrNot le 08-10-2014 à 21:53:53
Reply

Marsh Posté le 09-10-2014 à 10:02:34    

Je confirme, c'est bien ça le limit. Effectivement, 1 seule requête suffirait.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-10-2014 à 19:06:12    

C'est mieux : http://the-division.96.lt/The%20Division/index.php
je n'ai plus de bug avec le parallax mais plusieurs entrés titre se superpose et j'ai toujours la même description.
 
PS : petite capture de ma table dans ma BDD
 
http://the-division.96.lt//The%20Division/Capture.jpg


Message édité par sparadra1 le 09-10-2014 à 19:08:51
Reply

Marsh Posté le 09-10-2014 à 20:03:49    

Code?

Reply

Marsh Posté le 09-10-2014 à 20:48:00    

Code :
  1. <?php
  2. try
  3. {
  4.     // On se connecte à MySQL
  5.     $bdd = new PDO('mysql:host=******;dbname=*************', '*******', '***********');
  6. }
  7. catch(Exception $e)
  8. {
  9.     // En cas d'erreur, on affiche un message et on arrête tout
  10.         die('Erreur : '.$e->getMessage());
  11. }
  12. // Si tout va bien, on peut continuer
  13. // On récupère tout le contenu de la table jeux_video
  14. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 0,4');
  15. // On affiche chaque entrée une à une
  16. while ($donnees = $reponse->fetch())
  17. {
  18. ?>
  19. <div id="fullpage">
  20. <div class="section " id="section0">
  21. <div id="intro">
  22.     <div class="story">
  23.     <div id="gauchebiss">
  24.         <div id="titre">
  25. <?php echo $donnees['titre']; ?>
  26.           </div>
  27.       </div>
  28.             <div class="float-left">
  29.                 <div id="carre">
  30.             <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  31.                 <hr><br/>
  32.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  33.                 </div>
  34.             </div>
  35.         </div> <!--.story-->
  36.     </div> <!--#intro-->
  37. </div>
  38. <div class="section" id="section1">
  39.  <div class="intro">
  40.   <div id="second">
  41.         <div class="story">
  42.         <div id="gauchebisss">
  43.                 <div id="titre">
  44. <?php echo $donnees['titre']; ?>
  45.                 </div>
  46.             </div>
  47.             <div class="float-left">
  48.                 <div id="carre">
  49.                 <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  50.              <hr><br/>
  51.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  52.               </div>
  53.              </div>
  54.         </div> <!--.story-->
  55.        
  56.     </div> <!--#second-->
  57.  </div>
  58. </div>
  59. <div class="section" id="section2">
  60.  <div class="intro">
  61.   <div id="third">
  62.         <div class="story">
  63.         <div id="gauchebissss">
  64.                 <div id="titre">
  65. <?php echo $donnees['titre']; ?>
  66.                 </div>
  67.             </div>
  68.             <div class="float-left">
  69.         <div id="carre">
  70.                 <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  71.             <hr><br/>
  72.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  73.               </div>
  74.               </div>
  75.         </div> <!--.story-->
  76.     </div> <!--#third-->
  77.  </div>
  78. </div>
  79. <div class="section" id="section3">
  80.  <div class="intro">
  81.   <div id="fifth">
  82.         <div class="story">
  83.         <div id="gauchebisssss">
  84.                 <div id="titre">
  85. <?php echo $donnees['titre']; ?>
  86.                 </div>
  87.             </div>
  88.                 <div class="float-left">
  89.         <div id="carre">
  90.                     <h2><?php echo $donnees['description']; ?></h2><br/><br/>
  91.             <hr><br/>
  92.                 <a href="<?php echo $donnees['lien']; ?>"><h2>EN SAVOIR PLUS</h2></a>
  93.               </div>
  94.              </div>
  95.  </div>
  96. </div>
  97. </div>
  98. <?php
  99. }
  100. $reponse->closeCursor(); // Termine le traitement de la requête
  101. ?>

Reply

Marsh Posté le 09-10-2014 à 22:06:12    

Avec ta requête tu récupères 4 lignes donc ta boucle lis une ligne puis reprend en lisant la deuxième et ainsi de suite, tu n'as donc pas besoin de répéter plusieurs fois le bloc html, si tu le mets dans la boucle il sera répété 4 fois.

Reply

Marsh Posté le 09-10-2014 à 22:54:29    

J'y est pensé. Mais le pb c'est que après j'aurais tjrs le même background pour mes quatres parties !?

Reply

Marsh Posté le 10-10-2014 à 18:07:43    

ca bug complètement en faisant cela

Reply

Marsh Posté le 10-10-2014 à 21:41:14    

Suffit d'ajouter une variable php d'incrémentation dans ta boucle :
 

Code :
  1. <?php
  2. $i = 0;
  3. boucle {
  4. ?>
  5. ton bloc html avec id="section<?php echo $i; ?>"
  6. blablabla
  7. <?php
  8. $i = $i + 1;
  9. }
  10. ?>


 
Enfin tu vois le truc, tu différencies tes sections avec un numéro d'incrémentation.

Reply

Marsh Posté le 10-10-2014 à 21:41:14   

Reply

Marsh Posté le 11-10-2014 à 10:26:56    

Merci je vais me renseigner

Reply

Marsh Posté le 14-10-2014 à 20:45:24    

Rebonjour, aurais-tu la gentillesse de m'expliquer l'incrémentation.
j'ai compris ton code mais je vois pas ou je vais placer mes <?php echo $donnees['description']; ?> ...

Reply

Marsh Posté le 15-10-2014 à 19:27:16    

Tu les places au même endroit, c'est juste que je présume que ton effet parallax repose sur les id du type "sectionX" où X est un nombre. Tu n'as donc que cette valeur de X à faire varier dans la boucle (ainsi que le contenu mais qui évolue déjà grâce au fetch()).

Reply

Marsh Posté le 16-10-2014 à 20:19:13    

Merci je vais essayer de suite :bounce:

Reply

Marsh Posté le 16-10-2014 à 21:07:41    

Donc j'ai essayé avec le petit bout de code au-dessus et je n'ai pas réussi surement à cause du fait que j'ai 2 boucles avec i et fetch.
Du coup j'ai essayé par moi même et il ne prend pas mes valeurs dans ma BDD : Warning: Division by zero in
 

Code :
  1. <?php
  2. try
  3. {
  4.     // On se connecte à MySQL
  5.     $bdd = new PDO('mysql:host=******;dbname=*****', '*******', '******');
  6. }
  7. catch(Exception $e)
  8. {
  9.     // En cas d'erreur, on affiche un message et on arrête tout
  10.         die('Erreur : '.$e->getMessage());
  11. }
  12. // Si tout va bien, on peut continuer
  13. // On récupère tout le contenu de la table jeux_video
  14. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 4');
  15. // On affiche chaque entrée une à une
  16. while ($donnees = $reponse->fetch())
  17. {
  18. $i = 0;
  19. while ($i < 4)
  20. {
  21. echo '
  22. <div id="fullpage">
  23. <div class="section " id="section<?php echo $i; ?>">
  24. <div id="intro">
  25. if ($i = 1){echo "<div id="second">";}if ($i = 2){echo "<div id="third">";}if ($i = 3){echo "<div id="fifth">";}
  26.     <div class="story">
  27.     <div id="if ($i = 0){echo "gauchebiss";}if ($i = 1){echo "gauchebisss";}if ($i = 2){echo "gauchebissss";}if ($i = 3){echo "gauchebisssss";}">
  28.         <div id="titre">
  29. '/$titre/'
  30.           </div>
  31.       </div>
  32.             <div class="float-left">
  33.                 <div id="carre">
  34.             <h2>'/$description/'</h2><br/><br/>
  35.                 <hr><br/>
  36.                 <a href="'/$lien/'"><h2>EN SAVOIR PLUS</h2></a>
  37.                 </div>
  38.             </div>
  39.         </div> <!--.story-->
  40.     </div> <!--#intro-->
  41. </div>
  42. ';
  43. $i++;
  44. }
  45. ?>
  46. <?php
  47. }
  48. $reponse->closeCursor(); // Termine le traitement de la requête
  49. ?>


Message édité par sparadra1 le 16-10-2014 à 21:14:04
Reply

Marsh Posté le 16-10-2014 à 23:02:38    

un switch() serait beaucoup plus approprié que tes if() ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-10-2014 à 12:53:59    

Merci mais comment régler le message d'erreur ?

Reply

Marsh Posté le 17-10-2014 à 21:51:31    

Tu as deux gros problèmes : ta deuxième boucle et tes echos.
 
Tu as de grosses lacunes au niveau des boucles, c'est pourtant un incontournable de la programmation donc il faudrait que tu te penches dessus.
 
 
Je vais faire un exemple d'une boucle While :
 

Code :
  1. <?php
  2. /* initialisation des variables */
  3. $i = 0;
  4. $a = 2;
  5. $nbTours = 0;
  6. /* boucle While */
  7. While ($i<$a) { //on vérifie si $i est inférieur à $a, si c'est le cas on éxécute les instructions qui suivent
  8.    $i = $i*2; //on multiplie $i par 2
  9.    $i++; //on incrémente la variable $i, cela veut dire qu'on lui ajoute une valeur constante, ici on additionne 1 à la variable $i
  10.    $a++; //on incrémente la variable $a
  11.    $nbTours++; //on incrémente la variable $nbTours++
  12. }
  13. echo 'Nous avons réalisé '.$nbTours.' tours de boucle.';
  14. ?>
  15. # Initialisation des variables :
  16. // $i = 0;
  17. // $a = 2;
  18. // $nbTours = 0;
  19. # Premier test : $i = 0 et $a = 2 donc $i < $a donc on entre dans la boucle :
  20. // $i = 0*2 = 0
  21. // $i = 0+1 = 1
  22. // $a = 2+1 = 3
  23. // $nbTours = 0+1 = 1
  24. # Deuxième test : $i = 1 et $a = 3 donc $i < $a donc on reprend au début de la boucle :
  25. // $i = 1*2 = 2
  26. // $i = 2+1 = 3
  27. // $a = 3+1 = 4
  28. // $nbTours = 1+1 = 2
  29. # Troisième test : $i = 3 et $a = 4 donc $i < $a donc on reprend au début de la boucle :
  30. // $i = 3*2 = 6
  31. // $i = 6+1 = 7
  32. // $a = 4+1 = 5
  33. // $nbTours = 2+1 = 3
  34. # Quatrième test : $i = 7 et $a = 5 donc $i >= $a donc on quitte la boucle et on passe on reste du traitement :
  35. // affichage de : Nous avons réalisé 3 tours de boucle.
  36. # Fin du script #


 
 
Donc dans ton cas tu n'as pas besoin d'une deuxième boucle, la première suffit, à chaque tour elle lit une nouvelle ligne dans ta bdd et tu n'as plus qu'à lui demander d'incrémenter une variable à chaque fois. Cette variable va servir à différencier chaque bloc créé par la boucle puisqu'à chaque tour elle crée elle va créer le même bloc sauf si on lui dit que telle partie du bloc va être variable.
 
Ce que tu as à faire en fin de compte est très simple, là tu te compliques complètement la vie, repense à : http://forum.hardware.fr/hfr/Progr [...] m#t2240027


Message édité par MaybeEijOrNot le 17-10-2014 à 21:55:08
Reply

Sujets relatifs:

Leave a Replay

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