[PHP] Ou placer ce bout de code ?

Ou placer ce bout de code ? [PHP] - PHP - Programmation

Marsh Posté le 08-08-2014 à 13:38:39    

Bonjours à tous, je souhaiterais faire un retour à la ligne au bout de 2 résultats lors d'une requête dans une BDD. Je souhaiterais concrètement qu'il y est 2 images par ligne.
Voici la formule que j'ai trouvé mais je ne sais pas ou la placer :
 

Code :
  1. $compteur = 0;
  2. while$(donnees = $reponse->fetch())
  3. {
  4. ){
  5.   echo "code_pour_afficher_ta_photo";
  6.   $compteur++;
  7.   if ($compteur%2 == 0){
  8.     echo "";
  9.   }
  10. }


 
Voici mon code :
 

Code :
  1. <!DOCTYPE html>
  2. <head>
  3. <meta name="robots" content="noindex,nofollow" />
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <link href="suite/udpload.css" rel="stylesheet" type="text/css" media="screen"/>
  6. <title></title>
  7. <style>
  8.  
  9. .wrapper {
  10.  display: table-cell;
  11.  margin: 0 auto;
  12.  vertical-align: middle;
  13.  float:left;
  14.  margin:40px;
  15.  
  16. }
  17.  
  18. .cont {
  19.  display: table;
  20.  margin: 0 auto;
  21. }
  22.  
  23. figure {
  24.  display: table;
  25.  overflow: hidden;
  26.  position: relative;
  27.  
  28. }
  29.  
  30. figure img {
  31.  display: block;
  32.   
  33. }
  34.  
  35. figure figcaption {
  36.  font-family: 'PT Sans Narrow';
  37.  font-size:  small;
  38.  background: black;
  39.  bottom: -64px;
  40.  color: white;
  41.  padding: 16px;
  42.  position: absolute;
  43.  transition: bottom .5s;
  44.  text-shadow: 1px 1px black;
  45.  width: 93%;
  46.  
  47.  
  48.  
  49. }
  50.  
  51. figure:hover figcaption {
  52.  bottom: 0;
  53.  
  54. }
  55.  
  56. </style>
  57.  
  58. </head>
  59.  
  60.  
  61. <body>
  62.  
  63. <?php
  64. try
  65. {
  66.    // On se connecte à MySQL
  67.    $bdd = new PDO('mysql:host=****;dbname=****', '*****', '*****');
  68. }
  69. catch(Exception $e)
  70. {
  71.    // En cas d'erreur, on affiche un message et on arrête tout
  72.        die('Erreur : '.$e->getMessage());
  73. }
  74.  
  75. // Si tout va bien, on peut continuer
  76. // On récupère tout le contenu de la table jeux_video
  77. $reponse = $bdd->query('SELECT * FROM photo ORDER BY date_heure ');
  78. // On affiche chaque entrée une à une
  79. while ($donnees = $reponse->fetch())
  80. {
  81. ?>
  82.  
  83. <div class="wrapper">
  84. <div class="conte">
  85. <figure>
  86. <img src="<?php echo $donnees['lien'];?>" alt="<?php echo $donnees['titre'];?>" width="300px" height="300px" />
  87. <figcaption>
  88. <?php echo $donnees['titre'];?><br/><?php echo $donnees['description'];?>
  89. </figcaption>
  90. </figure>
  91. </div>
  92. </div>
  93.  
  94. <br/>
  95.  
  96. <?php
  97. }
  98. $reponse->closeCursor(); // Termine le traitement de la requête
  99. ?>
  100.  
  101. </body>
  102. </html>


 
Merci pour votre aide


Message édité par sparadra1 le 08-08-2014 à 13:42:03
Reply

Marsh Posté le 08-08-2014 à 13:38:39   

Reply

Marsh Posté le 08-08-2014 à 15:38:21    

Je vais faire abstraction de ton code html situé après le while, ligne 79 car je doute qu'il soit correct. Je vais te le faire avec un tableau : tu adapteras. A insérer après ta requêtes SQL, en incluant un test qui vérifie qu'il y a au moins un enregistrement trouvé.

Code :
  1. echo "<table>";
  2. $iNbImages = 0;
  3. while ($donnees = $reponse->fetch())
  4. {
  5.    if ($iNbImages % 2 == 0) echo "<tr>";
  6.  
  7.    echo "<td><img src=\"".$donnees['lien']."\" alt=\"".$donnees['titre']."\" width="300px" height="300px" /><p>".$donnees['titre']
  8.           ."<br />".$donnees['description']."</p></td>";
  9.  
  10.    $iNbImages++;
  11.    
  12.    if ($iNbImages % 2 == 0) echo "</tr>";
  13. }
  14.  
  15. if ($iNbImages % 2 != 0) echo "<td>&nbsp;</td></tr>";  // Pour fermer le tableau en cas d'un nb d'images impair !
  16.  
  17. echo "</table>";


 
