Afficher données MySQL en fonction du nombre de sorties
Bonjour,
J’espère que je post au bon endroit ! (pour moi il s’agit plus d’un problème de PHP de de connexion à MySQL)
Je me permets de me tourner vers vous car je ne trouve pas la solution à un problème.
Je suis en train de faire un site avec une BDD MySql dans laquelle se trouvent 9 colonnes.
Mon problème se trouve à l’affichage des informations.
Le but est de faire 4 vignettes l’une à côté de l’autre avec les informations d’une ligne de la BDD.
Si j’ai plus de 4 vignettes, je souhaiterais mettre les 4 suivantes dessous et ce, jusqu’à la fin de mon résultat.
En HTML, avec du statique, je suis capable de le faire avec un float :left par contre quand je ne connais pas le nombre de ligne résultant de ma requête, c’est plus compliqué (ceux qui est le cas à chaque fois :) )
En effet, quand j’ai 4 ou un multiple de 4, je mets un float :none sur la dernière vignette avec un truc comme ça :
Code:
1 2 3 4 5 6 7 8 9 10
| if ($nb_vignette < 3)
{
echo 'float:left';
$nb_vignette = $nb_vignette +1;
}
else
{
echo 'float:none';
$nb_vignette = 0;
} |
Mais quand j’ai qu’une, deux ,trois résultat ou plus de 4, ce type de procédé ne fonctionne pas.
Par exemple la 5eme vignette garde le float :left ce qui est logique mais je ne vois pas comment resoudre ca …
J’ai essayé avec un switch($nb_vignette) case 1, case 2 etc mais c’est vite devenu une usine à gaz.
Pouvez-vous me donner un petit coup de main ?
PS : je ne suis pas un spécialiste de PHP comme vous pourrez le voir dans mon code :)
Merci d’avance
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
<?php
//Requete sur les type_mat non vide
$sql_type_mat_titre = 'SELECT DISTINCT `type_mat` FROM `occasion` WHERE `designation` <> "" ORDER BY `type_mat`';
$result_type_mat_titre = mysql_query ($sql_type_mat_titre) or die ('Erreur SQL !'.$sql_type_mat_titre.'<br />'.mysql_error());
// on affiche les titres par order alphabetique
while($data_type_mat = mysql_fetch_array($result_type_mat_titre))
{
$type_mat_titre = $data_type_mat['type_mat'];
echo '
<div id="separateur2" style="font-size:10px;">
<a href="'.include 'adressesite.inc.php';
echo'
/occasions.php#page"></br> Haut de page</a>
</div>
<div class="tdoccastitre" id="'.$type_mat_titre.'">'.$type_mat_titre.'
</div>';
//Pour chaque type_mat, on affiche la 1ere photo et les info des mat
$sql_mat = 'SELECT * FROM `occasion` WHERE `type_mat` = "'.$type_mat_titre.'"';
$result_mat = mysql_query ($sql_mat) or die ('Erreur SQL !'.$sql_mat.'<br />'.mysql_error());
$nb_vignette = 0;
while($data_mat = mysql_fetch_array($result_mat))
{
$n_serie = $data_mat['n_serie'];
$matricule = $data_mat['matricule'];
$etat_acquisition = $data_mat['etat_acquisition'];
$designation = $data_mat['designation'];
$annee_origine = $data_mat['annee_origine'];
$marque = $data_mat['marque'];
$type_mat = $data_mat['type_mat'];
$photo = $data_mat['photo'];
//Si la marque se trouve dans la designation -> on sup
if (preg_match("/$marque/", $designation))
{
//echo "trouvé</br>";
$designation = preg_replace ("/$marque/","", $designation);
}
else
{
//echo "non vu</br>";
}
//Si le type mat se trouve dans la designation -> on sup
if (preg_match("/$type_mat/", $designation))
{
//echo "trouvé</br>";
$designation = preg_replace ("/$type_mat/","", $designation);
}
else
{
//echo "non vu</br>";
}
//echo $n_serie.' '.$matricule.' '.$etat_acquisition.' '.$designation.' '.$annee_origine.' '.$marque.' '.$type_mat.' '.$photo.'</br>';
echo '
<div style="';
//test IF
if ($nb_vignette < 3)
{echo 'float:left';
$nb_vignette = $nb_vignette +1;
}
else
{
echo 'float:none';
$nb_vignette = 0;}
echo '">';
echo ' <a href="'.include 'adressesite.inc.php';
echo '
/'.$matricule.'.php"/><img class="tdoccasphoto" src="'.include 'adressesite.inc.php';
echo '
/'.$matricule.'.jpg" border="0" alt="'.$marque.' - '.$designation.'" title="'.$marque.' - '.$designation.'" width="150px" style="margin-bottom:10px"/>
</a>
</br>'.$marque.
'</br>'.$designation.
'</br>
<span class="tboccasinfo"><a href="'.include 'adressesite.inc.php';
echo '/occasions/'.$matricule.'.php">Plus d infos</a></span>
</div>';
}
}
?> |