Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1524 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Générer une liste qui s'affiche comme un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Générer une liste qui s'affiche comme un tableau

n°1997373
SV_LVH
Posté le 31-05-2010 à 01:41:42  profilanswer
 

Bonjour à tous,
 
Je vais essayer d'être le plus clair possible pour bien vous expliquer mon problème.
 
J'ai une <TABLE> générée dynamiquement qui regroupent des données extraites d'une base de données.
 
Certaines cellules de cette <TABLE> sont des listes déroulantes contenant des valeurs extraites d'un champ d'une table de ma base de données (voir image ci-dessous : 'Année', 'Type de vins' et 'Stock' viennent respectivement des champs 'ANNEE_PROD', 'CAT_PROD' et 'STOCK_PROD' de ma table 'PRODUITS').
 
Par contre pour certaines cellules (image : deuxième ligne) la liste déroulante contient des valeurs extraites de plusieurs champs d'une même table. Dans cette exemple les valeurs viennent tous de 'ID_CARAC_VIN', 'APPELLATION', 'TYPE_CARAC_VIN', 'REGION_VIN' et 'PAYS_VIN' de la table 'CARAC_VINS' mais sont regroupées dans la même liste déroulante.
 
http://i68.photobucket.com/albums/i7/Anatal/aa-liste-02.jpg
 
Comme vous pouvez le voir, l'affichage de la grand liste est assez disgracieux puisque que les données ne s'alignent pas sur les titres des champs.
 
Pour y remédier j'ai essayer plusieurs techniques:
1°) Mettre directement la ligne de la de la <TABLE> dans le <OPTION> (cela affiche correctement la ligne mais ça supprime la liste déroulante)
2°) Mettre des <DIV> dans le <OPTION> pour séparer les données (sans aucun résultat même avec des width pour chaque <DIV> )
3°) Mettre des &nbsp; entres chaque valeur (mais comme la longueur de chaque données est différentes cela ne cadre pas correctement avec les titres des champs de la <TABLE> )
 
Bref je suis à cours d'idée..
 
Si quelqu'un a une solution à me proposer, ça m'arrangerait.


---------------
Quand vous demandez sur un forum comment changer un pneu de voiture peu de gens vous répondent. Et ceux qui le font vous expliquent généralement comment rouler sur 3 roues.
mood
Publicité
Posté le 31-05-2010 à 01:41:42  profilanswer
 

n°1997746
SV_LVH
Posté le 01-06-2010 à 00:09:14  profilanswer
 

Personne n'a d'idée pour afficher plus joliment les données de ma deuxième ligne?

n°1997803
stealth35
Posté le 01-06-2010 à 10:03:22  profilanswer
 

2006 c'est pas une très bonne année pour le Saumur...

n°1999428
SV_LVH
Posté le 07-06-2010 à 06:25:22  profilanswer
 

Bonjour à tous,
 
Je suis désolé de revenir à la charge avec cette question mais je cherche toujours une solution pour afficher les résultats d'un <select> en respectant à peu près la longueur des champs titres de la table (voir image dans le premier message).
 
J'ai essayé divers solutions mais rien ne fonctionne.  
 
Voici la partie de mon code PHP de ma dernière tentative:

echo("<table class=\"tabGestVins\">\n" );
echo("<thead>\n" );
echo("<tr>\n" );
echo("<td colspan=\"5\">&nbsp;</td>\n" );
echo("</tr>\n" );
echo("<tr>\n" );
echo("<td colspan=\"5\"><span class=\"titreListeLeft\">Donn&eacute;es sur l'appellation</span></td>\n" );
echo("</tr>\n" );
echo("<tr>\n" );
echo("<td colspan=\"5\">&nbsp;</td>\n" );
echo("</tr>\n" );
echo("<tr align=center>\n" );
echo("<td class=\"tabAppelTitreTD1\">N&deg;</td>\n" );
echo("<td class=\"tabAppelTitreTD2\">Appellation</td>\n" );
echo("<td class=\"tabAppelTitreTD3\">Type</td>\n" );
echo("<td class=\"tabAppelTitreTD4\">R&eacute;gion</td>\n" );
echo("<td class=\"tabAppelTitreTD5\">Pays</td>\n" );
echo("</tr>\n" );
echo("</thead>\n" );
 
