Page 1 sur 1

Test et boucle pour affichage formaté en 2 colonnes

Posté : 01 mars 2013, 21:06
par julia
Problématique :
J'ai une fonction qui test une succession de champ et les affichent s'il ne sont pas vide.
<?php
// detail - Nbr de chambres
if(!empty($bien->type_chauffage )) {
echo 'Type de chauffage : '.$bien->type_chauffage.'';
}
?>
Je souhaite faire un affichage sur deux colonnes gauche / droite
<tr><td align="left"> resultat si pas vide </td><td align="right"> resultat si pas vide </td>
</tr>
Je ne vois pas comment mettre en place une boucle de test ou d'utiliser un booléen.
car je dois gérer deux paramètres dans ce test pour l'affichage : Si champ non vide, on l'affiche a gauche ou a droite selon le résultat de l'affichage précédent et ainsi de sutie..
Pouvez vous m'aider pour ce bout de code ?
Infiniment merci..

Re: Test et boucle pour affichage formaté en 2 colonnes

Posté : 02 mars 2013, 00:50
par julia
Bon j'arrive a ça, mais besoin d'un petit coup de pouce pour finaliser :
Ca me les affiche en quinquonce et décallé d'une ligne :
Une idée ? pour avoir au final :
0 1
2 3
4 5
et NON PAS
0
1
2
3
merci de m'aider. Julia

Code : Tout sélectionner

<?php echo '<table border="0" width="680">'; for ($i = 0; $i < 10; $i++) { if ($i % 2) { $gauche = ''; $droite = $i; } else { $gauche = $i; $droite = ''; } echo '<tr><td align="left">' . $gauche . '</td><td align="right">' . $droite . '</td></tr>'; } echo '</table>'; ?>
Julia

Re: Test et boucle pour affichage formaté en 2 colonnes

Posté : 02 mars 2013, 02:57
par Julia
27 lectures, aucune réponse, pour une débutante comme moi...
Pas cool...
Julia

Re: Test et boucle pour affichage formaté en 2 colonnes

Posté : 02 mars 2013, 10:10
par t00rist
Salut,

Je ne sais vraiment pas si j'ai tout saisi à cette explication mais en gros, tu souhaites afficher des données sur deux colonnes.
J'ai l'impression si c'est le cas que tu passes par des chemins impossibles pour une fonction relativement basique.

Pour être franc et pour simplifier le tout j'aurais vu les choses autrement qu'avec une table.
Tu peux créer une balise <ul> de 680px (par exemple) et donc y intégrer des <li> de 340px en float left avec un clear both en fin de liste (de la boule for).

Le plus simple dans cette version et si tu fais appel à ta base de données pour afficher ce champs est de tout revoir à partir de ta sortie de données.

Exemple au hasard car je n'ai pas beaucoup d'éléments :
<?php

// Fonction de chargement des données
function loadTypeChauffage(){
    $data=array();

    // En supposant une base de données $db ou équivalent
    $r=$db->query('SELECT type_chauffage FROM XXX');

   // Boucle des champs type_chauffage
    foreach($r as $done){
        $data[]=$done; // Intègre les données dans une table
    }
    $r->closeCursor(); // Stoppe la boucle

    // Retour de la table
    return $data;
}
?>

<ul id="maListe">
    <?php

   // Appel de la fonction donc des données dans la variable $list
    $list=loadTypeChauffage();
 
    // Nouvelle boucle pour l'affichage
    foreach($list as $typeChauffage){
        
        // Affichage du champs si celui-ci n'est pas vide
        if(!empty($typeChauffage[0])){
        ?>
            <li><?php echo htmlspecialchars($typeChauffage[0]); ?></li>
        <?php
        }
    }
    ?>
    <div class="clear"></div>
</ul>
Exemple de css correspondant :
#maListe { width:680px; margin:0; padding:0; list-style:none; }
#maListe li { float:left; width:340px; height:40px; }
#maListe .clear { clear:both; }
Ce n'est qu'un exemple vite fait, à toi de voir ce que tu peux en faire si ce n'est pas hors sujet.

Bonne journée

Re: Test et boucle pour affichage formaté en 2 colonnes

Posté : 03 mars 2013, 01:40
par julia
Je souhaite afficher des données sur deux colonnes OUI.

Les valeurs sont ainsi :

Code : Tout sélectionner

<div id="elements_gauche"> <?php // detail - Surface habitable if(!empty($bien->surf_habitable)) { echo 'Surface habitable: '.$bien->surf_habitable.' m&sup2;'; } else { echo 'Surface habitable:'; } ?> </div> <div id="elements_droite"> <?php // detail - type_chauffage if(!empty($bien->type_chauffage )) { echo 'Type de chauffage: '.$bien->type_chauffage.''; } else { echo 'Type de chauffage:'; } ?> </div> <div id="elements_gauche"> etc...
J'ai une 20 aine de donnés de ce type.
Je ne veux passer dans la boucle d'affichage que les données
qui sont non vides et pratiquer l'alternance dans l'affichage <div gauche> <div droite>
Donc c'est a la SORTIE des 20 if(!empty($bien->type_chauffage )) {
qu'il faut envoyer cela à la BOUCLE de test.. Et ca Je n'y arrive pas.
Merci de m'aider.