Page 1 sur 1

répétition sur plusieurs collone

Posté : 14 avr. 2007, 02:42
par pascalbm
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>

Posté : 14 avr. 2007, 07:35
par guilt92
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.

Posté : 14 avr. 2007, 11:23
par Truc
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.

Posté : 15 avr. 2007, 13:24
par Invité
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 :)

Posté : 15 avr. 2007, 15:23
par Truc
Tout à fait... donc
Effetue une petite recherche avec le mot clé "modulo" tu trouveras des exemples exploitables.

:wink:

Posté : 16 avr. 2007, 01:03
par pascalbm2
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>

Posté : 16 avr. 2007, 07:58
par Cyrano
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().

Posté : 16 avr. 2007, 09:16
par sadeq
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.

Posté : 16 avr. 2007, 18:36
par Invité
Merci pour l'astuce c'est résolu en cherchant du modulo retour ligne php sur google
:D