begin process at 2012 05 31 14:53:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

requete SQL avec array


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

requete SQL avec array

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

joebuz

Membre Club
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

Membre Club

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

Administrateur CodeS-SourceS


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

Membre Club
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

Membre Club
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

Membre Club

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...

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales