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 :

Meilleure configuration pour une requête SQL


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Points : 56
    Points
    56
    Par défaut Meilleure configuration pour une requête SQL
    Bonjour à tous.

    Voici ma question toute bête :

    J'ai une table client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CLI_ID  FAC_ID
    1         58
    1         12
    2         7
    J'aimerais afficher cela comme ceci en PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Client 1
    Facture 58
    Facture 12
     
    Client 2
    Facture 7
    Quel est la meilleure facon de procéder en faisant le moins de requête SQL possible ? Est ce réalisable en une seule requête SQL et ensuite avec du traitement PHP, si oui comment se structurerai le code PHP ?

    Merci pour votre aide sur ce point qui reste un casse tête pour moi malgré sa simplicité

  2. #2
    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
    Points : 44 155
    Points
    44 155
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Merci pour ta réponse! Ta méthode a l'air parfaite par contre je bloque car dans l'exemple il utilise un objet PHP pour faire sa requête et je ne connais pas du tout la POO :S

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rows1 = $CONNpdo1->query($SELECsqL0);
    Est-il possible de retrouver comment il avait définit son objet $CONNpdo1 ?

    Je n'avais même jamais utilisé ce genre de méthode avant moi j'utilise tout le temps un mysql_query puis mysql_fetch_array et une boucle while

    Merci!

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    C'est un objet de connexion PDO qui doit etre défini dans une classe. La méthode query appliqué dessus te permet de faire des requete de type SLECT uniquement dessus. Pour des requete de type INSERT, UPDATE etc, il faudra executer la méthode exec sur cet objet

    Documentation PDO

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Merci je ne connaissais pas du tout ce système compatible avec tous les SGBD! Je vais me renseigner dessus.

    Une question bête, si je suis sure que mon application restera sur MySQL est ce que cette technique a un avantage? Ou alors continuer d'écrire à l'ancienne "mysql_query" pour mes requêtes reste mieux en terme de performance ? (même s'il s'agit de nanosecondes :p)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    OK donc j'ai fait un code qui marche, maintenant je ne sais pas si c'est la solution la plus optimisé.

    En fait mon problème est le suivant :
    En partant d'une seule requête SQL, j'aimerai afficher les données en les hiérarchisant de cette façon :
    Section id
    - Post id
    - - Fichier id
    - - Fichier id
    - Post id
    - - Fichier id

    Section id
    - Post id
    - - Fichier id
    - - Fichier id

    Voici mon code qui fonctionne :
    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
    $rows1 = mysql_query("
    	SELECT p.post_id,p.post_section,p.post_title,p.post_content,p.post_author,p.post_date,f.fic_lien,f.fic_id
    	FROM post_infos p
    	LEFT JOIN tj_fic_art fa
    	ON p.post_id = fa.art_id
    	LEFT JOIN t_fichier f
    	ON f.fic_id = fa.fic_id
    	ORDER BY p.post_section
    ");
     
    $current_section_id = 0;
    $current_post_id = 0;
     
    while($row=mysql_fetch_array($rows1)) {
        if ($row['post_section'] != $current_section_id) {
    		echo $row['post_section'] . "<br/>";
    		$current_section_id = $row['post_section'];
    		if($row['post_id'] != $current_post_id) {
    			echo "- post" . $row['post_id'] . "<br />";
    			echo "- - fichier" . $row['fic_id'] . "<br />";
    			$current_post_id = $row['post_id'];
    		}
    	} else {
    		if($row['post_id'] != $current_post_id) {
    			echo "- post" . $row['post_id'] . "<br />";
    			echo "- - fichier" . $row['fic_id'] . "<br />";
    			$current_post_id = $row['post_id'];
    		} else {
    			echo "- - fichier" . $row['fic_id'] . "<br />";
    		}
    	}	
    }
    Résultat :
    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
    1
    - post1
    - - fichier1
    - - fichier2
    - post2
    - - fichier
    - post3
    - - fichier3
    2
    - post4
    - - fichier4
    - post5
    - - fichier5
    - post6
    - - fichier6
    - post7
    - - fichier7
    3
    - post8
    - - fichier8
    - post9
    - - fichier9
    - post10
    - - fichier10
    Désolé pour les noms des champs assez moches je suis partie d'un ancien projet à moi et je ne me préoccupais pas tellement de ca avant

    PS: le post 2 n'a pas de fichier mais c'est une erreur dans ma BDD que j'ai pas corrigé donc c'est normal que rien ne s'affiche

Discussions similaires

  1. Le meilleur hebergeur pour une table sql ?
    Par CyberTwister dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/12/2006, 05h11
  2. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 17h53
  3. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 11h33
  4. Réponses: 3
    Dernier message: 18/06/2005, 01h31
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 12h56

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