IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Créer une table HTML colonne par colonne au lieu de ligne par ligne


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Par défaut Créer une table HTML colonne par colonne au lieu de ligne par ligne
    Bonjour.
    Pour simplifier, j'ai deux objets dont les données sont stockées dans une table Oracle (avec par exemple un nom, un texte, une image)
    Le but est d'afficher côte à côte et verticalement les données de ces deux objets: les deux noms côte à côte, les textes (de longueurs différentes) côte à côte et les deux images côte à côte. Je pense donc mettre ces données dans une table HTML pour préserver l'alignement horizontal.
    nom1 nom2
    texte1 texte2
    texte1
    texte1
    image1 image2
    Le problème c'est qu'une requête SQL sur un objet me donne le nom, le texte , l'image, c'est-à-dire une colonne de mon tableau alors qu'en PHP, on ne peut créer le tableau que ligne par ligne: <
    tr><td>...</td><td>...</td></tr>...
    J'espère avoir été assez clair.
    Comment faire?
    Merci.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Malheureusement c'est impossible, à moins de pondre un algo bien moche
    Ce que tu peux faire en revanche c'est préparer ton tableau pour l'affichage en ligne, ce qui peut se faire de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $cols = array(
      array('a1', 'a2', 'a3', 'a4'),
      array('b1', 'b2', 'b3', 'b4'),
      array('c1', 'c2', 'c3', 'c4'),  
    );
     
    $lines = array();
    $c = count($cols[0]);
    for ($i=0; $i<$c; $i++) {
      $lines[] = array(array_shift($cols[0]), array_shift($cols[1]),  array_shift($cols[2]));
    }
     
    echo "<table>";
    foreach ($lines as $line) {
      list($a,$b,$c) = $line;
      echo "<tr><td>$a</td><td>$b</td><td>$c</td></tr>";
    }
    echo "</table>";

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Pourquoi ne pas utiliser plutôt des div ?

    C'est plus simple et personnellement plus propre.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Par défaut
    Justement, j'ai posé cette question dans le forum CSS:
    Je crée des balises div que j'appelle par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div>t11</div><div>t12</div><div>t13</div><div>t21</div><div>t22</div><div>t23</div>
    Elles sont forcément écrites dans cet ordre et j'aimerais qu'à l'affichage, j'obtienne ceci:
    t11 t21
    t12 t22
    t13 t23
    Est-ce qu'on peut le faire avec du CSS et si oui, comment?
    PS: j'aimerais que ça fonctionne comme un tableau: si le bloc t11 par exemple contient plus de lignes que le bloc t21, alors les premières lignes de t12 et t22 sont quand même alignées.

    On m'a répondu que c'est impossible à cause du PS.
    Mais si vous avez une autre idée...

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Si c'est un tableau, il faut faire un tableau c'est tout. On ne mets pas des divs pour faire joli.

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    La seule raison d'utiliser une table est justement l'affichage de données tabulaires.

    C'est le cas ici, je ne vois pas de raison d'utiliser des div qui n'ont aucune valeur sémantique alors que les données de tableaux en ont besoin.

    A moins de vouloir succomber à la divitis bien sûr...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Benjamin Delespierre Voir le message
    Malheureusement c'est impossible, à moins de pondre un algo bien moche
    "a quoi ca sert que je me décarcasse ?" ... :

    => Affichage de données dans un tableau HTML
    et plus particulièrement :
    - Affichage "en colonne" avec array()
    - Affichage "en colonne" avec Base de Données

  8. #8
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    "a quoi ca sert que je me décarcasse ?" ... :

    => Affichage de données dans un tableau HTML
    et plus particulièrement :
    - Affichage "en colonne" avec array()
    - Affichage "en colonne" avec Base de Données
    Je me suis mal exprimé. Je voulais dire qu'au niveau de HTML on ne peut pas afficher autrement qu'en ligne.

    En revanche on peut customiser les colonnes avec <col> et <colgroup>.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Je me suis mal exprimé....
    No problemo.
    Je ne faisais que parodier une vieille pub : "à quoi ca sert que DUCROS se décarcasse" ...
    ("je vous parle d'un temps que les moins de 20 ans ne peuvent pas connaitre ....")

Discussions similaires

  1. [Article] Créer une table HTML éditable en JavaScript v2.0
    Par bigboomshakala dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 16/05/2014, 16h32
  2. [Article] Créer une table HTML éditable en JavaScript v1.0
    Par bigboomshakala dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 16/04/2012, 16h26
  3. Réponses: 4
    Dernier message: 22/01/2010, 10h24
  4. Réponses: 2
    Dernier message: 10/10/2008, 16h56
  5. [MySQL] Créer une table dont la 1ere colonne est la recopie de celle d'une autre table
    Par Richard Trigaux dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/11/2007, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo