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 :

[SQL] Selectionner colonne d'une table


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut [SQL] Selectionner colonne d'une table
    slt,
    quelle est la syntaxe d'une requête SQL permettant de selectionner une colonne d'un table?
    pour exemple je souhaiterai selectionner la colonne type de ma table VENTE.
    Pour l'instant ma requête correspond à ceci:
    SELECT * FROM VENTE WHERE 1=1 AND (que faut il mettre ici?)=APPARTEMENT;
    Merci.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    je ne comprends pas trop ce que tu veux faire. sois un peu plus précis stp

    de plus à quoi sert le 1=1 ?


    Michel

  3. #3
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Bah type par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM VENTE WHERE 1=1 AND type='APPARTEMENT'
    Avec des quotes autour de ta valeur quand c'est une chaîne.

    Pas besoin de point-virgule en fin de requête.

    Pour finir, il n'y a aucun rapport avec PHP, donc ce n'est pas dans le bon forum (il y a un forum SQL).

    Edit : Le 1=1 c'est une technique qui facilite grandement la construction de requêtes avec un nombre variable de conditions.

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    Citation Envoyé par JWhite
    Bah type par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM VENTE WHERE 1=1 AND type='APPARTEMENT'
    Avec des quotes autour de ta valeur quand c'est une chaîne.
    Ba c'est ce que j'ai fais mais ça ne fonctionne pas, je me suis donc dis qu'etant donné que ça marchait avec vente et pas type, la seule difference qu'il y avait entre les deux c'est que vente c'est une table et que type c'est une colonne de la table vente, donc du coup j'ai supposé que la syntaxe pour selectionner une table et une colonne d'une table etait differente.

    Pour finir, il n'y a aucun rapport avec PHP, donc ce n'est pas dans le bon forum (il y a un forum SQL).
    Désolé mon doigts ont fourché.
    quelqu'un peut donc déplacer le sujet

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    Re,

    Citation Envoyé par mealtone
    Ba c'est ce que j'ai fais mais ça ne fonctionne pas
    que veux tu dire par la?


    Citation Envoyé par JWhite
    Edit : Le 1=1 c'est une technique qui facilite grandement la construction de requêtes avec un nombre variable de conditions
    oui je suis d'accord avec toi mais ici, il n'a pas grand intérêt...


    Michel

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    et bien ce que je veux dire c'est qu'en selctionnant un type dans mon menu deroulant, donc appartement je n'ai aucun résultat d'affiché, hors j'ai bien créé deux enregistrements correspondant a des appartements.

    Pour le 1=1 il a bien un intérêt ici car ma requête est bien construite avec un nombre variable de conditions.

  7. #7
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    aucun intérêt car cela te retourne tous tes enregistrments.

    Je n'ai pas compris ce que tu voulais faire exactement, donne la structure de ta table vente avec des données de test si possible puis dis ce que tu veux récupérer comme données.
    Edit : et donnes aussi la partie de ton prog php qui génère ta requête SQL

  8. #8
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par gerald2545
    aucun intérêt car cela te retourne tous tes enregistrments.
    Réponse dans les posts précédents (merci de tout lire...).


    En testant cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM VENTE WHERE 1=1 AND type='APPARTEMENT'
    dans phpmyadmin tu as des résultats ou pas ?

  9. #9
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    tu pourrais être plus explicite STP sur la signification de
    Le 1=1 c'est une technique qui facilite grandement la construction de requêtes avec un nombre variable de conditions.
    avec liens à la clé STP.
    Merci, je demande à être persuadé de l'utilité de 1=1 ...

  10. #10
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Pas de lien c'est une technique très pratique, ça ne change effectivement rien au résultat de la requête en elle-même mais essaie de construire une requête avec un nombre variable de conditions tu te rendras très vite compte du problème et de l'utilité de la chose pour le contourner très facilement

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    Voici mon code:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    <?php
     
    @ $db = new mysqli('localhost', 'user', 'mdp', 'base_dlv');
     
      if (mysqli_connect_errno()) 
      {
         echo 'Error: Could not connect to database.  Please try again later.';
         exit;
      }
     
    if(isset($_POST["typerech"]))
    {
     
    $query = "select * from ";
     
    switch($_POST["typerech"]){
     
      case "vente" :
      echo 'ventes<br>';
      $query .= "vente";
      break;
     
      case "location" :
      echo 'locations<br>';
      $query .= "location";
      break;
     
      default :
      break;
    }
     
    }
    else
    {
       echo'erreur';
    }
     
    $query .= ' WHERE 1=1';
     
    switch($_POST["type_de_bien"])
    {
     
      case '1' :
      $query .= ' AND TYPE='.'APPARTEMENT';
      break;
     
      case '2' :
      $query .= ' AND TYPE='.'VILLA';
      break;
     
      case '3' :
      $query .= ' AND TYPE='.'TERRAIN';
      break;
     
      case '4' :
      $query .= ' AND TYPE='.'COMMERCE';
      break;
     
      case '5' :
      $query .= ' AND TYPE='.'GARAGE';
      break;
     
    }
     
    switch($_POST["nbpieces"])
    {
     
      case '1' :
      $query .= ' AND NBPIECE='."1";
      break;
     
      case '2' :
      $query .= ' AND NBPIECE='."2";
      break;
     
      case '3' :
      $query .= ' AND NBPIECE='."3";
      break;
     
    }
     
    switch($_POST["ville"])
    {
     
      case '1' :
      $query .= ' AND VILLE='.'BANDOL';
      break;
     
      case '2' :
      $query .= ' AND VILLE='.'CARQUEIRANNE';
      break;
     
      case '3' :
      $query .= ' AND VILLE='.'LA CRAU';
      break;
     
    }
     
    echo $query;
     
       $result = $db->query($query); 
       $num_results = $result->num_rows;
     
     switch($_POST["typerech"]){
     
      case "vente" :
      echo '<p>Nombre de ventes: '.$num_results.'</p>';
      break;
     
      case "location" :
      echo'<p>Nombre de locations: '.$num_results.'</p>';
      break;
     
      default : //ton code par défaut
      break;
    }
     
      for ($i=0; $i <$num_results; $i++)
      {
         $row = $result->fetch_assoc();
         //echo '<p><strong>'.($i+1).'. Prix: ';
    	 echo '<p><strong><br />Prix: ';
         echo htmlspecialchars(stripslashes($row['PRIX']));
         echo '</strong><br />Type: ';
         echo stripslashes($row['TYPE']);
    	 echo '</strong><br />Superficie: ';
         echo stripslashes($row['SUPERFICIE']);
         echo '<br />Ville: ';
         echo stripslashes($row['VILLE']);
         echo '<br />Référence: ';
         echo stripslashes($row['REF_APPART']);
         echo '</p>';
      }
     
    ?>
    Ma table "vente" ne possède pour l'instant que son id et la colonne TYPE.
    J'ai créé trois objets, deux appartements et une villa et je suis en train de tester l'affichage en fonction de mon premier menu déroulant sur seulement deux variables.
    Il faudrait donc q'uen selectionnant appart, je n'obtienne que deux réponses mais pour l'instant je n'obtiens rien, les enregistrements ne s'affichent pour l'instant qu'en faisant la selection entre une vente et une location

  12. #12
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Il faut que tu te mettes d'accord sur les majuscules et les minuscules parce que une fois on a VENTE après c'est vente, et pareil pour type

    Au passage mettre le type en majuscules dans la BDD je vois pas l'intérêt, ça serait plus simple en minuscules enfin bref. Et surtout tu perds énormément de place en base en faisant ça, logiquement il te faudrait une table type avec tous tes types, et ne stocker que les id correspondant dans la table vente.

    Autre erreur : tu fais du rab pour concaténer (c'est pas une erreur mais c'est inutile) et en SQL il faut entourer les chaînes par des quotes (là ça fait foirer le requête par contre).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query .= " AND TYPE='APPARTEMENT'";

  13. #13
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    lol oé j'ai pas fais du très bon boulot sur la base, je vais revoir tout ça
    pour les minuscules et majuscules ,c'est une façon de reconnaitre la variable utilisé pour mon menu déroulant et le contenu de ma base, voilou
    en tout cas merci pour l'aide

  14. #14
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par mealtone
    lol oé j'ai pas fais du très bon boulot sur la base, je vais revoir tout ça
    pour les minuscules et majuscules ,c'est une façon de reconnaitre la variable utilisé pour mon menu déroulant et le contenu de ma base, voilou
    en tout cas merci pour l'aide
    Mais ça marche ou pas maintenant

  15. #15
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    essaie de construire une requête avec un nombre variable de conditions tu te rendras très vite compte du problème
    je suis désolé, mais je ne vois pas clairement ce que tu veux dire. Aurais-tu un exemple concret STP?

    +1 avec JWhite pour revoir la structure de la base de données

    Es-tu sûr d'avoir mis la même orthographe pour 'APPARTEMENT' dans ta base de données (avec exactement la même casse)?
    J'insiste mais comme dis JWhite, les types de biens devraient être dans une table supplémentaire, comme cela tu ne te poses plus la question et tu peux générer tes listes de sélection facilement.

    EDIT : Donnes nous la structure de ta base SQl ainsi que les données que tu as rentrées dedans

  16. #16
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    je viens à peine de tester , et effectivement ça marche comme ça.
    Alors je vais le dire, JWhite, il assure un max

  17. #17
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Alors je vais le dire, JWhite, il assure un max
    héhé



    Bon pour Gérard un exemple vite fait sous forme algorithmique très porcine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    res = "SELECT * FROM table WHERE 1=1"
    TANT QUE conditions FAIRE
       res = res . " AND condition=valeur"
    FIN TANT QUE
    Sans le 1=1 tu te galères avec les AND, parce que il faut en mettre quand tu ajoutes une condition SAUF pour la première, du coup il faut se battre pour avoir une requête bien formée (avec les AND comme il faut...), alors ça se fait mais avec le 1=1 c'est quand même beaucoup plus simple (mais si tu as une solution meilleure je suis preneur )

  18. #18
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    OK Spirit ,
    compris

  19. #19
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Par défaut
    Citation Envoyé par gerald2545
    EDIT : Donnes nous la structure de ta base SQl ainsi que les données que tu as rentrées dedans
    faut que je rebosse la structure ainsi que le MCD, il est un peu foireux la, dès que c'est fait, je te montre ça, la c'est un peu trop décousu pour que vous y passiez du temps

  20. #20
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    mais si ça marche, te fatigue pas....
    et si j'étais toi,
    je commencerais par le MCD, j'implémenterais la base puis je ferais du code....pasque là tu as commencé à coder et comme ton MCD est foireux, va falloir que tu reprennes ton php....pas très optimum comme dev

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  2. [T-SQL] Colonnes d'une table appelées avec une variable
    Par Deedoo2000 dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 25/09/2006, 15h18
  3. [Sql] colonnes d'une table
    Par atanabe dans le forum Oracle
    Réponses: 3
    Dernier message: 03/08/2006, 09h08
  4. Réponses: 4
    Dernier message: 19/05/2005, 14h18
  5. Instruction SQL qui supprime une colonne d'une table
    Par tseg dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/10/2003, 20h47

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