PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 07-03-2012 20:05:02

rvgotti
Membre
Lieu : Grenoble
Inscription : 21-09-2010
Messages : 33
Site Web

Mise en page pour une boucle

Bonjour à tous,

Je suis en train de réaliser une boutique en ligne et le but de mon post est d'améliorer l'affichage des articles à travers une boucle.
J'arrive très bien à les afficher les uns en dessous des autres mais le soucis, c'est que quand il y a 100 articles dans la même catégorie, cela fait des page à rallonge sad

Je voudrais en afficher 3 ou 4 sur la même ligne puis un retour à la ligne. un peu comme dans cet exemple :
http://www.gt2i-competition.com/Casques … 1_476.html

Est ce possible ?

Mon script est contruit comme ceci :

--------------------------------------------------

<?
$sql = mysql_query("SELECT * FROM pieces_historique WHERE categories=\"$cat\" AND statut=\"1\"");

echo "<table width=\"300\" height=\"182\" border=\"0\" align=\"center\">";
while($data = mysql_fetch_array($sql))
{
...........
}
echo "</table>";
?>
 

--------------------------------------------------

Merci d'avance pour votre aide...

Hervé

Hors ligne

#2 07-03-2012 21:15:50

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 628
Site Web

Re : Mise en page pour une boucle

Bonjour,

Oui c'est tout à fait possible (sinon pour commencer, l'exemple cité n'aurait pas pu être réalisé^^). La réponse à votre problème consiste tout simplement à résoudre un problème d'arithmétique de base: représenter un nombre modulo un autre nombre, ou dit différement, vérifier la divisibilité d'un nombre par un autre.

++

Dernière modification par Jc (07-03-2012 21:16:10)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 08-03-2012 12:41:35

rvgotti
Membre
Lieu : Grenoble
Inscription : 21-09-2010
Messages : 33
Site Web

Re : Mise en page pour une boucle

Si j'ai a peu pres compris, tu me dis de diviser le nombre de resultats que j'obtiens dans ma requete par 3 ? A quoi cela sert t'il ?

Puis comment le mettre en oeuvre ?

Hors ligne

#4 08-03-2012 13:27:00

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mise en page pour une boucle

Saluton,
Essaye de comprendre ce petit bout de script :

<?php
$source = range(1,53);
$cols= 5;
$compteur=0;
echo ' | ';
foreach($source as $rang){
    echo $rang, ' | ';
    $compteur++;
    if ($compteur==$cols) {
        echo '<br /> | ';
        $compteur = 0;
        }
    }

qui donne ce résultat

| 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 |

et imagine de remplacer le test sur l'incrémentation de $compteur par une incrémentation couplée à un %$cols et tu auras une idée un peu plus concrète de ce que te propose notre bon Jc.

Rappel afférent à l'opérateur modulo en PHP %.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 08-03-2012 13:53:19

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mise en page pour une boucle

Je te donne un piste supplémentaire, voici une variante du code précédent

<?php
$source = range(1,53);
$cols= 5;
$contador= 0;
echo ' | ';
foreach($source as $rang){
    echo $rang, ' | ';
    ++$contador;
    $contador %=$cols;
    if ($contador==0) echo '<br /> | ';
    }

qui utilise l'opérateur modulo PHP.

Dans les deux versions, on peut jouer sur la valeur de $cols, pour changer le nombre d'items par ligne.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 08-03-2012 22:22:52

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 628
Site Web

Re : Mise en page pour une boucle

rvgotti a écrit :

Si j'ai a peu pres compris, tu me dis de diviser le nombre de resultats que j'obtiens dans ma requete par 3 ? A quoi cela sert t'il ?

Je vais continuer mon approche du problème pour que vous puissiez bien comprendre qu'il s'agit d'un problème d'arithmétique de base, et aussi de façon à rester complémentaire à MK qui vous donne l'approche PHP de ce que j'ai exprimé au départ à savoir la divisibilité d'un nombre par un autre.

Donc pour répondre à votre question, si vous divisez le nombre de résultats que vous obtenez dans votre requête par 3, qui représente ici votre nombre de colonnes, qu'obtenez vous? le nombre de lignes. Si la division est exacte, ce qui signifie alors que le nombre d'enregistrements est divisible par 3 ou encore que le reste de la division par 3 du nombre d'enregistrements est égal à 0, toutes les lignes auront 3 enregistrements chacune. Par contre si le reste de cette division >0 (la division donne un nombre décimal), alors vous aurez une ligne supplémentaire qui aura pour nombre d'enregistrement(s) la valeur du reste de votre division par 3, et c'est cette valeur que calcule l'opérateur modulo de PHP (%).

J'espère que vous avez désormais compris l'intérêt.

Cordialement,

Jc

Dernière modification par Jc (08-03-2012 22:25:58)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 09-03-2012 19:46:22

rvgotti
Membre
Lieu : Grenoble
Inscription : 21-09-2010
Messages : 33
Site Web

Re : Mise en page pour une boucle

Oui j'ai parfaitement compris l'interet d'utiliser l'opérateur modulo de PHP mais je vais certainement avoir du mal à mettre cela en oeuvre dans mon script. Je vais tout de même essayer...

Hors ligne

Pied de page des forums