[mysql] SELECT à partir d'un array() sans faire de boucle ?

SELECT à partir d'un array() sans faire de boucle ? [mysql] - PHP - Programmation

Marsh Posté le 11-02-2004 à 19:13:27    

hello,
 
Je sais le titre n'est pas tres clair, voici mon probleme :
 
j'ai un tableau PHP :

Code :
  1. $total_news =  mysql_num_rows($sql);


 
et je voudrais sortir des infos d'une table mysql en utilisant les infos de $total_news["title"]

Code :
  1. mysql_query("SELECT ...` FROM ... WHERE `title` = '$news["title"]'" );


 
Je vous demande donc de m'expliquer comment faire cela sans faire de boucle et donc sans augmenter le nombre de requettes mysql.
 
merci


Message édité par Big-Foot le 11-02-2004 à 19:49:37
Reply

Marsh Posté le 11-02-2004 à 19:13:27   

Reply

Marsh Posté le 11-02-2004 à 19:50:49    

Big-Foot a écrit :

hello,
 
Je sais le titre n'est pas tres clair, voici mon probleme :
 
j'ai un tableau PHP :

Code :
  1. $total_news =  mysql_num_rows($sql);



 
Tout ce que tu vas avoir dans $total_news c'est le nombre de lignes retournées par ta requête $sql, pas un tableau  :heink:
 
$news["title"] n'existera pas ...  

Reply

Marsh Posté le 11-02-2004 à 20:27:07    

ouai, je sais c'est pour ca que je demande comment faire
 
avec un implode() peut etre ? mais mon $news est multidimensionnel

Reply

Marsh Posté le 11-02-2004 à 20:41:26    

Tu peux construire une requête de cette forme :
SELECT ... FROM ... WHERE title IN ('titre1', 'titre2', 'titre3')
 
Sinon, il faut regarder comment tu construits la liste de ces titres. Peut être que tu peux faire une jointure à ce moment pour tout récupérer d'un coup [:figti]

Reply

Marsh Posté le 11-02-2004 à 20:51:47    

une jointure ? c'est quoi ? 2 query en 1 ?

Reply

Marsh Posté le 11-02-2004 à 20:53:54    

c'est une requête qui porte sur 2 (ou plus) tables simultanément, pour faire correspondre les données qui vont bien ensemble :)

Reply

Marsh Posté le 11-02-2004 à 21:01:20    

ah ok, c'est ce que j'ai pensé faire au début mais j'ai laisser tomber car je ne savait pas comment faire.
Mais vu que le reste ne fonctionne pas super bien je vais essayer comme ca :)
Est ce que tu peut me donner juste un exemple d'une telle requete ?

Reply

Marsh Posté le 11-02-2004 à 21:56:50    

Par exemples, si tu as 2 tables :
 
clients :
- id
- nom
- adresse
 
commandes :
- montant
- date
- idclient (le numéro du client dans la table 'clients')
 
Si tu veux récupérer la liste des montants des commandes avec le nom du client correspondant :
SELECT commandes.montant, clients.nom  
FROM clients, commandes
WHERE commandes.idclient=clients.id
 
La clause du WHERE est importante, c'est elle qui permet de se limiter uniquement aux lignes "qui vont bien" :)

Reply

Marsh Posté le 11-02-2004 à 22:24:13    

merci
entre temps j'avais jeté un coup d'oeil a la doc et j'ai fait ca :
 
SELECT `title`,  `text`, `poster`, `time`  
FROM `news`, `text`  
WHERE `news_id` = '4',`news.title`=`text.nom`
 
ca a pas l'aire de marcher a cause de la 2eme partie de mon WHERE : `news.title`=`text.nom`
je sais pas comment exprimer ca correctement dans ma requette, je voudrais que cette partie de la contidition ne s'applique qu'a "text"

Reply

Marsh Posté le 11-02-2004 à 22:27:03    

... WHERE (...) AND (...)
 
Si ton champ news_id est un entier, inutile de le mettre entre '4' :)


Message édité par mrbebert le 11-02-2004 à 22:27:14
Reply

Marsh Posté le 11-02-2004 à 22:27:03   

Reply

Marsh Posté le 11-02-2004 à 22:34:13    

merci de ton aide :)
 
j'avais aussi essayer avec AND, on fait si ca merchat pas c'est a cause de la sysntaxe, il fallait mettre :
WHERE `news_id` = 4, news.title=text.nom
au lieu de :
WHERE `news_id` = '4',`news.title`=`text.nom`
 
et merci pour l'histoire des '' ca m'en epargnera pas mal :D

Reply

Sujets relatifs:

Leave a Replay

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