Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/07/2006, 13h38   #1
Membre à l'essai
 
Inscription : novembre 2004
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 144
Points : 24
Points : 24
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.
mealtone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 13h41   #2
Modérateur
 
Avatar de Cybher
 
Homme Michel
Consultant informatique
Inscription : mai 2005
Messages : 3 006
Détails du profil
Informations personnelles :
Nom : Homme Michel
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : mai 2005
Messages : 3 006
Points : 4 039
Points : 4 039
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
Cybher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 13h42   #3
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Bah type par exemple
Code :
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.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 13h48   #4
Membre à l'essai
 
Inscription : novembre 2004
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 144
Points : 24
Points : 24
Citation:
Envoyé par JWhite
Bah type par exemple
Code :
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.

Citation:
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
mealtone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 13h55   #5
Modérateur
 
Avatar de Cybher
 
Homme Michel
Consultant informatique
Inscription : mai 2005
Messages : 3 006
Détails du profil
Informations personnelles :
Nom : Homme Michel
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : mai 2005
Messages : 3 006
Points : 4 039
Points : 4 039
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
Cybher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h05   #6
Membre à l'essai
 
Inscription : novembre 2004
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 144
Points : 24
Points : 24
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.
mealtone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h10   #7
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
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
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h11   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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 :
SELECT * FROM VENTE WHERE 1=1 AND type='APPARTEMENT'
dans phpmyadmin tu as des résultats ou pas ?
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h16   #9
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
tu pourrais être plus explicite STP sur la signification de
Citation:
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 ...
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h19   #10
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h33   #11
Membre à l'essai
 
Inscription : novembre 2004
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 144
Points : 24
Points : 24
Voici mon code:
Code :
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
mealtone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h37   #12
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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 :
$query .= " AND TYPE='APPARTEMENT'";
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h48   #13
Membre à l'essai
 
Inscription : novembre 2004
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 144
Points : 24
Points : 24
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
mealtone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h56   #14
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 15h00   #15
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
Citation:
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
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 15h02   #16
Membre à l'essai
 
Inscription : novembre 2004
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 144
Points : 24
Points : 24
je viens à peine de tester , et effectivement ça marche comme ça.
Alors je vais le dire, JWhite, il assure un max
mealtone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 15h29   #17
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
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 :
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 )
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 16h19   #18
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
OK Spirit ,
compris
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 16h51   #19
Membre à l'essai
 
Inscription : novembre 2004
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 144
Points : 24
Points : 24
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
mealtone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 16h59   #20
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
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
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h06.


 
 
 
 
Partenaires

Hébergement Web