Trop de requètes

cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012 - 15 août 2007 à 15:49
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 17 août 2007 à 17:18
bonjour

je suis tout nouveau dans le monde de php et des bases de données et j'ai un souci.

j'ai fait une page php qui donne plein d'info sur une base de données, mais celle ci est long à chargé vue qu'il y a pas mal de requètes.
je me demadé si je ne pouvait pas faire une autre page non visible par l'utilisateur qui se chargerait de faire toutes ces requètes (que je mettrais à jour à chaque mise à jour de ma base) ainsi je  n'aurais plus qu'a pointer sur celle ci dans ma page d'info.

est ce possible et comment ?

d'avance merci.

19 réponses

cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
15 août 2007 à 16:03
Bonjour,

Ca dépend de la nature des requêtes.

Si tu veux lire toutes les données d'une table c'est pas utile de faire :

$req1 = SELECT Champ1 FROM Table1...
$req2 = SELECT Champ2 FROM Table1...
...
$req70 = SELECT Champ70 FROM Table1...
Tu peux directement faire $req SELECT Champ1, Champ2, etc FROM Table1... ou bien $req SELECT * FROM Table1...

Si tu as plusieurs tables et que tu veux faire une seule requête sur ces différentes table dans le cas d'une SELECT, je te suggère d'aller jeter un coup d'oeil à ce lien.

J'espère t'avoir un peu éclairé.
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
15 août 2007 à 16:23
Hello,

si tu débute, ça m'étonnerait que tu fasses déjà des requêtes qui rament... à moins qu'elles soient très mal faites et qu'elles portent sur des milliers de lignes !

si le chargement des pages prend du temps, à mon avis c'est pour autre chose.

Dis-nous en plus sur tes requêtes.
à+
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 août 2007 à 16:32
Salut

aaron, un select * c'est pas bien, ca sature le reseau... pour rien...

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
15 août 2007 à 16:44
Ah... Je l'ignorais. :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012
15 août 2007 à 17:20
en fait j'ai 4 tables (naissance, bapteme,  mariage, dece) avec dans chacune tous les actes de toutes les villes d'un département.
et pour chaque type (mariage, naissance, etc) et pour chaque ville je charche combien il y a d'actes.
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
15 août 2007 à 17:25
Pour ce qui est de dénombrer les actes, effectivement tu peux faire des compteurs dans une table à part. Tu incrémentes ou décrémentes  ce compteur quand tu ajoutes/supprimes un acte. Pas besoin de TOUT recompter à chaque SELECT, sinon c'est l'horreur.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 août 2007 à 17:50
Salut

SELECT count(*) FROM naissance WHERE ville=...

c'est une requette rapide normalement

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012
15 août 2007 à 17:55
dans ma page php j'ai un tableau avec une ville sur chaque ligne et je veux afficher automatiquement le nombre total d'actes (naissance, bapteme, mariage, dece)

Evangun: si j'ai bien compris ta solution il faut que je crais une autre table ou il y aurait toutes les villes et dans la colonne d'a coté une requéte pour compter le nombre d'actes total ?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 août 2007 à 18:04
Salut

wholehog, envoi nous ton code, on te dira pourquoi c'est lent... vu ce que tu cherches, sans ajouter de tables, ca doit pouvoir etre tres rapide...

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012
16 août 2007 à 00:20
voila la fonction que j'ai ecrite, et qui se lance environ une trentaine de fois

function nbreactes ($codeinsee)

{
// on se connecte ? MySQL
$db = mysql_connect('estelle.barry.sql.free.fr', 'estelle.barry', 'bernard');
// on s?lectionne la base
mysql_select_db('estelle_barry',$db);
// on cr?e la requ?te SQL
$nb_dec = mysql_query("SELECT COUNT(*) FROM act_dec where CODCOM=$codeinsee");
$deces = mysql_fetch_row($nb_dec);

$nb_mar = mysql_query("SELECT COUNT(*) FROM act_mar where CODCOM=$codeinsee");
$mariage = mysql_fetch_row($nb_mar);

$nb_nai = mysql_query("SELECT COUNT(*) FROM act_nai where CODCOM=$codeinsee");
$naissance = mysql_fetch_row($nb_nai);

$nb_div = mysql_query("SELECT COUNT(*) FROM act_div where CODCOM=$codeinsee");
$divers = mysql_fetch_row($nb_div);
mysql_close;

echo '';
echo '';

$total[0]=$divers[0] + $naissance[0] + $mariage[0] + $deces[0];

if ($total[0]<>0) {
echo $total[0];
mysql_close;

}
}
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
16 août 2007 à 00:24
Salut

si tu te connectais une bonne fois pour toute a mysql par page aussi...

sors

$db = mysql_connect('estelle.barry.sql.free.fr', 'estelle.barry', 'bernard');
// on s?lectionne la base
mysql_select_db('estelle_barry',$db);

et mysql_close() de ta page...

et au passage, change le password de ta base de donnee....

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
16 août 2007 à 00:53
"et au passage, change le password de ta base de donnee...." --> Mdr. :)
0
cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012
16 août 2007 à 01:00
c'est pas la vrai adresse et c'est pas le vrai mot de passe bien sur
0
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
16 août 2007 à 01:02
Et avec :
$var = mysql_query("SELECT COUNT(*) FROM act_dec, act_mar, act_nai, act_div where act_dec.CODCOM=$codeinsee");
$data = mysql_fetch_row($var);

Ca fait 3 requêtes en moins...
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
16 août 2007 à 01:28
Aaron, ça ne fera qu'un décompte global, alors qu'il veut 3 nombres.

A mon avis Wholehog2 tu devrais faire comme j'ai dit, une table dédiée à tes stats, ce serait bien plus rapide. Après si tu trouves ça trop compliqué, fais comme tu veux, mais bon.
0
cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012
16 août 2007 à 01:47
merci de me répondre

effectivemnt je veux un decompte global

je test ça demain et je ous dit
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
16 août 2007 à 10:58
Ah au temps pour moi alors, j'ai lu trop vite
0
cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012
16 août 2007 à 19:22
j'ai essayé mais il me mets une erreur.

je préférerais la solution de Evangun mais je ne sais pas comment je dois proceder

pouvez vous m'expliquer
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 août 2007 à 17:18
Salut

si tu ne nous dit pas quelle est l'erreur generee... impossible de t'aider

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
Rejoignez-nous