//création de la requête  
$GestAppel = "SELECT carac_vins.ID_CARAC_VIN, APPELLATION, TYPE_CARAC_VIN, REGION_CARAC_VIN, PAYS_VIN
FROM carac_vins
INNER JOIN produits
ON produits.ID_CARAC_VIN = carac_vins.ID_CARAC_VIN  
WHERE produits.ID_PROD = '$_POST[IdentVins]'";  
//execution de la requête (ou affichage de l'erreur)
$ga=mysql_query($GestAppel) or die(mysql_error());  
// On fait une boucle pour lister les valeurs selectionnees :
while($valGa=mysql_Fetch_array($ga))
{
echo("<tr>\n" );
//liste deroulante de l'ensemble des valeurs des appellations
echo("<td class=\"tabGestNScenter\" colspan=\"5\">\n<select class=\"longSelect\" title=\"liste des appellations\" name=\"totalAppel\">\n" );
echo("<option selected value=\"".htmlentities($valGa['ID_CARAC_VIN'])."\"><div class=\"appTd1\">".htmlentities($valGa['ID_CARAC_VIN'])."</div><div class=\"appTd2\">".htmlentities($valGa['APPELLATION'])."</div><div class=\"appTd3\">".htmlentities($valGa['TYPE_CARAC_VIN'])."</div><div class=\"appTd4\">".htmlentities($valGa['REGION_CARAC_VIN'])."</div><div class=\"appTd5\">".htmlentities($valGa['PAYS_VIN'])."</div></option>\n" );
 
//creation de la requete pour la liste deroulante
$deroulAppel = "SELECT carac_vins.ID_CARAC_VIN, APPELLATION, TYPE_CARAC_VIN, REGION_CARAC_VIN, PAYS_VIN  
FROM carac_vins ORDER BY ID_CARAC_VIN ASC";
//execution de la requête (ou affichage de l'erreur)
$dA=mysql_query($deroulAppel) or die(mysql_error());  //execution de la requete (ou affiche l'erreur)
// On fait une boucle pour lister les valeurs selectionnees :
    while($row=mysql_Fetch_array($dA))  //boucle tant que des données sont extraites
    {
        echo("<option class=\"SelectAlignGauche\" value=\"".$row['ID_CARAC_VIN']."\"><div class=\"appTd1\">".htmlentities($row['ID_CARAC_VIN'])."</div><div class=\"appTd2\">".htmlentities($row['APPELLATION'])."</div><div class=\"appTd3\">".htmlentities($row['TYPE_CARAC_VIN'])."</div><div class=\"appTd4\">".htmlentities($row['REGION_CARAC_VIN'])."</div><div class=\"appTd5\">".htmlentities($row['PAYS_VIN'])."</div></option>\n" );
    }
echo("</select></td>\n" );
}
echo("<tr>\n" );
echo("<td colspan=\"5\">&nbsp;</td>\n" );
echo("</tr>\n" );
echo("</table>\n" );

 
Et la partie du CSS:

.tabGestVins { width:960px; border-collapse:collapse; vertical-align:middle; }
.SelectAlignGauche { text-align:left; padding-left:5px; padding-right:5px; }
.titreListeLeft { font-weight: bolder; font-size:18px; color:#940F17; text-align:left; text-indent:0; margin-left:0; }
.appTd1 { width:60px; display:block; float:left; }
.appTd2 { width:350px; display:block; float:left; }
.appTd3 { width:100px; display:block; float:left; }
.appTd4 { width:215px; display:block; float:left; }
.appTd5 { width:215px; display:block; float:left; }
.tabAppelTitreTD1 { width:60px; height:30px; text-align:center; vertical-align:middle; font-size:14px; border:1px solid #000; border-collapse:collapse; background-color:#CCC; font-weight:bolder; }
.tabAppelTitreTD2 { width:350px; height:30px; text-align:center; vertical-align:middle; font-size:14px; border:1px solid #000; border-collapse:collapse; background-color:#CCC; font-weight:bolder; }
.tabAppelTitreTD3 { width:100px; height:30px; text-align:center; vertical-align:middle; font-size:14px; border:1px solid #000; border-collapse:collapse; background-color:#CCC; font-weight:bolder; }
.tabAppelTitreTD4 { width:215px; height:30px; text-align:center; vertical-align:middle; font-size:14px; border:1px solid #000; border-collapse:collapse; background-color:#CCC; font-weight:bolder; }
.tabAppelTitreTD5 { width:215px; height:30px; text-align:center; vertical-align:middle; font-size:14px; border:1px solid #000; border-collapse:collapse; background-color:#CCC; font-weight:bolder; }
.tabGestNScenter { text-align:center; font-size:14px; height:25px; border:1px solid #000; border-collapse:collapse; background-color:#FFF; }

 
Cela fait trop longtemps que je suis dessus, peut-être existe t'il une autre façon de faire (sans <select> ou penser directement la conception global de ma table) mais je n'ai plus les idées claires, je manque de recul maintenant.
 
Je pense qu'un regard neuf pourrait m'aider à trouver une solution (enfin j'espère).  
 
J'ai besoin de votre aide!  :(


Message édité par SV_LVH le 07-06-2010 à 06:26:08
n°1999451
flo850
moi je
Posté le 07-06-2010 à 10:05:16  profilanswer
 

deja ,on ne mets aps des div au limieudes option , mais on utilise des optgroup
ensuite, je ne vois aps ta capture d'écran( merci le proxy ) est ce que tu peux mettre ta capture ici : http://hfr-rehost.net/

n°1999517
rufo
Pas me confondre avec Lycos!
Posté le 07-06-2010 à 11:41:39  profilanswer
 

Ton idée de mise en forme (infos concaténées dans liste déroulante, elle-même dans un tableau) n'est pas bonne. Ou on fait un tableau, auquel cas, l'utilisateur s'attend à pouvoir trier les enregistrements par colonne et cliquer sur un des champs pour accéder à la fiche détaillée, ou on fait une liste déroulante qui permet de sélectionné un item, mais dans ce cas, la liste est non triable. On ne mixe pas les 2! D'où pourquoi t'as un pb de mise en page.
 
ps : ton mix de code php/html/css est immonde!


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Générer une liste qui s'affiche comme un tableau

 

Sujets relatifs
erreur Affichage tableau [firefox et explorer][R] Selection dans un tableau.
Convertir un tableau Java en JavaScript[C] Probleme swap liste double chainée
[ HTML] Tableau[resolu][PHP] parcourir un tableau d'objet
Acceder aux attributs d'un objet dans une listeafficher en tableau ou div
Creation d'une liste a partir d'un selectmacro tableau croisé dynamique
Plus de sujets relatifs à : Générer une liste qui s'affiche comme un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR