IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

optimisation affichage du résultat d'un select


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut optimisation affichage du résultat d'un select
    Bonjour les gens
    Voici un ptit script qui affiche dans un tableau le résultat d'une requete. Rien de bien compliqué la dedans.
    Le truc c que la requete renvoie plus de 5000 enregistrements, du coup l'affichage de la page prend un certain temps.
    D'ou ma question : Auriez vous 2 ou 3 tuyaux pour optimiser un peu tout ca et ainsi accélerer l'affichage de la page ?
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    $query_custs = "SELECT ECOMPANY, id, TYPE, ETELEPHON, EMAIL, SETITLE, SEFORE, SESURNM, tempid, nb_orders, LO, MTBO, TC, TEC, LC FROM custs $show_see ORDER BY  $order $way, ECOMPANY ASC LIMIT $startfrom, $nb_results";
    $custs = mysql_query($query_custs, $dbprotect) or die($query_custs."\n".mysql_error());
    $row_custs = mysql_fetch_assoc($custs);
    $is_custs = mysql_num_rows($custs);
    if ($is_custs)
    {
    	do
    	{  
    		//echo mysql_num_rows($custs);
    		$name = tronquer_texte(stripslashes($row_custs['ECOMPANY']),35);
    		$id_cust=$row_custs['id'];
    		$type=stripslashes($row_custs['TYPE']);
    		$phone=stripslashes($row_custs['ETELEPHON']);
    		$email=stripslashes($row_custs['EMAIL']);
    		$gender=stripslashes($row_custs['SETITLE']);
    		$firstname=stripslashes($row_custs['SEFORE']);	
    		$lastname=stripslashes($row_custs['SESURNM']);	
    		$contact=$firstname.' '.$lastname;
     
    		$tempid=$row_custs['tempid'];
    		$nb_orders=$row_custs['nb_orders'];
    		$LO=$row_custs['LO'];	
    		$MTBO=$row_custs['MTBO'];
    		$TC=$row_custs['TC'];	
    		$TEC=$row_custs['TEC'];	
    		$LC=$row_custs['LC'];	
     
     
     
     
    		$colors = array("#FFFFFF", "#f0f0f0");
     
     
     
     
    		echo "<tr style=\"background-color:$colors[$flag];height:1px;\">\n";
     
    		echo '<td align="right" width="4%"class="borderight">'.($total+1).'<input type="checkbox" id="'.$id_cust.'" name="'.$id_cust.'" value="'.$id_cust.'">'."\n"
    		.'<td align="left" width="*" style="border-right:1px solid #cccccc;cursor:pointer;" onclick="document.location.href=\'index.php?page=cust&id_cust='.$id_cust.'\'">'.$name.'</td>'."\n"
    		.'<td align="left" width="5%"class="borderight">'.$type.'&nbsp;</td>'."\n"
    		.'<td align="left" width="15%"class="borderight">'.$contact.'&nbsp;</td>'."\n"
    		.'<td align="right" width="12%"class="borderight">'.$phone.'&nbsp;</td>'."\n"
    		.'<td align="right" width="8%"class="borderight">'.$nb_orders.'</td>'."\n"
    		.'<td align="right" width="8%"class="borderight">'.$LO.' d</td>'."\n"
    		.'<td align="right" width="6%"class="borderight">'.$MTBO.' d</td>'."\n"
    		.'<td align="right" width="7%">'.$LC.' d</td>'."\n"
    		.'<td align="right" width="22px" style="">&nbsp;</a></td>'."\n"
    		.'</tr>';
    		$flag = 1-$flag;
    		$total++;
     
     
    	} while ($row_custs = mysql_fetch_assoc($custs));
    }
    Merci d'avance

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    je pense que la pagination coté php est la solution la plus adéquate, et en plus c'est ergonomique

    parceque 5000 entrées à afficher, c'est pas top pour la navigation
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    yop

    Merci de ta réponse déja
    Qu'est ce que tu entends par "la pagination coté php est la solution la plus adéquate" ? Moi pas trop piger.

    Sinon pour les 5000 entrées je c ca fait bcp, mais bon c pas trop moi qui prend ce genre de décisions...

  4. #4
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    et bien comme pour ce forum lorsque les réponses dépasse un certain nombre. il créé des pages

    ensuite tu peux via un formulaire, ou en définissant de manière définitive le nombres d'entrée par pages. et coté MySQL c'est l'option LIMIT qui te permettra de n'extraire qu'une partie du résultat les 10 premiers, les 10 suivants, les 1000 premiers etc
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ah oué oki merci, j'avais pas compris ce que tu voulais dire.
    Le truc c'est que je connais tout ca.
    D'ailleurs je m'en sers dans ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... FROM custs $show_see ORDER BY  $order $way, ECOMPANY ASC LIMIT $startfrom, $nb_results";
    L'utilisateur peut donc choisir ce qu'il met dans le WHERE et le nombre de résultats attendus, seulement il doit aussi pouvoir tout afficher.... d'ou mon probleme le cas échéant.

    Lol mais j'ai pas pensé a m'en servir pour faire un systeme de pages comme tu dis. C pas con du tout, mais je sais pas si ca va vraiment coller avec les attentes de mon boss (en gros il attends de moi un truc parfait, ou on peut tout faire en un minimum de clics...)
    Mais bon je vais y réfléchir qd meme.

    En fait je pensais plus a des petites astuces pour augmenter la vitesse d'éxécution de la requete, ou de la création des lignes du tableau... histoire de gagner juste 1 ou 2 ms, ce qui multiplié par 5000 peut faire la différence...

Discussions similaires

  1. [AJAX] Affichage du résultat des select ajax
    Par baddevil dans le forum jQuery
    Réponses: 1
    Dernier message: 01/06/2014, 16h14
  2. [Débutant] optimiser l'affichage des résultats dans un fichier txt
    Par Sakkou dans le forum MATLAB
    Réponses: 1
    Dernier message: 17/01/2011, 11h29
  3. [AC-2003] Affichage résultat d'un select
    Par Nheil dans le forum VBA Access
    Réponses: 13
    Dernier message: 25/03/2010, 13h35
  4. Réponses: 21
    Dernier message: 17/06/2008, 10h54
  5. Insérer le résultat d'un SELECT
    Par zoubidaman dans le forum SQL
    Réponses: 3
    Dernier message: 16/08/2004, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo