Accueil > Forum > > > > requete SQL avec array
requete SQL avec array
mercredi 8 mars 2006 à 00:08:57 |
requete SQL avec array

joebuz
|
Bonjour a tous, Voila j'ai plusieurs requete SQL a suivre qui sont identiques a part la valeur du champ qui changent, je me demandais s'il n'etais pas possible de les regrouper en une seule avec un array ? exemple : $sql1 = mysql_query("SELECT * FROM table WHERE page='index'"); $sql2 = mysql_query("SELECT * FROM table WHERE page='forum'"); $sql3 = mysql_query("SELECT * FROM table WHERE page='photos'"); $sql4 = mysql_query("SELECT * FROM table WHERE page='contact'"); $sql5 = mysql_query("SELECT * FROM table WHERE page='membres'"); remplacer par : (si possible) $champ = array(index,forum,photos,contact,membres); $sql = mysql_query("SELECT * FROM table WHERE page='$champs'"); j'ai essayé mais ca ne fonctionne pas puisque la valeur de $champ est array ! joebuz
|
|
mercredi 8 mars 2006 à 00:15:49 |
Re : requete SQL avec array

joebuz
|
j'ai oublié : sachant qu'apres ma requete j'utilise un while car il ya plusieurs lignes differentes a chaque requete et que je veux toute les utiliser. je m'explique c'est pour des stats, j'ai ma table STATS composée comme ceci : num page nb jour mois annee ou nb est le nombre de fois ou la page a été visitée pour jour mois annee et je souhaite affichée le nb par page et jour par jour ou mois par mois exemple : Lundi index 5 visites contact 3 visites Mardi index 2 visites contact 10 visites ... joebuz
|
|
mercredi 8 mars 2006 à 00:17:42 |
Re : requete SQL avec array

FhX
|
SELECT * FROM table WHERE page='index' OR page='forum' OR ...
etc...
|
|
mercredi 8 mars 2006 à 08:00:24 |
Re : requete SQL avec array

malalam
|
Hello,
SELECT pas_etoile_mais_le_nom_des_champs_voulus FROM table WHERE page IN ('index', 'forum', ...)
|
|
mercredi 8 mars 2006 à 10:24:21 |
Re : requete SQL avec array

joebuz
|
et si la valeur du IN est variable ? et je ne peux pas mettre le nom des champs car celui ci aussi est variable soit je cherche 'jour, nb' soit 'mois,nb' soit 'annee,nb' je peux pas mettre SELECT $unit,nb FROM où $unit serait egal à jour ou mois ou annee Pour ce que je veux faire je pense que c'est un peu plus compliqué que ça. en fait dans mon admin je peux choisir d'afficher les stats pour la semine, le mois, l'annee ou pour une periode pour afficher le total par page pour la periode choisie ya pas de probleme je fais comme ça : $sql = mysql_query("SELECT page,nb FROM stats WHERE jour<='$jourfin' AND jour>='$jourdebut' AND mois<='$moisfin' AND mois>='$moisdebut' AND annee<='$anneefin' AND annee>='$anneedebut'") or die ('EREEUR SQL ! '.$sql. mysql_error()); while($data = mysql_fetch_array($sql)){ $page = $data['page']; $nb = $data['nb']; $okpage = 0; $sql2 = mysql_query("SELECT * FROM statgenpage WHERE page='$page'"); if($data2 = mysql_fetch_array($sql2)){ $okpage=1; } if($okpage == 0){ $sql3 = mysql_query("INSERT INTO statgenpage VALUES('','$page','$nb')"); } else{ $sql3 = mysql_query("UPDATE statgenpage SET nb=nb+'$nb' WHERE page='$page'"); } } echo "<table border='0' width='60%'>"; $sql2 = mysql_query("SELECT page,nb FROM statgenpage ORDER BY num"); while($data2 = mysql_fetch_array($sql2)){ $page = $data2['page']; $nb = $data2['nb']; echo "<tr><td width='60%'>".$page." : </td><td>".$nb." visites</td></tr>"; } echo "</table>"; $sql3 = mysql_query("DELETE FROM statgenpage"); Mais si je veux pour la periode choisie afficher le meme resultat jour par jour ou mois par mois ou anne par annee (pas avoir le total comme au-dessus) il faut que je fasse la meme chose mais par exemple pour un affichage mois par mois : pour janvier $sql = mysql_query("SELECT page,nb FROM stats WHERE jour<='$jourfin' AND jour>='$jourdebut' AND mois=01 AND annee<='$anneefin' AND annee>='$anneedebut'") or die ('EREEUR SQL ! '.$sql. mysql_error()); pour fevrier $sql = mysql_query("SELECT page,nb FROM stats WHERE jour<='$jourfin' AND jour>='$jourdebut' AND mois=02 AND annee<='$anneefin' AND annee>='$anneedebut'") or die ('EREEUR SQL ! '.$sql. mysql_error()); pour mars $sql = mysql_query("SELECT page,nb FROM stats WHERE jour<='$jourfin' AND jour>='$jourdebut' AND mois=03 AND annee<='$anneefin' AND annee>='$anneedebut'") or die ('EREEUR SQL ! '.$sql. mysql_error()); ... j'ai pas envie de faire 12 requete pour un affichage mois par mois et 31 pour un affichage jour par jour !!! je voudrais faire qu'une seule requete generale ! joebuz
|
|
jeudi 9 mars 2006 à 10:51:45 |
Re : requete SQL avec array

