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

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

Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008

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];
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

La balise <select> n'est jamais fermée. Le problème vient peut-etre de là.
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008

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
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

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

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>";
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

A la place de :
echo "<option value='".$tab[$i]."'>";
Tu mets :
echo "<option value='".$tab[$i]."'>".$tab[$i]."</option>";
normalement c'est bon
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008

merci pour tous, ca marche nickiel je save que je pouver compte sur toi
a+++
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

Salut,
pour séparer une chaine de caractères suivant un caractère, tu peut utiliser la fonction "explode()" de php.
a++
Messages postés
16
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
22 août 2008

Salut  et merci pour ta repence!
mais comment si prendre tu peux me donne une ex. sltp.
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

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

Merci
ca marche, mais comment faire pour mettre dans une liste deroulent.
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

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

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];
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

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

oui, il peut y en avoir plus ou rien
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

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.