SEPARER UNE CHAINE DE CARACTERE BDD PHP [Résolu]

Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
- - Dernière réponse : 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
Afficher la suite 

16 réponses

Meilleure réponse
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
3
Merci
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];

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
3
Merci
La balise <select> n'est jamais fermée. Le problème vient peut-etre de là.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zabroska
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zabroska
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
3
Merci
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>";

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
3
Merci
A la place de :
echo "<option value='".$tab[$i]."'>";
Tu mets :
echo "<option value='".$tab[$i]."'>".$tab[$i]."</option>";
normalement c'est bon

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zabroska
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
3
Merci
merci pour tous, ca marche nickiel je save que je pouver compte sur toi
a+++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
0
Merci
Salut,
pour séparer une chaine de caractères suivant un caractère, tu peut utiliser la fonction "explode()" de php.
a++
Commenter la réponse de zabroska
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
0
Merci
Salut  et merci pour ta repence!
mais comment si prendre tu peux me donne une ex. sltp.
Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
0
Merci
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
Commenter la réponse de zabroska
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
0
Merci
Merci
ca marche, mais comment faire pour mettre dans une liste deroulent.
Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
0
Merci
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>.
Commenter la réponse de zabroska
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
0
Merci
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];
Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
0
Merci
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?
Commenter la réponse de zabroska
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008
0
Merci
oui, il peut y en avoir plus ou rien
Commenter la réponse de jodlo
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
0
Merci
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.
Commenter la réponse de zabroska