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 :

Question sur le SELECT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Par défaut Question sur le SELECT
    Est ce mieux :

    SELECT *

    OU

    SELECT $variable (variable définie dans une boucle)

    sachant que le premier va aller chercher 80 champs mais la requete ne sera effectuée qu'une fois et que le second sera effectué autant de fois qu'il y a de variable dans la boucle (7 ou 8 fois) dc 7 ou requêtes.

    on m'a tjs dis d'éviter les requetes dans les boucles mais là je me pose des questions

  2. #2
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Par défaut
    il y a combien de champs dans ta table ?
    je pense dans ton cas utilise * pour eviter des oublis... bonne chance.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Par défaut
    80 champs

    il ne peut pas y avoir d'oubli

    car dans la boucle c'est ceci la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selection      	= mysql_query("SELECT $cle FROM caracteristique_user WHERE id_user=".$id)or die (mysql_error());
    ceci exécuté 6-7 fois et n'allant chercher que 1 champs

    Alors que hors de la boucle ce serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selection      	= mysql_query("SELECT * FROM caracteristique_user WHERE id_user=".$id)or die (mysql_error());
    ceci exécuté 1 fois et allant cherché 80 champs

  4. #4
    Membre chevronné Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Par défaut
    moi je conseillerait plutot l'autre solution (celle avec la définition des champs) si tu sais bien quels champs tu veux traiter. c'est meiux niveau performances dans ton cas. Enfin, à mon humble avis!

  5. #5
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    vas lire le post it optimisation.

    le * n'est pas conseillé (sauf dans les sous requetes)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Par défaut
    oui j'ai bien lu le post sur l'optimisation (lu hier soir :p)

    mais c'est pcq cela m'envoit 6-7 hits si je met dans la boucle.

  7. #7
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    Moi je te conseillerais plutôt de faire une boucle dans laquelle tu constitue sous forme d'une chaine de caracteres la liste des champs à selectionner (genre $laliste qui vaut à la fin de la boucle "id, nom, prenom, champx, champy, champz")
    puis tu fais ta selection en une seule requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT $laliste WHERE ....

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Par défaut
    c'est pas mal ça mais comment faire cette liste?

    car moi et les array :s

  9. #9
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    je parle pas d'un array, je te parle d'une simple chaine de caracteres
    Il me semble pourtant avoir été clair :
    tu constitue sous forme d'une chaine de caracteres la liste des champs à selectionner
    $laliste qui vaut à la fin de la boucle "id, nom, prenom, champx, champy, champz"
    en gros tu fais quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $laliste = "";
    for($i=0;$i<=$n;$i++)
    {
      $laliste.="unNomdeChamp";
      if($i<$n)$laliste.=",";
    }

  10. #10
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, si tes champs sont stockés dans un array, tu peux aussi utiliser la fonction implode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $arrayChamps = array('champs1', 'champs2', 'champs3');
    $listeChamps = implode(', ', $arrayChamps);
    $sql = 'SELECT '.$listeChamps.' FROM ma_table';
    Bon développement

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

Discussions similaires

  1. Question sur un SELECT...... AS....
    Par geant63 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 15/09/2009, 17h17
  2. Question sur le Select
    Par Iria77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/07/2007, 14h14
  3. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54
  4. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23

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