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 25/01/2007, 15h26   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 11
Points : 4
Points : 4
Par défaut [SQL] 2 Champs identiques

Bonjour,
Voilà, je me heurte à un petit problème...
J'ai 2 champs qui portent le même nom dans deux tables différentes.
Dans mon code, j'ai une requête qui fait appel aux 2 tables et je dois renvoyer en GET (ou POST) le champs d'une des deux tables, mais il m'envoi toujours celui de l'autre...
je sais pas si c'est trés clair
En résumé :
table1 champs1
table2 champs1

req * table1, table2

echo champs1 <-- et là il me sort le champs de la table2 alors que je veux celui de la tabl1

j'avais pensé à un truc du genre :
echo $tabl_resultat['table1.champs1']; mais ça ne fonctionne pas.

Existe-t-il un truc svp?

Merci
arfelas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 15h33   #2
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
Salut,

Il faut que tu utilises AS dans ta requête.

Exemple :

Code :
SELECT table1.nom AS nom1, table2.nom AS nom2 WHERE ...
Et ensuite tu pourras faire par exemple :
Code :
$tabl_resultat['nom1'];
__________________
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 25/01/2007, 15h33   #3
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
Code :
1
2
3
4
5
 
$query = mysql_query("SELECT table1.champs1, table2.champs1 FROM table1,table2 WHERE talbe1.id=table2.id ....");
$val = mysql_fetch_row($query) //<- si ta table ne te renvoie qu'un valeur sinon utilisation d'un while.
$val[0] correspondra à table1.champs1 
$val[1] correspondra à table2.champs1
J'espère que c'est ça que tu voulais faire.
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 15h36   #4
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
Il faut utilisé l'opérateur d'Alias de SQL : AS
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 15h45   #5
Invité de passage
 
Inscription : septembre 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 11
Points : 4
Points : 4
Merci pour vos réponses.
Le problème c'est qu'il me faut tous les champs les autres champs de mes tables. De plus derrière, j'ai un while...
Voici mon bout de code (on se moque pas, je prog encore comme sous php1 )
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$req=mysql_query("SELECT * FROM demande,technicien,chantier where date='$_GET[datedem]' && demande.idtech=technicien.id && demande.numchantier=chantier.num ORDER BY demande.num DESC");
 while ($tabl_resultat = mysql_fetch_array($req))
		{ ?>
      <tr>
        <td><div align="center">
		<?
		echo "$tabl_resultat[num]";
		?>
 
		</div></td>
voilà, il me faut le champ "num" de la table "demande" et il me sort celui de la table "chantier"...
Y a pas moyen sans être obligé de rentrer tous mes champs dans la requête?
arfelas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 15h47   #6
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
Les SELECT * sont deconseillé car gourmand en ressource et quand tu recherches sur plusieurs table amuse toi à savoir dans quel ordre arrive tes info, je te conseille de mettre le nom de tes colonnes
et pour ton tabl[num] mets tabl['num'].
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 15h57   #7
Invité de passage
 
Inscription : septembre 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 11
Points : 4
Points : 4
Citation:
Envoyé par J0r_x
Les SELECT * sont deconseillé car gourmand en ressource
Je sais, mais j'ai besoin de tous les champs de toutes les tables
arfelas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 15h58   #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
Si tu as vraiment plein plein de colonnes je crois que c'est possible de faire ça à la limite :

Code :
SELECT *, table1.nom AS nom1, table2.nom AS nom2 FROM...
Sinon pour ça :
Code :
echo "$tabl_resultat[num]";
les guillemets sont inutiles, donc le mieux c'est d'avoir ça :
Code :
echo $tabl_resultat['num'];
__________________
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 25/01/2007, 16h17   #9
Invité de passage
 
Inscription : septembre 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 11
Points : 4
Points : 4
Citation:
Envoyé par JWhite
Si tu as vraiment plein plein de colonnes je crois que c'est possible de faire ça à la limite :

Code :
SELECT *, table1.nom AS nom1, table2.nom AS nom2 FROM...
Sinon pour ça :
Code :
echo "$tabl_resultat[num]";
les guillemets sont inutiles, donc le mieux c'est d'avoir ça :
Code :
echo $tabl_resultat['num'];

Ben voilà, pas plus dur!
Et ça marche nickel!!
Merci beaucoup
arfelas 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 20h18.


 
 
 
 
Partenaires

Hébergement Web