Après, tu peux remplacer le tableau par des div avec un attribut float: left et faire un clear toutes les 2 images, ça reviendra au même...


Message édité par rufo le 08-08-2014 à 15:40:37

---------------
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 08-08-2014 à 16:01:16    

Bonjour tout d'abord merci de votre réponse mais cela me change rien  :bounce:  
 
Voilà ce que j'ai fait :  
 

Code :
  1. <!DOCTYPE html>
  2. <head>
  3. <meta name="robots" content="noindex,nofollow" />
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title></title>
  6. <style>
  7. .wrapper {
  8.   display: table-cell;
  9.   margin: 0 auto;
  10.   vertical-align: middle;
  11.   float:left;
  12.   margin:40px;
  13. }
  14. .cont {
  15.   display: table;
  16.   margin: 0 auto;
  17. }
  18. figure {
  19.   display: table;
  20.   overflow: hidden;
  21.   position: relative;
  22. }
  23. figure img {
  24.   display: block;
  25.  
  26. }
  27. figure figcaption {
  28.   font-family: 'PT Sans Narrow';
  29.   font-size:  small;
  30.   background: black;
  31.   bottom: -64px;
  32.   color: white;
  33.   padding: 16px;
  34.   position: absolute;
  35.   transition: bottom .5s;
  36.   text-shadow: 1px 1px black;
  37.   width: 93%;
  38. }
  39. figure:hover figcaption {
  40.   bottom: 0;
  41. }
  42. </style>
  43. </head>
  44. <body>
  45. <?php
  46. try
  47. {
  48.     // On se connecte à MySQL
  49.     $bdd = new PDO('mysql:host=*****;dbname=*****', '*****', '*****');
  50. }
  51. catch(Exception $e)
  52. {
  53.     // En cas d'erreur, on affiche un message et on arrête tout
  54.         die('Erreur : '.$e->getMessage());
  55. }
  56. // Si tout va bien, on peut continuer
  57. // On récupère tout le contenu de la table photo
  58. $reponse = $bdd->query('SELECT * FROM photo ORDER BY date_heure ');
  59. // On affiche chaque entrée une à une
  60. echo "<table>";
  61. $iNbImages = 0;
  62. while ($donnees = $reponse->fetch())
  63. {
  64.     if ($iNbImages % 2 == 0) echo "<tr>";
  65.     echo "<td><img src=\"".$donnees['lien']."\" alt=\"".$donnees['titre']."\" width="300px" height="300px" /><p>".$donnees['titre']
  66.            ."<br />".$donnees['description']."</p></td>";
  67.     $iNbImages++;
  68.    
  69.     if ($iNbImages % 2 == 0) echo "</tr>";
  70. }
  71. if ($iNbImages % 2 != 0) echo "<td>&nbsp;</td></tr>";  // Pour fermer le tableau en cas d'un nb d'images impair !
  72. echo "</table>";
  73. ?>
  74. <?php
  75. }
  76. $reponse->closeCursor(); // Termine le traitement de la requête
  77. ?>
  78. </body>
  79. </html>

Reply

Marsh Posté le 08-08-2014 à 16:34:59    

Oui, parce que dans la balise <img />, je me sui trompé, faut mettre width=\"300px\" height=\"300px\" (j'avais oublié d'échapper les " ). Mais sinon, j'ai testé, mon code marche, une fois cette correction appliquée. Du reste, le parse error aurait dû te mettre la puce à l'oreille...


---------------
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 08-08-2014 à 19:25:15    

Merci de plus j'avais fais un mauvais enregistrement. Par contre je n'arrive plus à remettre mon système de légende :/


Message édité par sparadra1 le 08-08-2014 à 19:38:34
Reply

Marsh Posté le 08-08-2014 à 22:59:16    

ben j'ai utilisé une balise <p> pour mettre la légende (titre + description). Libre à toi de faire autrement, quitte à te passer d'un tableau et faire avec d'autres balises...


---------------
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-08-2014 à 11:16:57    

Pb résolu merci


Message édité par sparadra1 le 09-08-2014 à 12:18:36
Reply

Sujets relatifs:

Leave a Replay

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