Formatter dans un select

Signaler
Messages postés
75
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
3 juin 2012
-
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
-
Bonjour,

Je veux formatter l'affichage d'un select a savoir :

faire afficher des données les une sous les autres (voir exemple):

nom | age | ville |
Claude | 36 | Paris |
Joe | 22 | Marseille |

Il faudrait donc completer les noms et ville par des espaces à la fin pour obtenir (par ex) 20 caracteres, au contraire, les coupé si ils en font +.

Malheureusement, dans un select, les espaces a repétitions sont ignorés...

Quelqu'un peut-il m'aider ?

15 réponses

Messages postés
75
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
3 juin 2012

On le voit pas tres bien, mais le but est de les aligner correctement les uns sous les autres (les '|' correctement sous les '|' de la ligne du dessus)
Messages postés
62
Date d'inscription
jeudi 7 novembre 2002
Statut
Membre
Dernière intervention
5 mai 2004

c'est simple
tu prepares ton tableau avec
ton en haut
ton renvoi d'information et ta recupération de variables
$incme = 0;
while($incme < nombreinfossortiesdelabase) {
echo 'Forme1:, ';
echo '<center>$variableforme1</center>, ';
$incme++;
}
echo '';
echo '
';

ceci est un exemple de code qui pourrait te mettre sur la voix :)
Messages postés
75
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
3 juin 2012

As-tu lu que je veux faire ca dans un SELECT (une liste de choix; je dis ca au cas ou...).

Donc ton code ne marchera pas... Mais merci pour ta réponse !
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
si j'ai bien compris c'est simple
en reprenant la même idée que celle de i0lo mais tu utilise la balise <select> au lieu de <table>

struture d'une <select>:

<select>
<option>blabla1</option>
<option>blabla2</option>
<option>blabla3</option>
</select>

après pour le contenu des options ben tu assemble ta chaine et tu la limite au nombre de caractère que tu souhaite
si tes données sont dans un tableau
ça donne ça (si ta que 3 colonne à assemblé sinon fé une boucle)
$chaine = $data[0].$data[1].$data[2]
pis pour limité la longueur:
$chaine= substr($chaine,0,20)

et donc tu mets ça dans une boucle while par exemple et vala tu as ton select
Messages postés
62
Date d'inscription
jeudi 7 novembre 2002
Statut
Membre
Dernière intervention
5 mai 2004

lol merci DoudouBidou

Moi comme j'ai marqué, j'avais juste mis ce code à titre d'exemple, suffit juste de changer deux trois trucs et ce code peut être utilisé pour n'importe quoi... c'est un truc de base à savoir

Bon code ;)
Messages postés
75
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
3 juin 2012

Oui , mais si j'utilise ca :
$chaine = $data[0].$data[1].$data[2]

les données ne seront pas les unes sous les autres alignée en colonne...

De plus, si je fais:
$chaine= substr($chaine,0,20)

Ca va me couper la chaine entiere au risque de ne plus voir $data[2]...
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
hum oui mais tu pourra pas (sauf si je me trompe) mettre des données en colonne dans un select

ce que tu voudrais toi c'est qqc comme ça
<select>
<option>nom
age
ville</option>
<option>nom
age
ville</option>
</select>

biensur le code ci-dessus ne marche pas ;)
et je ne vois pas comment tu pourrais faire une mise en forme de ce style sachant que dans un select chaque ligne correspond à un choix

pour le 2nd pb de couper ta chaine, c'est pas ce que tu voulais?si non faut pas limiter à 20caractères....
Messages postés
75
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
3 juin 2012

Je veux faire un truc dans ce genre...
Messages postés
75
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
3 juin 2012

Ca s'affiche pas... http://aby.waouh.net/select.jpg
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
ah là d'accord je comprends mieux
mais à première vue... je ne sais pas faire en HTML

mais ça m'interesse je vais voir si je trouve qqc à faire

:)
Messages postés
358
Date d'inscription
vendredi 1 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2006

pour mettre tout des mots sur 20 caratéres

function miseenforme($ch)
{
 $resch="                    "; //20 espaces
 if(strlen($ch)<=strlen($resch))
 { 
  $resch=substr_replace($resch, $ch,0,strlen($ch)); 
 }
 else 
 {
  $resch=substr($ch, 0, 17)."...";  
 }
 return $resch;
}

et aprés
print "<select>
<option>".miseenforme($nom1)."|".miseenforme($age1)."|".miseenforme($ville1)."</option>
<option>".miseenforme($nom2)."|".miseenforme($age2)."|".miseenforme($ville2)."</option>
<option>".miseenforme($nom3)."|".miseenforme($age3)."|".miseenforme($ville3)."</option>
</select>
";


enfin j'ai pas testé !!!!
il faudra surement le débuguer
:sad)

---Perig---
Pour vous servir 8-)
Et parfois en galère :blush)
Souvent même :)
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
en cherchant un peu sur le net j'ai trouvé qqc de sympa qui permet de faire des select box personnaliser
je pense que ça peut t'aider pour ton problème :)

http://webfx.eae.net/dhtml/select/jsGenerated.html

mais ça fonctionne qu'avec IE par contre...

:)
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
vu que ça m'interesse j'ai cherché un peu ce qu'on pouvait faire alors je me suis dis qu'on pouvait contourner le problème en utilisant un tableau !
je vais pas te faire tout le boulot mais ça peut servir de base ;)

<html>
<head>
<SCRIPT type="text/javascript">
var couleur='#ffffff';
function trover(obj) {
couleur = obj.bgColor;
obj.bgColor='#bbffff';
obj.style.border='solid';
obj.style.cursor= 'hand';
}
function trout(obj) {
obj.bgColor=couleur;
}
function trclick(obj) {
for (i=0;i
</head>

<form name="form">


<SCRIPT type="text/javascript">
alltr = document.getElementById("select1").getElementsByTagName("tr");
for (i=0;i

</html>

</td></tr></table>

il reste à transformer tout ça en une fonction "portable" ;)
Messages postés
75
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
3 juin 2012

Merci, je vais plutot me tourner vers le lien que tu m'as filé...

+++
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
tiens j'ai fait une petite source simple si ça peut t'aider ;)

fr.com/code.aspx?ID=21582 http://www.javascriptfr.com/code.aspx?ID=21582

allé bonne continuation