répétition sur plusieurs collone

pascalbm
Invité n'ayant pas de compte PHPfrance

14 avr. 2007, 02:42

Bonsoir
Est il possible de créer une région répéter sur 2 collones et vers le bas ?
de quel maniere voici le code que j'utilise. Merci d'avance

Code : Tout sélectionner

<table width="100%"> <?php do { ?> <table width="40%" border="0" cellpadding="0"> <tr> <td><img src="../images/<?php echo $row_listeart['photo']; ?>" width="84" height="110" /></td> <td><p><?php echo $row_listeart['nom_article']; ?><br /> <?php echo $row_listeart['description_c']; ?></p> <br /> <?php echo $row_listeart['prix_ht']; ?> Dhs HT. </td> </tr> </table> <?php } while ($row_listeart = mysql_fetch_assoc($listeart)); ?> </table>

Mammouth du PHP | 1353 Messages

14 avr. 2007, 07:35

Bonjour,

je suis pas sur de comprendre ce que tu veux c'est pas très clair et ca n'a pas l'air d etre une question SQL... D'après ce que j'ai compris tu veux fusionner 2 colonnes de ton tableau ? Dans ce cas regarde l'attribut colspan= d'une balise td... Pour l'alignement en bas cherche du coté de valign="bottom" dans le style.

A part ca je ne te recommende pas de faire un do {}while avec une requete car cela t'obliges a faire un premier passage avant le do qui peut etre éviter... Un while {} me parait plus approprié...

J'espère que ca aide, essaye d etre plus clair le cas échéant.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 avr. 2007, 11:23

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".


Effetue une petite recherche avec le mot clé "modulo" tu trouveras des exemples exploitables.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

15 avr. 2007, 13:24

Salut
En fait, j'aimerai avoir les articles qui se répete de façon horizontal 2 ou 3 fois pour ensuite passer automatiquement à la ligne suivante. tou cela en utilisant une région répété.
Par exemple, j'ai 20 articles dasn ma table et dans ma page s'affichemront sur la premiere ligne les 3 premiers
ensuite les 3 suivants et ainsi de suite. J'espere avoir été un peu plus clair
Je te remerci beaucoup pour l'aide :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 avr. 2007, 15:23

Tout à fait... donc
Effetue une petite recherche avec le mot clé "modulo" tu trouveras des exemples exploitables.

:wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

pascalbm2
Invité n'ayant pas de compte PHPfrance

16 avr. 2007, 01:03

Bon, j'ai rechecher avec modulo mais je n'ai pas trouver ce que je veux (peut être mauvais)
Voici dan le code qui le résultat (en html) de ce que je veux extraire d'une base Mysql et la maniere que je désire présenter les données
Merci encore

Code : Tout sélectionner

<table width="100%" border="1" cellpadding="0"> <tr> <td><p align="center">Document1<br /> description 1</p> <p align="center">Renseignement 1<br /> Photo 1</p></td> <td><p align="center">Document2<br /> description 2 </p> <p align="center">Renseignement 2 <br /> Photo 2 </p></td> <td><p align="center">Document3<br /> description 3 </p> <p align="center">Renseignement 3 <br /> Photo 3 </p></td> </tr> <tr> <td><p align="center">Document4<br /> description 4 </p> <p align="center">Renseignement 4 <br /> Photo 4 </p></td> <td><p align="center">Document5<br /> description 5 </p> <p align="center">Renseignement 5 <br /> Photo 5 </p></td> <td><p align="center">Document6<br /> description 6 </p> <p align="center">Renseignement 6 <br /> Photo 6 </p></td> </tr> <tr> <td><p align="center">Document7<br /> description 7 </p> <p align="center">Renseignement 7 <br /> Photo 7 </p></td> <td><p align="center">Document8<br /> description 8 </p> <p align="center">Renseignement 8 <br /> Photo 8 </p></td> <td><p align="center">Document9<br /> description 9 </p> <p align="center">Renseignement 9 <br /> Photo 9 </p></td> </tr> </table>

Mammouth du PHP | 19672 Messages

16 avr. 2007, 07:58

Le principe du modulo pour faire ça, c'est d'avoir un pointeur qu'on incrémente à chaque tour de boucle, exemple :
// -1- on crée un pointeur
$p = 0;
// -2- on lance la boucle de création
for($i = 0; $i < 10; $i++)
{
    // -3- on vérifie si on est dans un tour pair ou impair
    if($p % 2 == 0)
    {
        echo("Ceci est une ligne paire.<br />");
    }
    else
    {
        echo("Ceci est une ligne impaire.<br />");
    }
    // -4- on incrémente le pointeur
    $p++;
}
Teste cet exemple et inspire-toi de ce fonctionnement.

Note : j'aurais pu ici tester le modulo sur $i, mais j'ai choisi d'utiliser un pointeur indépendant parce que tu as mentionné des lignes de trois cellules et que tu n'utiliseras peut-être pas une boucle for().
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

16 avr. 2007, 09:16

Le modulo ne fait que retourner le reste d'une division entière.
Quand le modulo est nul on peut donc affirmer qu'un un nombre est divisible par un autre.

C'est en tout cas ce que tu veux faire en divisant tes lignes de table en N colonnes imprimées avant d'imprimer un retour à la ligne.

Mais tu peux utiliser une autre technique, par exemple, en comptant le nombre de colonnes imprimées avant d'imprimer un retour à la ligne.

L'algorithme peut être le suivant:
Data : conteneur de données à imprimer dans la table
nData : nombre de données
nCol : nombre de colonnes imprimables par ligne

Remarque: mathématiquement, le nombre de lignes qui seront imprimées est : nData / nCol si les valeurs de nData et nCol sont connues. nCol est donc forcement >0

Méthode 1: Utiliser le modulo
  • Code : Tout sélectionner

    nCol = 3; //3 colonnes par ligne Imprimer "<table>"; i = 0; Tantque ( i < nData) Si ( i Modulo nCol == 0 ) Imprimer "<tr>"; //imprime le retour à la ligne Imprimer "<td>Data[i]</td>"; //imprime une donnée dans une colonne i ++; //passer à la donnée suivante FinTantque; Imprimer "</table>";
Méthode 2: Utiliser un compteur de colonnes
  • Code : Tout sélectionner

    nCol = 3; //3 colonnes par ligne Imprimer "<table>"; i = 0; Tantque ( i < nData) Imprimer "<tr>"; //imprime le retour à la ligne Pour ( c = 1 à nCol ) Si ( i < nData ) Imprimer "<td>Data[i]</td>"; //imprime une donnée dans une colonne i ++; //passer à la donnée suivante FinPour FinTantque; Imprimer "</table>";
L'avantage de la première méthode est qu'elle est plus simple (moins de boucles).

Dans les langages de programmation, Tantque est un While, Si est un If, Pour est un For et Imprimer ou Afficher est une instruction d'affichage comme echo ou print.

Remarque:
  • On peut dire que nData et nCol sont 2 paramètres qui agissent sur la forme de la table affichée respectivement sur la hauteur (nombre de lignes = nData/nCol) et sur la largeur (nombre de colonnes=nCol)

    Si nCol augmente la largeur de la table augmente et Si nData augmente la hauteur de la table augmente.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2007, 18:36

Merci pour l'astuce c'est résolu en cherchant du modulo retour ligne php sur google
:D