stiml
|
salut, Voici le code que tu a donné :exemple : $sql1 = mysql_query("SELECT * FROM table WHERE page='index'"); $sql2 = mysql_query("SELECT * FROM table WHERE page='forum'"); $sql3 = mysql_query("SELECT * FROM table WHERE page='photos'"); $sql4 = mysql_query("SELECT * FROM table WHERE page='contact'"); $sql5 = mysql_query("SELECT * FROM table WHERE page='membres'");
remplacer par : (si possible)
$champ = array(index,forum,photos,contact,membres); $sql = mysql_query("SELECT * FROM table WHERE page='$champs'"); je pense qu'il faut que tu mette une boucle exemple : $champ = array(index,forum,photos,contact,membres);for ($i=1;$i=count($champ);$i++) { $sql = mysql_query("SELECT * FROM table WHERE page='$champs'"); } -------------------- StimL.
|
|
jeudi 9 mars 2006 à 14:03:15 |
Re : requete SQL avec array

AshenShugar
|
Il y a plus simple encore :
$champ = array(index,forum,photos,contact,membres); $sql1 = mysql_query("SELECT * FROM table WHERE page IN ('" . explode("','", $champ) . "')");
Ainsi, pas besoin de boucle.
Le hardware, c'est sur quoi l'on tape lorsque le software merde...
|
|
jeudi 9 mars 2006 à 23:27:39 |
Re : requete SQL avec array

joebuz
|
non ca ne fonctionne pas. stiml --> la boucle for ne fonctionne pas, c'a prend beaucoup trop de temps j'ai essayé tout simplement $champ = array(index,forum,photos,contact,membres); for ($i=1;$i=count($champ);$i++) { echo "champ : ".$champ."<br />"; }et cela m'affiche champ : array sur une centaine de ligne ( a peu pres j'ai pas compté !) AshenShugar --> ca ne fonctionne pas j'ai rien qui s'affiche ni d'erreur sql ni de resultats voici le script : $champ = array(01,02,03,04,05,06,07,08,09,10,11,12); $sql1 = mysql_query("SELECT mois,nb FROM stats WHERE mois IN ('" . explode("','", $champ) . "') AND annee='2006' ") or die ('ERREUR SQL ! '.$sql1. mysql_error()); while($data = mysql_fetch_array($sql1)){ $mois = $data['mois']; $nb = $data['nb']; echo "mois ".$mois." : ".$nb." visites<br />"; } joebuz
|
|
jeudi 9 mars 2006 à 23:30:59 |
Re : requete SQL avec array

