begin process at 2012 05 31 18:14:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

taille "VRAIEMENT" fixe d'une colonne dans un tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

taille "VRAIEMENT" fixe d'une colonne dans un tableau

jeudi 5 novembre 2009 à 15:25:42 | taille "VRAIEMENT" fixe d'une colonne dans un tableau

Teddy_le_gnein

Bonjour à tous,

Je cherche à faire un tableau avec une taille fixe pour une colonne.
Je connais l'attribut "width" pour la balise <td> mais le problème est quand un mot est très long.
En effet, si je fixe une taille avec "width", cette taille sera réspéctée si j'entre du texte suffisemmant court (ex : "des mots et des espaces") pour ne pas dépasser le width défini.
Mais si j'entre un long mot qui dépasse cette taille, ma cellule va s'agrandire pour que le mot entre dans la cellule (ex : des_mots_sans_espaces").

Existe t'il un moyen pour forcer la taille maximale des colonnes pour que le long mot soit coupé, meme en plein milieu.

Malgré mes recherches je ne trouve rien d'autre que l'utilisation du width que je connais déjà et qui n'est pas adapté dans mon cas!

En vous remerciant!

You can do it...
vendredi 6 novembre 2009 à 14:03:19 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

Teddy_le_gnein






personne....

You can do it...
vendredi 6 novembre 2009 à 14:46:54 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

CSIBern

Salut Teddy,

As-tu essayé avec style="max-width:190px;" ?

Cette fonction n'est pas compatible avec tous les navigateurs (notamment IE <6), mais peut-être pourras-t-elle faire des miracles pour toi
vendredi 6 novembre 2009 à 16:16:38 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

Teddy_le_gnein

Salut CSIBern,
merci de me répondre...

J'ai effectivement essayé avec "style=max-width", mais dans le doute, je viens de réésayer sur une page vièrge avec un petit tableau en example...

Le problème est que je suis contraint à l'utilisation de IE6 pour l'exploitation finale de mon code!!!

Sous IE6, effectivement, ça ne passe pas!
J'ai testé avec un IE8 par curiosité, et ça à pas l'aire mieu! ²
Sous firefox, il limite bien le tableau mais le texte trop long déborde "salement" sur la cellule suivante (mais qu'importe... firefox ne sera pas utiliser pour mon appli)

Bref ça ne semble pas etre la bonne piste pour mon cas!

S'il y a d'autres idées, je suis preneur...




You can do it...
vendredi 6 novembre 2009 à 19:02:36 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

TychoBrahe

Salut,

Pour gérer ce genre de débordement il existe la propriété overflow. Et juste comme ça, le fait que ça doive fonctionner sous ie6 ne t'interdit pas de faire un xhtml valide ni de le séparer du css.
jeudi 12 novembre 2009 à 13:45:21 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

Teddy_le_gnein


Salut TychoBrahe, et merci de me répondre...

J'ai été absent quelques jours mais me revoilà!
Je ne conaissait pas la propriété overflow, merci.
Je n'ai pas l'habitude de prendre en compte la W3C parceque je fait des pages algorithmiquement fonctionel au niveau php et je concentre l'ecriture de mon code sur les temps de calculs (du moins j'essaye).
Je n'ai pas encore eu jusqu'ici à coder des pages qui se veulent "visuellement bien faites" mais surtout fonctionelles.

D'où mon manque sur le plan du css et du W3C.

J'ai essayé d'utiliser l'overflow, mais si je comprend bien, il faut utiliser une feuille de style qui définis une taille...

La taille de ma cellule est quand à elle définie par le php...
(en % suivant le nombre d'éléments trouvé dans une BDD)

si j'essaye d'utiliser un <div> qui a pour propriété l'overflow hidden par exemple, mon tableau final n'apparait pas comme je le souhaiterais sans que j'y ajoute les parametres de tailles définis dans la meme feuille de style.

un exemple un peu plus parlant:

1/ pas de débordement, l'overflow est bien utilisé:

Code HTML :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css" media="screen">

div
	{ 
	width : 250px;
  	overflow : hidden; 
	}

</style></head>

<body><table border=1>
<tr>
	
	<td>
	<div>voici_une_chaine_de_caractere_qui_depasse_les_250_pixels_de_large</div>
	</td>
	
	<td>
	<div>voici une chaine de caractere qui ne depasse pas les 250 pixels de large</div>
	</td>
	
</tr>
</table></body>




2/ si la taille n'est pas définie par le css, la propriété overflow n'est pas utilisé:


Code HTML :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css" media="screen">

div
	{ 
  	overflow : hidden; 
	}

</style></head>

<body><table border=1>
<tr>
	
	<td  width='250'>
	<div>voici_une_chaine_de_caractere_qui_depasse_les_250_pixels_de_large</div>
	</td>
	
	<td width='250'>
	<div>voici une chaine de caractere qui ne depasse pas les 250 pixels de large</div>
	</td>
	
</tr>
</table></body></html>



Puisque je dois rendre le nombre de colonnes du tableau dynamique (en fonction de la DB), et donc leur taille (en fonction du nombre de colonnes à afficher), je ne peux pas définir cette taille dans la feuille de style.

J'utilise directement les attributs (width) de mes balises html avec des variables calculées en php.

Voyez-vous mon problème?

J'ai essayer de définie une taille dans le CSS de width 100% pour qu'il utilise toute la largeur de ma colonne définie dans le <td> parent, mais ça ne semble pas etre la solution non plus!
Dans ce cas là, la 1ere colonne prend toute la taille néssécaire pour y inscrire ma longue chaine de caractere et l'affichage se coupe bien à l'endroit souhaité, mais pas la cellule qui continue avec un espace blanc inutile à coté...

ex :

Code HTML :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css" media="screen">

div
	{ 
  	overflow : hidden; 
	width : 100%; 
	}

</style></head>

<body><table border=1>
<tr>
	
	<td width='250'>
	<div>voici_une_chaine_de_caractere_qui_depasse_les_250_pixels_de_large</div>
	</td>
	
	<td width='250'>
	<div>voici une chaine de caractere qui ne depasse pas les 250 pixels de large</div>
	</td>
	
</tr>
</table></body></html>




Vous faut-il plus d'explications? Et sur quel point?
Voyez-vous une solution à ma problématique?

En vous remerciant.


You can do it...
dimanche 15 novembre 2009 à 21:18:33 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

jeffe33


Teddy
j'ai un pb analogue au tien et je n'ai pas encore trouvé la solution
overflow, il a l'air de s'en balancer comme de sa première chemise !!!
désolé de ne pas t'apporter d'aide
si tu as du nouveau je suis aussi preneur...

qui va piano va sano
lundi 16 novembre 2009 à 16:07:15 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

Tonio_35


Tu coupe les mots trop grands avec le caractère & # 8 2 0 3 ; à l'affichage...

_________________________________
Min iPomme
lundi 16 novembre 2009 à 16:22:30 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

Tonio_35

Réponse acceptée !
PS : Voici une fonction que j'ai fait il y à quelques années, je crois que ca tournais bien mais elle mérite peut être un ménage...
Code PHP :
<?php
/**
 * cut_long_word
 * Entrée
 * $txt :	Texte à découper ;
 * $where :	Longueur maxi d'un mot ;
 * Retour
 * Texte passer dans $txt avec un séparateur invisible ajouté toute les $where lettres non séparées par des éspaces
 */
function cut_long_word($txt, $where=20) {
	// Si pas de texte, on retourne false
	if (empty($txt)) return false;
	
	$inhtml = false;
	$inspecialchar = false;
	// On parcours les caractères
	for ($c = 0, $a = 0, $g = 0; $c<strlen($txt); $c++)
	{
	    // Si le caractère est un < on entre dans du html, il ne faut pas ajouter d'éspaces dans les balises
		// Du coup on compte plus et on insère plus d'éspace tant qu'on ne trouve pas un >
		if ($txt[$c]=="<")
			$inhtml=true;
		// Si on est pas dans une balise
		if(!$inhtml)
		{
			// De même, si on est dans un caractère spécial html, il ne faut pas ajouter d'espace
			if ($txt[$c]=="&")
			{
				$tmptxt = $txt[$c].$txt[$c+1].$txt[$c+2].$txt[$c+3].$txt[$c+4].$txt[$c+5];
				$isinchaine = strpos("&amp;", $tmptxt);
				if(!($isinchaine === false))
				{
					$inspecialchar = true;
				}
				$isinchaine = strpos("&quot;", $tmptxt);
				if(!($isinchaine === false))
				{
					$inspecialchar = true;
				}
				$isinchaine = strpos("&#039;", $tmptxt);
				if(!($isinchaine === false))
				{
					$inspecialchar = true;
				}
				$isinchaine = strpos("&lt;", $tmptxt);
				if(!($isinchaine === false))
				{
					$inspecialchar = true;
				}
				$isinchaine = strpos("&gt;", $tmptxt);
				if(!($isinchaine === false))
				{
					$inspecialchar = true;
				}
			}
			// Si nous ne somme ni dans une balise html ni dans un caractère spécial html
			if(!$inspecialchar)
			{
				$d[$c+$g]=$txt[$c];
				// Si le caractère courant est un espace, on remet le compteur à 0
				// Sinon on incrèment le compteur
				if ($txt[$c]!=" ") $a++;
				else if ($txt[$c]==" ") $a = 0;
				
				// Si le compteur est plus grand que la limite on ajoute le séparateur
				if ($a>$where)
				{
					$g++;
					$separator = "&#8203;";
					$a = 0;
					// Résolution de pb IE<7 :
					// Si IE < 7il ne connait pas &#8203; on lui envois l'équivalant html <wbr />
					// Pourquoi pas <wbr /> avec tout les nav dans ce cas :
					// 1 - Opéra ne connait pas <wbr />
					// 2 - <wbr /> n'est pas un standard W3C
					
					//Création d'une instance de la classe browser
					// Ici je fais que récuperer le navigateur du client, vous trouverez plein de codes source pour faire ca...
					$browser = new DDSBrowser;  
					$name = $browser->Name;
					if(strtoupper($browser->Name)=="MSIE" && $browser->Version<7)
					{
						$separator = "<wbr />";
					}
					$d[$c+$g]=$separator;
				}
			}
			else
			{
				// On ajoute le contenu du special char
				$d[$c+$g]=$txt[$c];
			}
		}
		else
		{
			// On ajoute le contenu de la balise html
			$d[$c+$g]=$txt[$c];
		}
		// Si on es dans un caractère spécial et qu'on rencontre un ; c'est qu'on en sort
		if ($txt[$c]==";" and $inspecialchar == true)
		{
			$a=0;
			$inspecialchar = false;
		}
		// Si on es dans une balise html et qu'on rencontre un > c'est qu'on en sort...
		if ($txt[$c]==">")
		{
			$a=0;
			$inhtml=false;
		}
	}
	// On retourne la chaine...
	return implode("", $d);
}?>


_________________________________
Min iPomme
lundi 16 novembre 2009 à 17:40:49 | Re : taille "VRAIEMENT" fixe d'une colonne dans un tableau

jeffe33


Tonio j'ai lu ton message
personnellement ce n'est pas tout à fait ce que je cherche
comme je ne vois pas comment bloquer la largeur de la colonne ni avec overflow ni autrement, j'ai pensé plutot à tronquer le texte affiché dans cette colonne lorsque la chaine dépasse x pixels
Pour ça il faut pouvoir déterminer la longueur en pixels de la chaine affichée en fonction de la police.
j'ai trouvé un code qui traite un peu de ce problème
http://files.codes-sources.com/fichier.aspx?id=16193&f=LongueurTexte.html
je trouve très interessant meme si je n'ai pas encore tout bien compris !
mais, le php étant interprété sur le serveur avant le javascript, ce sera délicat de récupérer le nombre de pixels pour tronquer la chaine en php...
affaire à suivre !

je crois que dans mon cas je ne vais pas me casser la tete ...comme je me limite à une police je vais regarder empiriquement le nombre de pixels utilisés et je vais voir à combien de caractères cela correspond pour tronquer au bon endroit

qui va piano va sano

1 2

Cette discussion est classée dans : taille, mot, tableau, colonne, width


Répondre à ce message

Sujets en rapport avec ce message

Fixer la taille des colonnes d'un tableau. [ par Sandy084 ] Bonjour !Est ce que quelqu'un a une idée pour que les colonnes de mon tableau HTML ne dépassent pas la valeur que je leur donne?Je m'explique plus pré Tableau dynamique ?!? Problèmeu :( [ par Tiriel ] Voilà mon problème je souhaiterais afficher mon tableau sous forme de 2 colonne la 1ère colonne avec le nom des champs et la deuxième avec un résultat tri tableau par un lien sur entête de colonne [ par mezees ] bonjour,je cherche un script qui me permettrait :- d'afficher dans une page, un tableau qui vient d'une base sql (ça je sais faire...)- d'avoir sur ce Trier des valeurs dans un tableau [ par punkybreizh ] Bonjour,Voilà, je voudrais savoir si c'était possible de trier un tableau sur 4 colonnes. En effet, je veux afficher des noms dans une colonne avec le recuperer des valeurs dans un tableau [ par 3xodius55 ] bonjour, voila mon pb (de newbie?!) : j'ai un tableau avec trois colonnes (numero personne, numero clef, date emprunt), qui identifient à eux 3, un Créer un tableu de taille fixe [ par nikos283 ] Salut a tous,J'ai un tableau dans lequel j'inclu des pages php a l'aide de la fonction include. Mon probleme étant que la taille du tableau s'ajuste e Taille max d'un tableau [ par ceeno ] Voila je cherche a definir la largeur max d'un tableau parceke lorske l'on fait comme cecica n'indike ke la taille min et si le tableau contient une l Problème insertion photos dans tableau [ par romagnoli64 ] Bonjour à tous, voilà je vais faire simple pour mon problème.J'ai une base de données qui contient les noms de photos qui sont disposées dans un dossi problème texte tableau > base de données [ par inconnue ] Bonjour, j'ai créé un tableau dynamiquement avec php dont une colonne affiche un texte issu d'une base de données et lorsqu'un long texte est entré da Redimensionner une image en fonction de sa taille [ par Dexterage ] Bonjour, J'ai un petit probleme, d'ou ma venu ici :) Je crée une gallerie d'image en php, donc la taille des images sont fixes, et losque je les aff


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,886 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales