Récupération de variable

ViPHP
ViPHP | 2291 Messages

29 août 2006, 16:59

- Teste ta requête avec phpMyAdmin
- Affiche le résultat de mysql_num_rows()
- Liste les colonnes que tu veux plutôt que '*'
Ceci dit j'ai modifier j'ai plus d'erreur mais cela ne fonctionne quand même pas

"SELECT * FROM technicien JOIN prestation_tvc_lux ON prestation_tvc_lux.technicien 
= technicien.technicien AND technicien.technicien = '".$_GET['technicien'].="'";
Merci pour ta patience :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 août 2006, 17:08

Oui, je t'ai dit de lister et alors. Aucun rapport avec le problème.

Il vaut mieux lister explicitement les colonnes que l'on veut car cela évite d'en ramener inutilement si on a pas besoin de tout, et c'est plus clair à la relecture (on sait ce qu'elle fait, si elle ramène seulement un identifiant ou plusieurs infos)

Maintenant que tu as listé, c'est la même chose. Si tu utilises la colonne X, et qu'elle est présente dans plusieurs tables utilisées dans la requête, il faut à chaque fois préciser quelle table est utilisée. Que ce soit dans le SELECT, le FROM, le JOIn etc etc.

(c'est pour ça que certains précisent tjrs quelle table est utilisée, même quand il n'y a pas risque de doublon)

DONC, cela donne ceci :
SELECT technicien.technicien # <=== ICI ON PRECISE LA TABLE
, ident 
FROM technicien 
JOIN prestation_tvc_lux ON prestation_tvc_lux.technicien  
= technicien.technicien 
AND technicien.technicien = '".$_GET['technicien'].="'";
Comme tu ne précisais pas dans quelle table il devait prendre la colonne "technicien" du SELECT, il te mettait ce message d'erreur.

Est-ce que tu as vraiment compris le problème maintenant ?

Tu peux raccourcir en utilisant un alias (le AS) :
SELECT t.technicien, ident 
FROM technicien AS t
JOIN prestation_tvc_lux p_t_l ON p_t_l.technicien  = t.technicien 
AND t.technicien = N

ViPHP
ViPHP | 2291 Messages

29 août 2006, 17:40

Oui, je t'ai dit de lister et alors. Aucun rapport avec le problème.

Il vaut mieux lister explicitement les colonnes que l'on veut car cela évite d'en ramener inutilement si on a pas besoin de tout, et c'est plus clair à la relecture (on sait ce qu'elle fait, si elle ramène seulement un identifiant ou plusieurs infos)

Maintenant que tu as listé, c'est la même chose. Si tu utilises la colonne X, et qu'elle est présente dans plusieurs tables utilisées dans la requête, il faut à chaque fois préciser quelle table est utilisée. Que ce soit dans le SELECT, le FROM, le JOIn etc etc.

(c'est pour ça que certains précisent tjrs quelle table est utilisée, même quand il n'y a pas risque de doublon)

DONC, cela donne ceci :
SELECT technicien.technicien # <=== ICI ON PRECISE LA TABLE
, ident 
FROM technicien 
JOIN prestation_tvc_lux ON prestation_tvc_lux.technicien  
= technicien.technicien 
AND technicien.technicien = '".$_GET['technicien'].="'";
Comme tu ne précisais pas dans quelle table il devait prendre la colonne "technicien" du SELECT, il te mettait ce message d'erreur.

Est-ce que tu as vraiment compris le problème maintenant ?

Tu peux raccourcir en utilisant un alias (le AS) :
SELECT t.technicien, ident 
FROM technicien AS t
JOIN prestation_tvc_lux p_t_l ON p_t_l.technicien  = t.technicien 
AND t.technicien = N
:shock: Oui j'ai compris tes explications MERCI. :wink:
Je pensais que le select allais vérifier automatiquement les champs dans les TABLES indiquer (tout seul comme un grand :wink: ).


Merci mais cela ne change rien et ne fonctionne toujours pas
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 août 2006, 22:43

Merci mais cela ne change rien et ne fonctionne toujours pas
Depuis le temps que tu poses des questions, tu devrais savoir que ce genre de message est strictement INUTILE !

Qu'est-ce qui ne marche pas ? Aucun résultat ? Message d'erreur ?

Plus d'infos !!!!

ViPHP
ViPHP | 2291 Messages

29 août 2006, 23:31

Merci mais cela ne change rien et ne fonctionne toujours pas
Depuis le temps que tu poses des questions, tu devrais savoir que ce genre de message est strictement INUTILE !

Qu'est-ce qui ne marche pas ? Aucun résultat ? Message d'erreur ?

Plus d'infos !!!!
Oui effectivement c'étais pas constructif sorry :oops:
Je n'ai aucun résultat, et une chose me chipotte ceci :
echo $row['technicien'];
Ci je tape n'importe quoi je n'ai pas de message d'erreur donc suivant une certaine logique il n'arrive pas jusque là ? :?