joebuz
|
j'ai oublie AshenShugar --> ca ne peux pas fonctionner car la valeur de $champ dans IN est array, j'ai fait un essai comme ça :$champ = array(01,02,03,04,05,06,07,08,09,10,11,12); $moissearch = "('" . explode("','", $champ) . "')"; echo $moissearch."<br />"; et ca m'affiche ('array') joebuz
|
|
vendredi 10 mars 2006 à 07:26:28 |
Re : requete SQL avec array

AshenShugar
|
Réponse acceptée !
mdr, autant pour moi. Ce n'est pas explode mais implode qui faut utiliser. De plus, si tu es sûr que les valeurs de ton tableau et que le champs de ta table soit un entier, tu peux te passer des quotes. Ca doit donner tu truc comme ca : $champ = array(01,02,03,04,05,06,07,08,09,10,11,12); $sql1 = mysql_query("SELECT mois,nb FROM stats WHERE mois IN (" . implode(",", $champ) . ") AND annee='2006' ") or die ('ERREUR SQL ! '.$sql1. mysql_error()); while($data = mysql_fetch_array($sql1)){ $mois = $data['mois']; $nb = $data['nb']; echo "mois ".$mois." : ".$nb." visites<br />"; }
Ce coup-ci, ça doit marcher ! Le hardware, c'est sur quoi l'on tape lorsque le software merde...
|
|
Cette discussion est classée dans : table, mysql, select, query, from
Répondre à ce message
Sujets en rapport avec ce message
pb sur mysql avec requete select * from TABLE IN (select ...) [ par malibu23 ]
Salut j ai un pb sur mysql lorsque je fais un requetedu type select CHAMP from TABLE where CHAMP IN ( select CHAMP from TABLE where CHAMP = VARIABLE);
Mysql_field_table avec union ?! [ par g0ldstein85 ]
Salut,Je fais une liste avec des informations provenant de 3 tables.$q1 = "SELECT * FROM TUTO WHERE APPROVED = 'n' UNION SELECT * FROM ANN WHERE APPRO
recuperer donnees de deux table dans une boucle [ par bubbledesavon ]
bonjour,voici mon souci ,ja i cree un petit moteur de recherche par date,qui fonctione tres bien ,mais ou ,dans le resultat , j aimerais y ajouter une
problème de variable dans une requete mysql [ par Moritus ]
bonjour, j'ai quelques petits problèmes avec un bout de code. habituellement j'utilise $data['texte'] pour récupéré le contenu d'un champ de ma t
Comparer des valeurs d'une table avec une autre table selon la ligne [ par lildan ]
Bonjour tout le monde,voici le code que j'utilise pour vérifier si une valeur d'une table égale la valeur d'une autre table: $query = "SELECT * FROM v
recherche d une id sur 3 tables [ par Teclis01 ]
voici l'erreurParse error: parse error, unexpected T_ELSE voici le code!$table="etcitem"; $query = "SELECT * FROM $table WHERE item_id= $item"; $res
probleme recuperation données [ par johnmichel ]
Bonjour, je souhaiterais mettre dans ma base de donnée, les données séléctionné dans une liste déroulante. Voici un extrait du fichier ajoutdoc.php ou
lier liste deroulante [ par johnmichel ]
bonjour, je souhaiterais lier deux liste déroulante que je charge a partir d'une base de donnée $db = mysql_connect('localhost', 'root', '');
mysql_num_rows ou select count [ par elidris ]
bonjour, voilà je m'apercois que des 2 commandes PHP fournissent le meme resultat, j'aimerais savoir laquelle est la plus efficace (rapidité et nb de
## Où est l'erreur ???? bon diou !! [ par kodiask ]
voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|