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 code double boucle while [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut Optimisation code double boucle while
    Bonsoir,

    J'aimerais ne faire qu'une seule requête d'autant plus qu'il s'agit de la même.

    Comment procéderiez vous pour faire qu'une seule requête pour ce code ?

    Par avance merci pour votre aide

    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
    //requete type articles
    	$sql_type_article = $bdd->prepare('SELECT id_type_article,type_article_intitule FROM pevtt_type_article');
    	$sql_type_article->execute();
     
    	echo '<ul id="jsddm">';
    		//redaction
    		echo '<li><a href="#">Création</a>';
    		echo '<ul>';
    			while ($tab_type_article = $sql_type_article->fetch()) 
    			{
    				$type_article = htmlspecialchars($tab_type_article['type_article_intitule']);
    				$id_type_article = intval($tab_type_article['id_article_intitule']);
     
    				echo'<li><a href="/php/articles/rediger_article.php?type_article='.$id_type_article.'">'.$type_article.'</a></li>';		
    			}
    		echo'</ul>';
    		echo'</li>';
     
    		$sql_type_article = $bdd->prepare('SELECT id_type_article,type_article_intitule FROM pevtt_type_article');
    		$sql_type_article->execute();
     
    		//gestion
    		echo'<li><a href="#">Gestion</a>';
    		echo'<ul>';
    			while ($tab_type_article = $sql_type_article->fetch()) 
    			{
    				$type_article = htmlspecialchars($tab_type_article['type_article_intitule']);
    				$id_type_article = intval($tab_type_article['id_article_intitule']);
     
    				echo'<li><a href="/php/articles/liste_article.php?type_article='.$id_type_article.'">'.$type_article.'</a></li>';		
    			}
    		echo'</ul>';
    		echo'</li>';
    	echo'</ul>';

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Un fetchAll qui va te retourner tous les résultats. Te reste plus qu' a itérer autant de fois que nécessaire sur ce jeu de résultat.

    Au passage le principe du prepare/execute c'est que tu n'a pas besoin de repréparer la requête pour la réexecuter.
    Dans ton code pour la seconde requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_type_article->execute();
    aurait suffit

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par grunk Voir le message
    Un fetchAll qui va te retourner tous les résultats. Te reste plus qu' a itérer autant de fois que nécessaire sur ce jeu de résultat.

    Au passage le principe du prepare/execute c'est que tu n'a pas besoin de repréparer la requête pour la réexecuter.
    Dans ton code pour la seconde requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_type_article->execute();
    aurait suffit
    autant faire un foreach direct sur le statement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($sql_type_article as $tab_type_article)

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Merci pour vos explications !

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

Discussions similaires

  1. [MySQL] Double boucle while input select
    Par yurispy dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 15/12/2013, 23h06
  2. Quitter une double boucle while
    Par sirop-de-menthe dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/05/2011, 23h05
  3. Optimisation code/ Probleme boucle while
    Par yannou63360 dans le forum Langage
    Réponses: 5
    Dernier message: 11/11/2010, 10h07
  4. [PHP 5.3] Soucis avec le résultat d'une requête (double boucles while)
    Par beegees dans le forum Langage
    Réponses: 7
    Dernier message: 31/05/2010, 22h26
  5. [PHP 5.3] Double boucles while, problème d'accès au données de la première
    Par beegees dans le forum Langage
    Réponses: 3
    Dernier message: 09/11/2009, 08h44

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