Bingo
J'ai trouvé l'erreur venait de mes TABLES le champ technicien comporte le nom inscrit comme ceci Gillet L (je précise que c'est la même chose dans les deux champs de TABLE) puisque de toute façon il proviennent du même endroit (le menu déroulant).
En modifiant comme ceci Gillet cela fonctionne :?:
Pourquoi il ne veut pas prendre Gillet L et accepte Gillet

Et trés sincèrement merci pour ton aide et surtout ta patience :roll:
Modifié en dernier par dunbar le 30 août 2006, 00:14, modifié 1 fois.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2144 Messages

30 août 2006, 00:12

oui, mais tu ne donnes pas beaucoup d'informations.
Comme je te l'ai déja dis, le débuggage c'est avant tout un travail d'analyse à partir des informations dont on dispose, sans informations, pas de débuggage.

ViPHP
ViPHP | 2291 Messages

30 août 2006, 00:13

oui, mais tu ne donnes pas beaucoup d'informations.
Comme je te l'ai déja dis, le débuggage c'est avant tout un travail d'analyse à partir des informations dont on dispose, sans informations, pas de débuggage.
Je veux bien de quoi a tu besoin tout mon code ce trouve déjà dans le poste ?
Quand aux travail d'analyse j'ai suivi tes conseils (sur d'autres postes) et c'est en remarquant qu'il ne tenais pas compte de ceci :
echo $row["technicien"];
Que j'ai eu l'idée de vérifier mes TABLE bon d'accord c'est probablement pas trés logique pour des pros mais bon on se débrouille comme ont peu :wink:
Modifié en dernier par dunbar le 30 août 2006, 00:21, modifié 1 fois.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2144 Messages

30 août 2006, 00:20

Ok, mais tu en es où maintenant ?
ps: postes plutôt des nouveaux messages plutôt qu'éditer les anciens, sinon on ne pense pas à relire tes anciens messages et on ne voit pas les nouvelles informations que tu nous donnes.

ViPHP
ViPHP | 2291 Messages

30 août 2006, 00:30

Ok, mais tu en es où maintenant ?
ps: postes plutôt des nouveaux messages plutôt qu'éditer les anciens, sinon on ne pense pas à relire tes anciens messages et on ne voit pas les nouvelles informations que tu nous donnes.
Concernant les poste ok d'accord et effectivement tu à raison :cry:
Quand à mon erreur je pensait simplement qu'il reprenait le champs complet de la TABLE, et je ne comprend d'ailleur toujours pas pourquoi il ne reprend pas le champs complet ? pourquoi il prend Gillet et pas Gillet L.
J'en suis que je récupère enfin le champ que je désire correspondant au lien, mais je voudrais qu'il reprennent tout le champ complet :?:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2144 Messages

30 août 2006, 08:52

Attends, dans ta table intervention, tu stockes le nom du technicien ou bien son id auto-incrémenté ? tu ne devrais pas utiliser le nom du technicien mais bien son id, et le faire passer par le lien.

ViPHP
ViPHP | 2291 Messages

30 août 2006, 13:06

Attends, dans ta table intervention, tu stockes le nom du technicien ou bien son id auto-incrémenté ? tu ne devrais pas utiliser le nom du technicien mais bien son id, et le faire passer par le lien.
Je stock le nom du techncien, mais je ne comprend pas si je demande le techncien il n'accepte que Gillet et pas Gillet L par contre si je prend un autre champ par exemple ident la il accepte (par exemple) Test Gillet Techncien Là je :boire4: je ne comprend vraiment pas pourquoi :?:

Merci :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2144 Messages

30 août 2006, 13:17

Je ne comprends pas pourquoi tu ne veux pas stocker l'id du technicien dans la table intervention, plutôt que le nom ?? Ta solution actuelle n'est pas normalisée, induit une redondance d'information(base de donnée + lourde, problème de cohérence des données, etc)

table intervention
id
idTechnicien
date
etc...

table technicien
id
nom
prenom

De même, je ne pense pas que ça soit très judicieux de stocker le nom et le prénom dans le même champ.

ViPHP
ViPHP | 2291 Messages

30 août 2006, 13:35

Je ne comprends pas pourquoi tu ne veux pas stocker l'id du technicien dans la table intervention, plutôt que le nom ?? Ta solution actuelle n'est pas normalisée, induit une redondance d'information(base de donnée + lourde, problème de cohérence des données, etc)

table intervention
id
idTechnicien
date
etc...

table technicien
id
nom
prenom

De même, je ne pense pas que ça soit très judicieux de stocker le nom et le prénom dans le même champ.
Ok je vais travailler dans la direction que tu me conseille, quand à savoir pq il y a le nom et prénom dans le même champ la réponse est simple quand le technicien remplie le formulaire il choisi sont nom à partir dans menu déroulant (ca permet d'avoir toujours le nom écrit de la même manière) par exemple.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 2144 Messages

30 août 2006, 13:39

Oui, mais en ne mémorisant que l'id, tu t'affranchis complêtement de ces problèmes: une liste déroulante avec les différents technicien et comme attribut value l'id du technicien permet d'avoir directement l'id du technicien pour l'insertion dans la base de donnée :

ViPHP
ViPHP | 2291 Messages

30 août 2006, 13:43

Oui, mais en ne mémorisant que l'id, tu t'affranchis complêtement de ces problèmes: une liste déroulante avec les différents technicien et comme attribut value l'id du technicien permet d'avoir directement l'id du technicien pour l'insertion dans la base de donnée :
Bin oui evidamment :oops: , voilà la différence entre ceux qui savent et ceux qui ne savent pas (pas encore :wink: ) merci pour cette idée je vais faire comme tu me conseille.

Merci :D
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.