Problème largeur colonne d'un tableau PHP/CSS - PHP - Programmation
Marsh Posté le 20-04-2012 à 09:48:29
Dans ton code php, c'est où que tu fermes ton tableau?
Sinon, dans le css, je mettrais plutôt tr.tab1 plutôt que juste .tab1, idem pour .tab2. Et c'est normal d'avoir un width: 500px dans .tab1? Parce que si tu contrains la largeur de la ligne du tableau, je vois pas comment les cellules td vont pouvoir évoluer en taille
Marsh Posté le 20-04-2012 à 09:57:03
Le width: 500px était une erreur dans mes tentatives de modifications etc mais c'est bon il est en commentaires, mais le problème n'est pas résolu pour autant les colonnes ne s'aggrandissent toujours pas
Et je rajoute que mes colonnes ne prennent pas la largeur du plus grand mot de l'en tête mais du plus grand mot de la colonne entière.
Marsh Posté le 20-04-2012 à 10:04:01
essaye avec des max-width.
Marsh Posté le 20-04-2012 à 10:10:14
ça ne marche pas non plus avec les max-width. ...
Et je viens de vérifier si mon css modifie bien mon tableau, et il le modifie bien (j'ai mis le border: solid black 10px au lieu de 1px et il a bien été modifié)
Vraiment je ne comprend pas ...
Marsh Posté le 20-04-2012 à 10:39:46
Et tu le fermes bien ton <table>?
Marsh Posté le 20-04-2012 à 10:41:22
Oui oui il est bien fermé, il est fermé après une partie du code qui est en commentaire, c'est pour ça qu'il n'est pas affiché mais il est fermé, et le <div> est fermé aussi juste après le <table>
Marsh Posté le 23-04-2012 à 11:00:48
Ben les solutions qui devraient marcher ne marchent pas. Soit il nous manque des données (code html de la page complète, par ex, qui permettrait de voir que le pb vient d'autre part), soit tu n'as pas correctement "implémenté" les solutions qui devraient marcher...
Marsh Posté le 24-04-2012 à 08:15:49
Ben je ne comprend pas, je vais remettre tous les codes pour essayer de trouver le problème :
Ici le code du tableau (quelque peu modifier depuis la dernière fois)
Code :
|
Et Ici le code css (qui a du être lui aussi un peu modifier):
Code :
|
Si il y a besoin de voir un autre code il suffit de demander
J'espère vraiment pouvoir fixer la largeur de mes colonnes sinon mon tableau ne ressemble à rien
Marsh Posté le 24-04-2012 à 08:48:08
Et Je rajoute aussi avant que ce ne soit demander, le code source de la page
Code :
|
Marsh Posté le 24-04-2012 à 10:48:06
Petit conseil pour ton switch concernant le tri. Mets plutôt les champs servant au tri dans un tableau comme ça, tu transformes ton horrible switch en :
Code :
|
Marsh Posté le 24-04-2012 à 11:26:10
Merci pour le switch, c'est modifier
Mais toujours pas trouvé l'erreur de ces colonnes qui ne veulent pas s'agrandir ?
Marsh Posté le 24-04-2012 à 12:45:36
Plusieurs choses :
1) t'as remarqué que ton th a un width de 200px alors que ton td a un width de 100px Le navigateur va forcément prendre le plus grand
2) dans tes td, pas mal de valeurs ont des espaces à la fin.
Marsh Posté le 24-04-2012 à 13:40:59
Oui tu as raison j'ai remis le width tu td a 200px mais rien ne change
Et dans les td les valeurs n'ont pas vraiment des espaces mais j'ai aligné les balises via des tabulations par soucis de lecture, je n'aurais peut être pas dû ? Je ne crois pas que cela influt sur le code généré ?
Penses tu que le fait de ne pas pouvoir modifier la taille des colonnes et surtout le fait qu'elles s'adaptent à la longueur de la plus grande chaine de caractères puisse venir d'ailleurs que du code de la page et du css ?
Marsh Posté le 24-04-2012 à 14:40:27
Ca fait pareil sur d'autres navigateurs?
Marsh Posté le 24-04-2012 à 14:48:39
Oui, je suis avec ie (obligé au boulot ...) mais je viens de tester sur Firefox et le résultat est le même
Excepté pour la date, ou avant elle s'affichait un nombre par ligne (20 -> ligne 1,-04 ligne 2, -2012 ligne3) maintenant elle est affichée sur une seule ligne au format (20-04-2012)
Mais j'ai l'impression que mon tableau ne veut pas dépasser la taille de la page, hors je ne crois pas lui avoir demandé ça
Marsh Posté le 24-04-2012 à 14:55:36
Tu devrais utiliser Firebug pour voir à quel moment ton width:100 n est pas pris en compte. C'est très efficace !
Marsh Posté le 24-04-2012 à 15:07:59
Bon alors j'ai testé avec firebug mais je ne trouve pas plus pourquoi mon tableau respecte impérativement la taille de la page, grâce a firebug j'ai pu voir ce que ça donnait si mon tableau se décalait par dessus le menu, en effet là les colonnes s'agrandissent un peu même si ce n'est pas suffisant pour que chaque colonne fasse la bonne taille (et surtout ça se voit car elles ne font pas la même taille)
Mais il ne veut pas dépasser la taille de la page le p'tit salop ><
Marsh Posté le 24-04-2012 à 15:12:50
A ben ça, c'est normal. Si ton body à un width de 100% (ce qui est le cas normalement), le contenu de ta page web ne dépassera pas la largeur de ton body sauf si un élément de la page a une largeur plus importante provoquée par un contenu ne pouvant aller à la ligne (texte insécable, image très large...).
Marsh Posté le 24-04-2012 à 15:19:21
Ok et donc pour remédier à ça j'aurais juste à faire un
body{ width: 150%;} ? (je viens de tester le body width 150% et même 300% mais ça ne marche pas )
(ou autre s'il y a moyen de faire que le body grandisse uniquement si nécessaire je suis preneur)
Et sinon question hors sujet mais en passant, plutot que de refaire un topic peut etre inutile :
J'ai affiché différente tables sql dans un seul tableau de mon php, et je voudrais exécuter un order by sur le tableau (via la méthode que tu m'a donné plus haut) est-ce possible ou c'est pas possible de faire un order by sur plusieurs table sql "coller" les unes aux autres dans un tableau ?
(Si nécessaire je peux refaire un topic mais je préfère demander vite fais ici)
Marsh Posté le 24-04-2012 à 16:29:53
ben oui, ça s'appelle faire des jointures entre les tables (en SQL) et tu peux utiliser plusieurs champs dans le order by, des champs provenant de différentes tables (listées dans le FROM, bien entendu).
Marsh Posté le 24-04-2012 à 16:32:15
Oui oui je sais qu'il y à les jointures possible mais j'ai pas trouvé la solution, j'ai essayé de réutiliser quelque chose (que tu as fait sur un autre topic d'ailleurs) et ça ressemble à ça :
Code :
|
Marsh Posté le 24-04-2012 à 16:34:03
Ok autant pour moi une bonne partie fonctionne il me semble, je vais modifier ce qui ne va pas (notamment ce UNION en trop )
Par contre toujours pas de solution pour le body width: 100%
Marsh Posté le 24-04-2012 à 16:38:52
tu connais les jointures et tu fais des UNION Soit j'ai pas compris ce que tu veux faire, soit c'est toi qui n'a rien compris aux jointures
Marsh Posté le 24-04-2012 à 16:44:04
Oh il est fort possible que je n'ai pas compris grand chose aux jointures, ce n'est pas mon fort et lorsque j'ai voulu en faire pour le tri de mon tableau ça n'a pas marché donc j'ai fait avec ce que j'ai trouvé :$
Ma requète ressemblait à ça avant :
Code :
|
Marsh Posté le 24-04-2012 à 16:47:31
Tu pourrais poster le MCD (schéma ou structure de ta BD). Vu le nom de tes tables, j'ai très peur de la modélisation de la BD (même si ça n'a certes rien à voir avec ton pb de tableau)...
Marsh Posté le 24-04-2012 à 16:56:26
Euh je crois que tu as raison d'avoir peur, la BDD n'est pas mon point fort malheureusement ...
J'espère que ce que je vais te donner sera suffisant:
Alors j'ai ces tables:
client, ealille, ealondres, eanancy, eanantes, eanord, earouen, nature, processus, redacteur, respcur, respser, service, type
les tables client, nature, processus, redacteur, respcur, respser, service, type sont composées respectivement
d'un SID_client et d'un nom_client, SID_nature et nom_nature etc.
Et les tables ealille, ealondres,eanantes,eanancy,eanord, earouen
Sont respectivement composées:
num, date, redacteur, respCur, respSer, type, nature, processus, service, client, CI, description, actionCur, id_lieu
Les clés primaires des premières tables sont le SID, et les clés primaires des ea* sont le num
J'espère que c'est ce que tu voulais savoir
Marsh Posté le 24-04-2012 à 17:02:59
T'as pas ça sous forme graphique (c'est ce qu'on appelle un MCD). Là, c'est pas évident de se représenter.
Mais je peux déjà te dire que si t'as des listes de champs identiques pour plusieurs tables, c'est que t'as un pb. En effet, tu pourrais les factoriser dans une seule table, en rajoutant simplement un champ de type unsigned "tinyint" représentant le rôle fonctionnel de l'enregistrement (ie, le nom de la table en qq sorte d'où il vient initialement, ex : 1 -> nature, 2 -> processus...).
Marsh Posté le 25-04-2012 à 08:03:07
Je ne sas pas comment obtenir le MCD réellement, alors j'ai fait au mieux en écrivant
Avant d'essayer de refaire mes tables et de les réunir tu ne crois pas que étant donné que certaines tables sont assez longues (surtout les tables respCur et redacteur qui ont chacune environ 400 données) il serait préférable de laisser les tables séparées pour éviter de parcourir toutes les tables a chaque recherche, à chaque tri etc. Sachant que je dois afficher les données de certaines tables dans des listes déroulantes, et parfois je dois afficher les données d'une table mais pas d'une autre.
Donc si je réunis tout, n'y aurais-t-il pas une perte de vitesse lors des requètes du fait des plus grandes tables ?
Et il faut savoir ussi que les accès aux différentes tables dépendent aussi des droits d'accès de la session ( exemple: un utilisateur identifier comme venant de nantes pourra ajouter des données dans la table de nantes mais pas dans les autres, mais il pourra consulter les tables des autres lieux)
Et je rajoute encore une chose, il faut que chaque données des tables eanantes, ealille, ealondres, et nancy et earouen aient un iD unique et indépendant (il doit y avoir un SID = 1 dans chaque tables)
Marsh Posté le 25-04-2012 à 10:56:10
Alors j'ai trouvé une solution pour les colonnes ! Je ne peux pas expliquer pourquoi les solutions précédentes ne fonctionnaient pas et que celle la marche mais bon. La solution est la suivante:
Ajout d'une partie de code css
Code :
|
Et juste ajout de la classe dans chaque colonne du tableau php
Code :
|
Donc voila quelque chose qui fonctionne. =)
Marsh Posté le 27-04-2012 à 10:03:27
scribou a écrit : Je ne sas pas comment obtenir le MCD réellement, alors j'ai fait au mieux en écrivant |
Alors, d'ans l'ordre :
1) Le MCD, on le fait pas après avoir implémenté la BD dans le SGBD, mais avant. Dans le dév d'une apli de gestion, c'est l'un des documents de référence.
2) pour toi, des tables de 400 lignes, c'est beaucoup? Pour info, la taille max des tables de Mysql se situe, de mémoire, à 50 millions de lignes. Et s'il faut modifier ton schéma et migrer les données, ça se fait par des requêtes sql ou des scripts, pas à la main.
3) quand tu listes le contenu d'une table, si tu n'en veux qu'une partie, les clauses where sont faites pour ça. Et pour les perfs, les index sont là pour ça aussi. Savoir bien indexer des champs suivant les requêtes qu'on fait, c'est important. La commande EXPLAIN peut t'aider dans le cas de requêtes qui sont trop longue. Pour info, sur l'une des applis que je développe (Astres, cf ma signature), j'ai un table qui contient plusieurs millions de lignes. Quand je la requête, j'ai des temps de réponses de l'ordre de 5-6s (et je suis sur un serveur pas très puissant). Et si t'as encore des pbs de perfs, tu peux tuner mysql en modifiant le fichier de conf et agrandir la taille de certains buffers ou caches.
4) pour la gestion des droits, ça se mets dans un fichier de conf ou une table. Cette gestion n'a rien à voir avec la structure de ta BD.
Conclusion : aucun de tes arguments n'est recevable...
Marsh Posté le 27-04-2012 à 10:04:27
scribou a écrit : Alors j'ai trouvé une solution pour les colonnes ! Je ne peux pas expliquer pourquoi les solutions précédentes ne fonctionnaient pas et que celle la marche mais bon. La solution est la suivante:
|
Mettre un div par cellule de tableau, c'est tout simplement immonde comme solution.
Marsh Posté le 27-04-2012 à 14:35:41
Alors pour le MCD désolé mais on ne m'a jamais appris à faire ça dans ma formation donc je pouvais pas l'inventer ><
Et sinon pour les bases de données toutes les informations que tu m'as donnée je les connaissais pas et c'est bien pour ça que je posais les questions ...
Et pour la gestion des droits la façon dont j'ai fait ce n'est pas en rapport avec la bdd donc tout va bien, mais je précisais juste au cas ou
Et pour finir sur les div je reconnais que ça fait pas top mais c'est que j'ai besoin d'une taille différente de colonne selon ce qu'elle va permettre d'afficher (une colonne qui affiche un nombre sera plus petite qu'une colonne qui affiche un champ pré-défini qui elle même sera plus petite qu'une colonne qui affiche une zone de texte) et je ne sais pas faire en sorte que les colonnes 1 et 2 fassent telle taille, les colonnes 3,4,5,6,7,8,9,10,11 fassent telle autre taille et enfin les colonnes 12 et 13 fassent encore une autre taille sans mettre des DIV différents
Mais pour conclure, si aucun de mes arguments est valable au niveau de la base de données, je dois réunir les tables c'est bien ça ?
Marsh Posté le 27-04-2012 à 14:40:24
Ok pour les DIV je suis un peu bête, peut-être que ceci te plaira plus
Code :
|
Marsh Posté le 27-04-2012 à 14:44:20
Tu peux nous redonner la dernière version de ta page html et de ton css?
Marsh Posté le 27-04-2012 à 14:56:40
Je n'ai pas encore regardé le détail de ta page, mais ta table devrait être de la forme suivante:
Code :
|
Marsh Posté le 27-04-2012 à 15:01:21
Si ta table a toujours le même nombre de colonnes (15), et que tu souhaites donner la même largeur (200px) à tes colonnes, la solution la plus simple est de mettre ceci dans ta css:
Code :
|
Marsh Posté le 27-04-2012 à 15:02:32
Bien sûr !
Alors voilà la page php de consultation:
Code :
|
Et voila le php qui suit
Code :
|
Marsh Posté le 27-04-2012 à 15:04:01
Juste un truc, la j'ai fait en sorte que la partie "corp" contenant mon tableau ne dépasse pas la page et que des scrollbar apparaissent pour faire défilé le tableau uniquement
Marsh Posté le 20-04-2012 à 09:38:29
Bonjour à tous,
Je sais qu'il y à de nombreux topics sur comment aggrandir un colonne en php mais après différentes tentative je n'arrive pas a aggrandir mes colonne comme je le voudrais...
Donc j'ai un tableau qui reprend des données de ma bdd et qui les affiche, cependant il donne la taille du premier mot de l'en-tête de colonne.
Exemple : ma colonne "date" fera la taille du mot "date" et ma colonne nommée "responsable service" fera la taille du mot "responsable".
J'ai essayé en mettant des witdh ="300" dans les th/td, j'ai essayé en mettant dans width: 300px; dans mon css mais rien n'y fait ... la taille ne bouge pas ><
Donc voici le code qui affiche le tableau:
Ici vous pouvez voir "class = tab1" ou "class = tab2" ce qui correspond a colorer une ligne sur deux pour mieux différencier le tableau
Et voici le code css (complet au cas ou mon problème viennent d'une autre partie du css...)
Voila j'espère avoir une solution à mon problème parce que je m'arrache les cheveux sans résultats ...