[PHP/MySQL] accéder à un champs dans un résultat

accéder à un champs dans un résultat [PHP/MySQL] - Programmation

Marsh Posté le 07-06-2001 à 14:13:01    

encore moi héhé :))
 
voici ce que je fais :
 
 
$resultnotes = mysql_query("SELECT * FROM notes, noms_notes, materiels, membres where notes.id_nomnote = noms_notes.id_nomnote and notes.id_mat = materiels.id_mat and notes.id_mem = membres.id_mem order by materiels.id_mat", $db);
 
while( $rownotes = mysql_fetch_object($resultnotes) )
{  
  echo $rownotes->date_crea;
}
 
seulement, j'ai un champs date_crea dans ma table notes ET dans ma table membres.... comment lui imposer de ne m'afficher que l'un ou lautre ???
 
merci :))
Elcap

Reply

Marsh Posté le 07-06-2001 à 14:13:01   

Reply

Marsh Posté le 07-06-2001 à 14:17:50    

tu fais
select N.date_crea as date_notes, M.date_crea as membres_date from notes N, membre M .....

Reply

Marsh Posté le 07-06-2001 à 14:23:23    

je me demandais à quoi pouvais bien servir les alias :)))) j'ai ma réponse :)))

Reply

Marsh Posté le 07-06-2001 à 14:43:06    

ma requête fini par me sembler un tantinet compliquée non ???
 
$resultnotes = mysql_query("SELECT id_note, id_mat, id_mem, id_momnote, note, N.date_crea as date_crea_note, N.date_modif as date_modif_note, nom_note, M.date_crea as date_crea_mem, login, nom_mat  FROM notes N, noms_notes, materiels, membres M where notes.id_nomnote = noms_notes.id_nomnote and notes.id_mat = materiels.id_mat and notes.id_mem = membres.id_mem order by materiels.id_mat", $db);
 
le pb, c'est que jusque là je faisais select * et là je suis obligé de sélectionné chaque champs...  
 
en plus ça marche pas... c zarb...

Reply

Marsh Posté le 07-06-2001 à 14:54:20    

le id_mat que tu selectionnes faut préciser si c un notes.id_mat ou un materiels.id_mat
tu sélectionnes un id_momnote qui doit etre un id_nomnote (notes.id_nomnite ou noms_notes.id_nomnote ?)

 

[edit]--Message édité par __Lolo__--[/edit]

Reply

Marsh Posté le 07-06-2001 à 14:54:47    

Deja dans la clause where, utilise des alias de table plutot que le nom complet...
pis essaye un truc du genre
select table1.*, table2.* pour les tables ou t'as pas besoin de faire d'alias de champs... je suis pas sur que ca marche en MySQL mais tu peut tjrs essayer

Reply

Marsh Posté le 07-06-2001 à 14:56:42    

lolo, d'habitudes, y'a pas besoin si ?

Reply

Marsh Posté le 07-06-2001 à 14:57:08    

bah non ms la il sait pas de kel table tu parles

Reply

Marsh Posté le 07-06-2001 à 15:01:56    

__Lolo__ a écrit a écrit :

bah non ms la il sait pas de kel table tu parles




 
là par exemple :
 
SELECT * FROM materiels, sscategories, fabricants where materiels.id_fab = fabricants.id_fab and materiels.id_sscat = sscategories.id_sscat ORDER BY materiels.id_mat
 
je lui précise pas.... et pourtant ça marche... peut-être me sélectionne-t-il les deux id_sscat des deux tables puisque c'est * ???
 
alors je devrais utiliser select table1.*, table2.* (je viens de tester ça marche...)
 
Elcap :)

 

[edit]--Message édité par elcap--[/edit]

Reply

Marsh Posté le 07-06-2001 à 15:25:20    

la t'as pas de problème vu que tu a le jointure sur le champ ... donc les 2 champs contiennent la meme chose...
Pour ne jamais avoir ce genre de pb, fait comme moi : je prefixe tout les noms de champ d'un identifiant de trois lettre correspondant a la table.
ex :
table1 ->tb1_id
table2 ->tb2_id

Reply

Marsh Posté le 07-06-2001 à 15:25:20   

Reply

Marsh Posté le 07-06-2001 à 15:33:08    

je crois que je vais effectivement passer par la modif de ma base de données... mais bon, c chiant et puis je me demandais si on pouvait faire autrement..... mais c'est plus propre de pas avoir de noms de champs identiques :)

Reply

Marsh Posté le 07-06-2001 à 15:44:58    

moi on m'a dit de pas faire de select * en cours dc je fais pas ...  :D (discipliné le lolo  :sarcastic: )

Reply

Marsh Posté le 07-06-2001 à 15:56:41    

ben si tu as besoin de tout les champs.... pkoi pas faire de select ????
 
en plus moi on m'a jamais parlé d'informatique en cours :)))

Reply

Marsh Posté le 07-06-2001 à 15:59:25    

bah je fais un select ms pas * c tout  ;)  
 
le truc c que qd tu fais select *
1- ca te dis pas ce que tu recuperes qd tu te relis
2- tu recuperes la plupart du temps des trucs qui t'interesse pas

Reply

Marsh Posté le 07-06-2001 à 16:05:03    

Quand t'as besoin de tout les champs c quand même bien pratique de mettre * :)
si par contre t'as besoin de 5 champs et que le * t'en renvoi 50, c debile puisque ca bouffe du temps et le la memoire !
Et puis si tu prefixe les champs comme je le disais, tu sais ce que te renvoi * ...

Reply

Marsh Posté le 07-06-2001 à 16:06:06    

__Lolo__ a écrit a écrit :

bah je fais un select ms pas * c tout  ;)  
 
le truc c que qd tu fais select *
1- ca te dis pas ce que tu recuperes qd tu te relis
2- tu recuperes la plupart du temps des trucs qui t'interesse pas




 
tu fais donc select from ??? ou tu lui donne systématiquement les noms des champs ?
 
2/ sauf quand tu as besoin de tout :))) ce qui est souvent mon cas ces temps-ci avec mes petites tables :))

Reply

Marsh Posté le 07-06-2001 à 16:08:50    

ca je ne dis pas que c pas pratique ms c justement paske c pratique que c dangereux (comme souvent en info)
qd tu vois un select * dans un script t bien obligé d'aller voir sur la base ce que tu recuperes non ? :)  
 
enfin bon c clair que quand t'as 50 champs (ca m'est jamais arrivé c ptet pr ca :) ) c plus rapide (feignasse powa !! :D )
 
elcap > oui je lui indique les colonnes a recuperer

 

[edit]--Message édité par __Lolo__--[/edit]

Reply

Marsh Posté le 07-06-2001 à 16:15:49    

j'ai eu peur :))

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed