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

Langage PHP Discussion :

Améliorer le temps d'affichage


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut Améliorer le temps d'affichage
    Bonjour,

    Des idées pour améliorer le temps d'affichage de cette page http://www.timbres-de-france.com/collection/pag2009.php

    les scripts qui sont inclus dans la page

    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
    <?php
    session_start();
    $_SESSION['chemin']="";
    require_once('../connex_mysqli/connex_base_gene.php');
    $_SESSION['lien']=$_SESSION["adresse_site"]."collection/pag2009.php";
    $_SESSION['page']=$_SESSION['lien'];
    if(!isset($_SESSION['pseudo'])) $_SESSION['pseudo']="";
     
    $tab=array('2009-5','2009-23','2009-2','BS36','2009-8','2009-9','2009-10','BF127','2009-17','2009-21','2009-18','2009-19','2009-20',
    '2009-107','2009-7','2009-13','2009-12','BS37','2009-14','4338','4339','4340','2009-32','2009-49','2009-44','2009-34','2009-35',
    '2009-36','2009-33','2009-37','2009-28','2009-30','2009-31','2009-70','2009-76','2009-82','2009-27','2009-50','2009-51','2009-40',
    '2009-29','2009-26','2009-54','2009-53','2009-52','2009-57','2009-58','2009-55','2009-60','2009-59','2009-56','2009-61','2009-41',
    '2009-68','2009-78','2009-80','2009-79','2009-69','2009-77','2009-72','2009-73','2009-74','BF128','2009-71','2009-75','2009-66',
    '2009-62','2009-65','2009-64','2009-67','2009-63','2009-84','2009-138','2009-137','2009-111','2009-133','2009-132','2009-131',
    '2009-134','2009-130','2009-108','2009-93','2009-88','2009-87','2009-148','2009-145','2009-144','2009-143',
    '2009-147','2009-146','2009-110','2009-92','2009-94','2009-139','2009-140','2009-141','2009-142','2009-109','BS38','BS39','BS40',
    'BS41','BS42','2009-136','2009-135','2009-113','2009-90','2009-120','2009-121','2009-123','2009-124-1','2009-122',
    '2009-119','2009-34_1','2009-118','2009-35_1','2009-117','2009-36_1','2009-33_1','2009-37_1','2009-105','2009-124','2009-89','4423','4424',
    '2009-86','BS46','2009-128','2009-129','2009-126','2009-127','2009-149','2009-125','2009-112','BS44','BS45');
    $fin=count($tab);
    include('../script/texte_page.php');
    ?>
    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
    <?php
    					for($i=0;$i<$fin;$i++)
    					{
     
    						$query = "SELECT * FROM collec_0 ";
    						$result = mysqli_query($base_gene, $query);
    						while ($row = mysqli_fetch_assoc($result))
    						{
    							  $desi[$i]="";
    							  if(trim($tab[$i])==trim($row['num'])) 
    							 	{
    								$desi[$i]=utf8_encode(trim($row['desi']));
    								$num[$i]=utf8_encode(trim($row['Num_yvert']));
    								$desi[$i]='"timbre '.$num[$i].' légende : '.$desi[$i].'"';
    								break;
    							 }
     
    						}
    					 //if ($desi[$i]=='') $desi[$i]=" ";
    					}
    ?>
    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Bonjour,

    Concernant la deuxième partie du code que tu as posté (celle avec la boucle for).

    Pour chaque élément de ton tableau ,tu lances une requête qui parcourt toute ta table à la recherche d'un élément précis.

    Il vaudrait mieux directement inclure la clause WHERE à la recherche de ton élément (WHERE num=...)

    Après, tu peux te diriger vers les requêtes préparées (Voir cette page pour mysqli : http://php.net/manual/fr/mysqli.prepare.php)

    Rapidement cela pourrait donner quelque chose du genre (pour ton cas) :

    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
    <?php
     
    $query = 'SELECT `num`, `desi`, `Num_yvert`,  FROM `collec_O` WHERE `num` = ? ;';
     
    $stmt = mysqli_prepare($base_gene, $query);
     
    $i = 0;
     
    foreach($tab as $item) {
     
    	mysqli_stmt_bind_param($stmt, "s", $item);
     
    	mysqli_stmt_execute($stmt);
     
    	mysqli_stmt_bind_result($stmt, $row_num, $row_desi, $row_Num_yvert);
     
    	mysqli_stmt_fetch($stmt);
     
    	$desi[$i] = utf8_encode(trim($row_desi));
     
    	$num[$i]  = utf8_encode(trim($row_Num_yvert));
     
    	$desi[$i] = '"timbre '.$num[$i].' légende : '.$desi[$i].'"';
     
    	mysqli_stmt_close($stmt);
     
    	++$i;
    }
    A adapter et à corriger (cela fait longtemps que je n'utilise plus mysql_ et mysqli_) mais l'idée est là

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une seule et unique requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT * FROM collec_0 WHERE num IN (". implode(',' ,$tab) .")";

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je me permets d'ajouter les '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT * FROM collec_0 WHERE num IN ('". implode("','" ,$tab) ."')";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut
    Merci,

    Vous pouvez m'expliquer simplement comment fonctionne cette requète

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    implode() rassemble tout ton tableau en une seule chaine.
    et l'operateur SQL "IN" permet de chercher tous les éléments fournis.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/06/2010, 17h54
  2. [MFC : CTooltipCtrl, temps d'affichage]
    Par Zillon dans le forum MFC
    Réponses: 4
    Dernier message: 22/05/2006, 13h53
  3. Réponses: 5
    Dernier message: 12/05/2006, 11h45
  4. [FLASH MX] Temps d'affichage avec (onrollover)
    Par emilek dans le forum Flash
    Réponses: 1
    Dernier message: 22/09/2005, 14h17
  5. Temps d'affichage du swf
    Par oazar dans le forum Flash
    Réponses: 2
    Dernier message: 17/10/2003, 14h04

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