cs_lookoom
Messages postés31Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention23 juin 2009
-
25 août 2004 à 18:45
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
1 sept. 2004 à 12:15
salut à tous,
je débute en php et remercie d'avance les personnes souhaitant m'aider !! 8)
bon... je fais une requete sur ma table (ça marche) mais c'est long à s'afficher car mon code ne doit pas être top !!
J'ai une colonne "type d'appareil" (ampli, enceinte) et une autre "genre" (hifi, home cinéma). Je voudrais afficher une page "MATOS" avec les "ampli hifi" puis les "ampli home cinema" et pareil avec les "enceintes".
Vaut-il mieux faire une requete pour chaque chose, comme c'est le cas pour ma page, exemple :
SELECT * FROM table WHERE type=ampli AND genre=hifi AND marque ='$mark'
echo...
SELECT * FROM table WHERE type=ampli AND genre=home cinema AND marque ='$mark'
echo...
ou alors faire une requete de ce type :
$listype=Array("AMPLI","ENCEINTE");
$listgenre=Array("HiFi","Home Cinema");
for($j=0;$j<sizeof($listype);$j++) {
for($k=0;$k<sizeof($listgenre);$k++) {
$sql = "SELECT * FROM table WHERE type='$listype[$j]' AND genre='$listgenre[$k]' AND marque ='$mark' ";
$resultat = mysql_query ($sql);
blinkseb
Messages postés57Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention18 avril 2005 25 août 2004 à 19:26
Salut !
Ah mon avis, préfère la première soltion, elle est beaucoup plus simple, et au moins tu boucle pas :) Mais le résultat reste le même, tu utilisera autant de requêtes, choisi donc la simplicité !
blinkseb
Messages postés57Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention18 avril 2005 25 août 2004 à 21:37
Y'a une méthode toute simple :)
Tu prend l'heure au début du script, avec les millisecondes, ensuite reprendr l'heure à la fin, toujours avec les millisecondes, tu soustraits, et t'a le temps d'exécution de la page :)
blinkseb
Messages postés57Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention18 avril 2005 25 août 2004 à 22:09
Voilà comment faire (exemple pris sur ce site :))
function getmicrotime(){
list($msec,$utime)=explode(" ",microtime());
return($utime+$msec);
}
//deuxieme fonction qui renvoie la difference
function process_time($time_start, $time_end){
return substr(($time_end - $time_start),0,7);
}
Tu fais donc :
$heure1 = getmicrotime();
...
$heure2 = getmicrotime();
echo process_time($heure1, $heure2);
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006 27 août 2004 à 21:49
si tu cherche a optimiser a mort ta requete sql, vu que tu interroge toujours la meme table (aparamen...) tu n'as qu'a tout récuperer d'un coup, en 1 seule requete SQL, puis tu gères ton affichage a coup de tableau... c + rapide 1 grosse requete SQL que plein de petite!
par contre ca te demande de jongler avec des tableaux, ca te donnerait kelke chose du genre:
$tab['listype']['listgenre']="...";
tu aurais un tableau bi-dimensionnel où la 1° case correspond à tous tes type et la 2° à tous tes genre...
perso, j'utilise ca mais pour un système ayant à gérer 1 tableau de 20 par 30 environ, soit 600 requêtes SQL si j'utilise la méthode simpl...
Mais de la facon que je te propose, je n'ai qu'une requete SQL pour mes 600 cases ("SELECT * FROM table" vu qu'au final j'utilise toute la table), et ensuite a moi de bien gérer mes tableaux, ce qui n'est pas simple si on ne connait pas les possibilités des tableaux(tris, indexation...)
cs_lookoom
Messages postés31Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention23 juin 2009 28 août 2004 à 01:39
yo windu
un grand merci pour ton aide !! 8)
par contre je n'est pas le nivo pour bien comprendre ton systeme
de tablo ( $tab['listype']['listgenre']="..."; )
si tu avais un ptit exemple (script) plus ou moins concret celà me serais plus compréhensible, si c'est pas trop t'en demander !!
mais bien c'est ce que je pensais, vaut mieux une bonne requete que plusieurs !!
est il essenciel de fermer la connexion à la base en fin de page ??? ( mysql_close() )
korrox
Messages postés60Date d'inscriptionmercredi 9 juillet 2003StatutMembreDernière intervention 3 septembre 2004 28 août 2004 à 05:02
Pour éviter d'avoir une charge trop importante sur ton serveur, il vaut mieux ouvrir la connection juste avant de lancer ta requete et la fermer juste apres.
Une bonne programmation c'est avant tout une bonne analyse. :)
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006 28 août 2004 à 12:14
Korrox a raison:il vaut mieux ouvrir la connexion dès que nécessaire et la refermer tout de suite après... ca évite de surcharger inutilement.
Pour l'exemple de tableau bi-dimensionnel voila un bout de code où j'y ai eu recours:
for($k=0;$k<count($this->tab_pole);$k++)
{
$this->tableau_final.="<td>".$this->tab_pole[$k]['nom_pole']."</td>";
}
en fait cela boucle dans mon tableau. voila a quoi le tableau $this->tab_pole ressemble:
[1] => Array
(
....
)
en fait, j'obtiens un tbaleau dont chaque case est un autre tableau...
je peux afficher toutes les cases en utilisant de 2 boucles for imbriquées l'une dans l'autre
cs_lookoom
Messages postés31Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention23 juin 2009 28 août 2004 à 13:06
aïe, ça va pas être facile !!
j'ai commencé à me renseigner sur les tablo bidimentionnel
(j'commence à comprendre >> un peu com mon deuxième exemple du départ)
par contre ton exemple ne m'aide pas bokoo !! j'comprend rien car suis un peu nul !! si tu pouvais me fournir une url de forum ou tuto ou encore un bout de script plus complet !!
comment récupérer les valeurs de la base dans un array ??
cs_lookoom
Messages postés31Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention23 juin 2009 28 août 2004 à 13:31
merci d'intervenir Anthomicro
en fait, j'ai une base avec plein de produits HiFi (ampli, enceinte, chaine...).
J'ai donc créée une base avec 7 colonnes (type, genre, marque, modele, ...)
Si vous voulez voir où j'en suis, le site que je développe pour un ami est ici : www.derouet.fr
mais comme vous pourrez le constater, y'a encore du boulot et j'essaye de faire ça au mieux bien que je ne sois pas un pro !!!
pour récupérer les données de ta base dans un tableau il te suffit de faire:
while($data=mysql_fetch_array($link,$id_connexion))
{
$tab[]=$list;
}
tu créeras ainsi un tableau '$tab' avec dans chaque case, un tableau correspondant à une ligne renvoyée par la Base de données.
voial ce que ca te donnera:
Array
(
[0] => Array
(
[type] => ...
[genre] => ...
[marque] => ...
)
Ainsi si tu désires la marque se trouvant dans la 3° ligne de ta BDD, tu fais:
$MarqueLigne3=$tab[2]['marque'];
(le 2 n'est pas une erreur: un tableau commence par la case 0 et non par 1... en PHP du moins, après ca peut varier d'un langage à un autre il me semble)
cs_lookoom
Messages postés31Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention23 juin 2009 28 août 2004 à 16:39
merci beaucoup windu
je vais me pencher sur toutes ces infos et faire chauffer mes neurones !!
C'est vraiment sympa à tous de me filer un coup de main car le PHP j'connais pas très bien (moa c'est plutôt Flash et Photoshop) et j'me suis proposé d'aider un pote à faire le site de son magasin. Mais j'vais finir par m'en sortir grâce à vous tous.
cs_windu
Messages postés282Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention19 juillet 2006 28 août 2004 à 19:09
De rien, lookoom...
C'est le but de cette section et même de ce site! on a tous été débutants et on a tous passé des heures sur des forums ou des tutoriaux afin de comprendre et de s'améliorer..
Alors les types qui te disent:"Y font ch*** ces newbies, peuvent pas se démmerder par eux-mêmes???" ce sont justes des types qui ont oubliés qu'au début ils étaient comme toi!!
Attention:Ca ne vise personne en particulier... mais si certains se sentent vexés par ma remarque, qu'ils se remettent en question!
cs_lookoom
Messages postés31Date d'inscriptionmardi 10 août 2004StatutMembreDernière intervention23 juin 2009 1 sept. 2004 à 12:08
salut à tous,
j'ai bien compris comment stocker le résultat de ma requete unique dans un tablo mais j'sais pas trop comment gérer l'affichage !! j'ai réussi à faire quelque chose mais la technique me parait nulle.
$req "SELECT * FROM table WHERE type'Ampli';
$res = mysql_query($req);
if ($valeur2=="$status"){
echo...}
}
}
// fin de fonction
Ensuite j'appelle ma fonction AFFICHE pour chaque genre d'Ampli (HiFi, Home Cinema et Préampli), ce qui fait une boucle "for" à chaque fois !! pas terrible !!
Y'a surement moyen de travailler sur mon tablo (trie) avec quelques fonctions (array_...) mais j'ai po trouvé !!! Si qqu'un a un exemple, une piste !! 8)