Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2011, 12h09   #1
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
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.
Citation:
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: <
Citation:
tr><td>...</td><td>...</td></tr>...
J'espère avoir été assez clair.
Comment faire?
Merci.
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 12h16   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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 :
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>";
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 08h00   #3
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Pourquoi ne pas utiliser plutôt des div ?

C'est plus simple et personnellement plus propre.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 09h08   #4
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
Justement, j'ai posé cette question dans le forum CSS:
Je crée des balises div que j'appelle par exemple:

Code :
<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:
Citation:
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...
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h27   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Si c'est un tableau, il faut faire un tableau c'est tout. On ne mets pas des divs pour faire joli.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/06/2011, 11h22   #6
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
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...
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/06/2011, 12h46   #7
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Bonjour,

Si c'est qu'une question de présentation, tu mets la ligne de résultat sql qui correspond à ta première colonne dans un div puis la ligne de résultat sql qui correspond à ta deuxième colonne dans un autre div et après tu style en mettant le premier div en float:left; et tu aura des deux div (colonnes) côte à côte.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 13h07   #8
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
Oui mais je veux aussi avoir un alignement horizontal des données (voir mon dernier message):

si par exemple le premier bloc contient deux lignes (t11 et t11) alors avec ta méthode je n'ai pas l'alignement horizontal entre les blocs t12 et t22 comme dans un tableau: j'obtiens ceci

t11 t21
t11 t22
t12 t23
t13

au lieu de
t11 t21
t11
t12 t22
t13 t23
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 13h31   #9
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 13h49   #10
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Citation:
Envoyé par JCD21 Voir le message
si par exemple le premier bloc contient deux lignes (t11 et t11)
?

Une ligne de résultat dans un div qui forme ta première colonne puis une ligne de résultat dans une autre div qui forme ta deuxiéme colonne. Ensuite tu met les 2 div côte à côte en css.

Ou regarde les solutions proposées au dessus par jreaux62, elles m'ont l'air intéressantes.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 14h16   #11
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
jreaux62, si j'ai bien compris, ta méthode sous-entend qu'on met les données de la BDD dans un array avant de créer la table HTML.
C'est ce que j'ai fait mais les cellules du array contiennent chacune une grosse chaîne de caractères en HTML. Pour l'instant, ça passe...
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 14h25   #12
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par JCD21 Voir le message
ta méthode sous-entend qu'on met les données de la BDD dans un array avant de créer la table HTML.
Oui.
Citation:
Envoyé par JCD21 Voir le message
mais les cellules du array contiennent chacune une grosse chaîne de caractères en HTML. Pour l'instant, ça passe...
On met ensuite ce qu'on veut dans les cellules ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h53   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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>.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h33   #14
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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 ....")
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h35.


 
 
 
 
Partenaires

Hébergement Web