avoir des virgules dans un resultat SQL

avoir des virgules dans un resultat SQL - PHP - Programmation

Marsh Posté le 02-05-2010 à 19:38:15    


bonjour surement tres simple a effectuer  
 
mais je ne trouve pas comment obtenir un résultat d'une requete SQL séparé par des virgules afin de pouvoir l'intégrer ds une variable et le réutiliser dans une autre requete .  
 
 
voici mon resultat  2338240125355689  suite a une requete SELECT * from matricule.  
 
et je voudrais obtenir cela  2338,2401,2535,5689
 
merciiiiiiiiiiiiiiiii  


---------------
Jeremy
Reply

Marsh Posté le 02-05-2010 à 19:38:15   

Reply

Marsh Posté le 03-05-2010 à 07:40:00    

pour obtenir ce résultat sans virgule, tu utilises une boucle non ?
Dans ce cas fais une concaténation dans cette boucle.
 
$result = mysql_query("SELECT * FROM matricule" );
$resultat="";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
   $result.=($result==""?",":"" ).$row['matricule'];
}
echo $result;

Message cité 1 fois
Message édité par antac le 03-05-2010 à 07:41:52
Reply

Marsh Posté le 03-05-2010 à 08:41:16    

tu ne peux pas faire ta requete en une fois , genre  
SELECT bidule FROM truc WHERE matricule IN ( SELECT matricule FROM table)  
 
ou plus propre, avec une jointure

Reply

Marsh Posté le 03-05-2010 à 09:50:17    

et si c'était juste un problème d'affichage, un retour à la ligne manquant... ;)


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 03-05-2010 à 09:56:01    

ou un truc du genre :

Code :
  1. $result = mysql_query("SELECT * FROM matricule" );
  2. $resultat = array();
  3. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  4.    $resultat[] = $row['matricule'];
  5. }
  6. echo implode(",",$resultat);



---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 03-05-2010 à 13:18:54    

il veut pas juste afficher un grand nombre "coupé" en lots de 4 chiffres [chien de mickey] que de rassembler plusieurs valeurs comme vous faites :??:

 

genre 10000000000 => 10.000.000.000

 


enfin ché pas c'est comme ça que je comprends sa question :)

 


Si c'est comme vous dites, je dirais "select concat(n1,',',n2,','...)"

Message cité 1 fois
Message édité par art_dupond le 03-05-2010 à 13:20:01

---------------
oui oui
Reply

Marsh Posté le 03-05-2010 à 13:54:59    

art_dupond a écrit :


Si c'est comme vous dites, je dirais "select concat(n1,',',n2,','...)"


 
Oui si c'est valeur sont dans la même occurrence, si c'est des valeurs sur plusieurs occurrences non
Ça serais bien qu'il se manifeste fireman243 pour nous dire ce qu'il veux ou peut-être a-t-ilo déjà trouvé


Message édité par stef_dobermann le 03-05-2010 à 13:56:30

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 05-05-2010 à 09:00:25    

salut à tous en stage en ce moment pas de connexion internet merci pour vos précieux coups de main je regarde et vous tiens informé , objectif j'ai rentré ces valeurs ds ma table 2338 2410 2535 .  
 
je veux les réutiliser ds un select pour afficher sur une ligne toutes les dispos de chaque agent du type :  
 
2338    le 24  dispo en jour  
2338    le 16   dispo en nuit  
2410    le 15 dispo en 24h  
2535    le  3 dispo en nuit  
 
ensuite réaliser un tableau de ce type avec un résultat par ligne avec un regroupement par matricule
         1     2     3     4      5  
2338   jour        nuit  
2410         jour         24 h  
2535              jour  
 
de ce fait j'ai fait un  
 
select matricule from tbl_user order by matricule ;
 
je fais un echo sur cette requete pour verifier mon résultat j'obtiens 233824102535
 
Seulement pour afficher les dispos en ligne de chaque agent je dois faire  
Select * from dispos where matricule in 2338,2410,2535 ;
 
comme cela ça fonctionne biensur  
 
Sauf que je veux intégrer une variable après le in pour intégrer la liste de s matricules comme cela je n'ai pas besoin de tous les saisir.  
 
ce qui donnerait select * from dispo where matricule in $listematricule ;  
 
 
merci    
 

Reply

Marsh Posté le 05-05-2010 à 09:41:49    

salut stefdoberman  
 
ton script fonctionne trés bien j'obtiens bien le résultat sous la forme que je veux mais comment alors intégrer sous forme d e variable ton  
 
echo implode ???  car le resultat qu'il me ressort est excatement ce que je veux sous forme d evariable
merci

Reply

Marsh Posté le 05-05-2010 à 12:33:51    

Code :
  1. $result = mysql_query("SELECT * FROM matricule" );
  2. $resultat = array();
  3. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  4.     $resultat[] = $row['matricule'];
  5. }
  6. $result = mysql_query("Select * from dispos where matricule in ". implode(",",$resultat));


et tu continu ton script comme tu l'entend ;)
ou sinon

Code :
  1. $liste_matricule = implode(",",$resultat);


pour l'utiliser plus loin.
ensuite tu peut aussi utiliser des fonctions..

Code :
  1. fonction liste_matricule () {
  2. $result = mysql_query("SELECT * FROM matricule" );
  3. $resultat = array();
  4. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  5.     $resultat[] = $row['matricule'];
  6. }
  7. return  implode(",",$resultat);
  8. }


 
que tu utilise comme suit par exemple :

Code :
  1. $result = mysql_query("Select * from dispos where matricule in ".liste_matricule () );


attention i faut prendre soin de vérifier qu'il y ai des matricules, sinon la deuxième requête génère une erreur.


Message édité par stef_dobermann le 05-05-2010 à 12:52:31

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 05-05-2010 à 12:33:51   

Reply

Marsh Posté le 05-05-2010 à 23:56:30    

Que dire c'est clair c'est net j'i tout compris y ' a plus qu'a tester mtn  
 
merci vraiment grand merci à toi et au forum !!

Reply

Marsh Posté le 06-05-2010 à 11:23:11    

de rien :jap:


---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed