1. ✅ Apprenez une METHODE qui marche pour votre SEO ! Formation à distance avec Olivier Duffez et Fabien Facériès + aide pour prise en charge du financement
    Rejeter la notice

Comment simplifier une double requête SQL?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par tryan, 10 Octobre 2011.

  1. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Bonjour,

    Est-il possible de simplifier la double requête suivante et si oui, comment?
    Code:
    <?php
    //On selectionne les données pour afficher les X derniers articles
    $result1 = mysql_query("SELECT id,id_categorie,titre,description,titre_rewrite,date FROM CONTENU WHERE valide = 'oui' ORDER BY id DESC LIMIT ".$nombre_article_accueil."");
    while($affiche = mysql_fetch_array($result1))
    {
    	//on va chercher le nom du dossier pour chaque article
    	$dossier_article = mysql_query("SELECT nom_categorie,titre_rewrite FROM CATEGORIES WHERE id='".mysql_real_escape_string($affiche['id_categorie'])."'");
    	
    	while($nom_dossier = mysql_fetch_array($dossier_article))
    	{
    		$nom_du_dossier=$nom_dossier['titre_rewrite'];
    		$titre_categorie=$nom_dossier['nom_categorie'];
    	}
    	//------fin nom de dossier---------------
    
    	echo '<h2 class="h2"><a title="'.$affiche['titre'].'" href="http://'.$_SERVER['HTTP_HOST'].'/'.$nom_du_dossier.'/'.$affiche['titre_rewrite'].'">'.$affiche['titre'].'</a></h2>';
    }
    ?>
    Merci
     
  2. MarvinLeRouge
    MarvinLeRouge WRInaute impliqué
    Inscrit:
    1 Septembre 2004
    Messages:
    515
    J'aime reçus:
    0
    Salut,

    Sauf erreur de ma part, ça devrait donner un truc du genre :
    Code:
    <?php
    //On selectionne les données pour afficher les X derniers articles
    $sql = "SELECT co.id AS contenu_id, co.id_categorie, co.titre AS contenu_titre, co.description AS contenu_description, co.titre_rewrite AS contenu_titre_rewrite, co.date AS contenu_date, ca.nom_categorie AS titre_categorie, ca.titre_rewrite AS nom_du_dossier
    FROM CONTENU co INNER JOIN categories ca ON co.id_categorie = ca.id
    WHERE co.valide = 'oui' ORDER BY contenu_id DESC LIMIT ".$nombre_article_accueil";
    
    $result1 = mysql_query($sql);
    while($affiche = mysql_fetch_array($result1))
    {
      extract ($affiche);
       echo '<h2 class="h2"><a title="'.$titre.'" href="http://'.$_SERVER['HTTP_HOST'].'/'.$nom_du_dossier.'/'.$contenu_titre_rewrite.'">'.$contenu_titre.'</a></h2>';
    }
    ?>
     
  3. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Grand merci MarvinLeRouge, ça fonctionne nickel :wink: mais comme à chaque fois que l'on me sort une jointure...j'ai le cerveau qui ne suit pas ^^!
    Je décortique la bête dans tout les sens pour comprendre et c'est loin d'être gagné :D ...

    Encore merci.
     
  4. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Je fais des testes "de compréhensions" et un truc m'échappe...
    Code:
    $result = mysql_query("SELECT id,nom_categorie FROM CATEGORIES ORDER BY id ASC");
    
    while($affiche = mysql_fetch_array($result))
    {
    	echo '<h1><a title="'.$affiche['nom_categorie'].'" href="categorie.php?id='.$affiche['id'].'">'.$affiche['nom_categorie'].'</a></h1>';
    
    	$result1 = mysql_query("SELECT id, titre FROM CONTENU WHERE id_categorie =  '".$affiche['id']."'");
    	
    	while($affiche1 = mysql_fetch_array($result1))
    	{
    		echo '<a title="'.$affiche1['titre'].'" href="page.php?id='.$affiche1['id'].'">'.$affiche1['titre'].'</a><br/>';
    	}
    }
    M'affiche :
    categorie 1
    article 1
    article 2
    article 3
    categorie 2
    article 1
    categorie 3
    categorie 4
    categorie 5
    Maintenant je teste avec une jointure :
    Code:
    $jointure = mysql_query("SELECT 
    table_categories.id AS categories_id, 
    table_categories.nom_categorie AS categories_nom_categorie, 
    
    table_contenu.id AS contenu_id, 
    table_contenu.titre AS contenu_titre 
    
    FROM CATEGORIES table_categories INNER JOIN CONTENU table_contenu 
    ON table_categories.id = table_contenu.id_categorie   
    ORDER BY categories_id ASC
    ");
    while($affiche11 = mysql_fetch_array($jointure))
    {
    	extract ($affiche11);
    	echo '<h1><a title="'.$categories_nom_categorie.'" href="categorie.php?id='.$categories_id.'">'.$categories_nom_categorie.'</a></h1>
    		<a title="'.$contenu_titre.'" href="page.php?id='.$contenu_id.'">'.$contenu_titre.'</a><br/>
    		';
    }
    et ça m'affiche :
    categorie1
    article 1
    categorie 1
    article 2
    categorie 1
    article 3
    categorie 2
    article 1
    etc...
    et ça ne m'affiche pas les catégories qui ne comportent pas d'articles...
    Ou est mon erreur svp?

    Merci
     
Chargement...
Similar Threads - simplifier double requête Forum Date
Comment simplifier une double requête par jointure? Développement d'un site Web ou d'une appli mobile 2 Mars 2010
Serait-il judicieux de simplifier nos URL ? Problèmes de référencement spécifiques à vos sites 17 Décembre 2019
Simplifier un script (2 in_array) Développement d'un site Web ou d'une appli mobile 22 Septembre 2016
Est-il possible de simplifier un peu ce script ? Développement d'un site Web ou d'une appli mobile 21 Septembre 2015
Twitter et Facebook : est-il possible de simplifier le couple de script HTML5? Développement d'un site Web ou d'une appli mobile 3 Mai 2012
Simplifier mon code ? Développement d'un site Web ou d'une appli mobile 11 Juillet 2010
Simplifier 4 lignes de codes Développement d'un site Web ou d'une appli mobile 6 Juin 2010
Simplifier une fonction javascript Développement d'un site Web ou d'une appli mobile 30 Mai 2010
Simplifier une requête MySQL Développement d'un site Web ou d'une appli mobile 7 Avril 2010
Simplifier une ligne de code Développement d'un site Web ou d'une appli mobile 24 Mars 2010