SEPARER UNE CHAINE DE CARACTERE BDD PHP

Résolu
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008 - 22 août 2008 à 09:33
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008 - 22 août 2008 à 14:12
Salut ,
J'ai une chaîne dans un champ et plusieur enregistrement, dans la table bdd qui est par exemple : " se2131 sm, se2353 l xl " bien entendu il peux avoir meme caracter par enregistrement.
Comment faire pour séparer tous les caracter contenue entre les virgules et les mettre ensuite dans un listbox.

MERCI D'AVANCE

16 réponses

jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 11:24
J'ai remplace comme tu ma dit, rien a change ca marche comme avant !

$requete=mysql_query ('SELECT DISTINCT * FROM `charme` WHERE `options` ORDER BY id');    


 while($r=mysql_fetch_array($requete,MYSQL_ASSOC))                  


$text = $r[options];
$tab = explode(",", $text);
echo "<select name='liste'>";
$i=0;
while($tab[$i]!=''){
       echo "<option value='".$tab[$i]."'>";
       $i++;
}
   echo $tab[0];
   echo $tab[1];
   echo $tab[2];
   echo $tab[3];
3
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 11:28
La balise <select> n'est jamais fermée. Le problème vient peut-etre de là.
3
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 11:49
J'ai fermée </select> est rien na change mais pourqui comme je fait comme ca ;

$Texte=" se2131 sm, se2353 l xl ";
$Tab=explode(",",$Texte);
echo $Tab[0];
echo $Tab[1];
le texte s'affiche cote a cote "se2131 sm se2353 l xl"  

n'est pas un dessou l'autre
se2131 sm
se2353 l xl
3
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 11:53
Pour que le texte s'affiche l'un en dessous de l'autre, il faut rajouter la balise après chaque echo :
echo $Tab[0].'';
Normalement ton texte devrait s'afficher comme tu le souhaite.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 12:07
si j'ai comme ca  avec la </ br>

$Texte=" se2131 sm, se2353 l xl ";
$Tab=explode(",",$Texte);
echo $Tab[0].'</ br>';
echo $Tab[1];

ca marche, mais dans la liste deroulent ca marche pas

$text = $r[options];
$tab = explode(",", $text);
echo "<select name='liste'>";
$i=0;
while($tab[$i]!=''){
       echo "<option value='".$tab[$i]."'>";
       $i++;
}
   echo $tab[0].'</ br>';
   echo $tab[1].'</ br>';
   echo $tab[2].'</ br>';
   echo $tab[3];
echo "</select>";
3
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 13:53
A la place de :
echo "<option value='".$tab[$i]."'>";
Tu mets :
echo "<option value='".$tab[$i]."'>".$tab[$i]."</option>";
normalement c'est bon
3
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 14:12
merci pour tous, ca marche nickiel je save que je pouver compte sur toi
a+++
3
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 09:36
Salut,
pour séparer une chaine de caractères suivant un caractère, tu peut utiliser la fonction "explode()" de php.
a++
0
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 09:42
Salut  et merci pour ta repence!
mais comment si prendre tu peux me donne une ex. sltp.
0
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 09:48
En reprenant ton exemple :
$Texte=" se2131 sm, se2353 l xl ";
$Tab=explode(",",$Texte);
Une fois que c'est fait, il ne te reste plus qu'à lire chaque donnée du tableau que tu viens de récupérer.
echo $Tab[0];   //affichera :  se2131 sm
0
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 10:21
Merci
ca marche, mais comment faire pour mettre dans une liste deroulent.
0
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 10:30
tu fais une boucle qui s'incrémente pour chaque enregistrement et à l'intérieur tu affiche les différents donnée du tableau que tu viens de récupérer à l'intérieur des balises <option>.
0
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 10:49
merci
j'ai fait ca marche mais les texte son cote a cote je vai le mettre un en dessou l'autre dans ma liste
comme ca ;
se2131 sm
se2353 l xl

$requete=mysql_query ('SELECT DISTINCT * FROM `charme` WHERE `options` ORDER BY id');    


 while($r=mysql_fetch_array($requete,MYSQL_ASSOC))                  


$text = $r[options];
$tab = explode(",", $text);
echo "<select name='liste'>";
foreach($tab as $element) {
   echo "<option value='".$element."'>";
 }
   echo $tab[0];
   echo $tab[1];
0
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 10:59
avec ce code là, tu vas créer une liste pour chaque enregistrement car "echo "<select name='liste'>";" se trouve dans la boucle 'while'. C'est ce que tu souhaite faire?
dans chaque enregistrement, il y a toujours 2 données séparées par une virgule ou il peut y en avoir davantage?
0
jodlo Messages postés 16 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 11:03
oui, il peut y en avoir plus ou rien
0
zabroska Messages postés 37 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 28 août 2008
22 août 2008 à 11:13
pour ma part, j'essaierai de remplacer foreach par une boucle while:

$i=0;
while($tab[$i]!=''){
       echo "<option value='".$tab[$i]."'>";
       $i++;
}

teste ce bout de code et redis si cela fonctionne.
0
Rejoignez-nous