2 requettes SQL, 2 tables, 1 seul tableau PHP

Résolu/Fermé
CyPile Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 29 janvier 2009 - 29 janv. 2009 à 11:39
 dreadoune - 25 mars 2009 à 11:47
Bonjour a tous,


Voici mon probleme:


J ai 2 requettes SQL sur 2 tables differentes :

//recupere l'ID du problem par rapport a l ID de l imprimante
$query= odbc_exec( $cnx, "select IDProblem from tbl_nbPrbl where IDImprimante=$IDimprimante" );
$IDproblem = odbc_result( $query, 1);


//recupere nom,description,nb de probleme de la tbl problem
$query2= odbc_exec( $cnx, "select Nom,Description,NbProblem from tbl_problem where IDImprimante=$IDimprimante" );


J aimerai afficher maintenant le resultat de ma 2 eme requetes.... je fait un

while(odbc_fetch_row($query2))
{
$IDproblem = odbc_result( $query, 1);
$nomProblem = odbc_result( $query2, 1);
$description = odbc_result( $query2, 2);
$NbProblem = odbc_result( $query2, 3);




Le probleme est que ma variable $IDproblem ne contient pas que un seul champ... je devrai faire une boucle pour que celle ci affiche tt les entrees mais si je fait une boucle avant ma deusieme requetes celle-ci sera elle meme "boucler" par la premiere boucle...

je ne sais pas du tout de quel cote chercher....


quelqu un aurait-il une idee ??


Merci beaucoup!
A voir également:

14 réponses

Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
29 janv. 2009 à 13:28
Ah ok ^^

Bon alors essaye ça comme requete :

select t1.IDProblem, t2.Nom, t2.Description, t2.NbProblem FROM tbl_nbPrbl t1 INNER JOIN tbl_problem t2 ON t1.IDProblem = t2.IDprbl WHERE IDImprimante=$IDimprimante"

Ca devrait fonctionner si IDprbl est une clé étrangère de IDProblem ! =)
3
CyPile Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 29 janvier 2009 1
29 janv. 2009 à 12:23
Oui elles ont un lien par IDProblem...


Ma syntaxe est fausse ?? parce que la il me dit que la syntax jou pas....
1
CyPile Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 29 janvier 2009 1
29 janv. 2009 à 12:27
voila le message il a un peu changer...



Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] At most one record can be returned by this subquery., SQL state S1000 in SQLExecDirect in C:\wamp\www\ImprimanteProblem\resume.php on line 43
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
29 janv. 2009 à 13:59
Ah oui pardon ... Remplace IDImprimante par t1.IDImprimante

Le problème est qu'il trouvait IDImprimante dans les deux tables, il fallait donc lui préciser dans laquelle il devait le prendre.

J'ai mis t1 mais tu devrais pouvoir mettre t2 et avoir le même résultat je pense ...

Sinon pour la clé primaire, le principe reste le même ^^

EDIT : par curiosité tu utilises quel SGBD?
1
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
29 janv. 2009 à 14:20
Ooki bah c'est cool !

Bon courage pour la suite ! :)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
29 janv. 2009 à 12:05
Tu as essayé quelque chose du genre :

while(odbc_fetch_row($query2) or odbc_fetch_row($query2)) {


Je n'ai pas testé mais bon on ne sait jamais ^^
Si ça ne marche pas essaie avec and à la place de or (qui ne tente rien n'a rien ;) ^^ )
0
CyPile Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 29 janvier 2009 1
29 janv. 2009 à 12:15
Merci de ta reponse!


Malheureusement il aime pas du tout... lol


Je devrai peu etre plutot me diriger sur faire une seul requette... mais en faisant tout simplement


$query2= odbc_exec( $cnx, "select Nom,Description,NbProblem from tbl_problem where IDImprimante= ("select IDProblem from tbl_nbPrbl where IDImprimante=$IDimprimante") " );



Mais il aime pas non plus... il aime pas grand chose d ailleur..... lOol
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
29 janv. 2009 à 12:19
Une question : est ce que tes deux tables ont un lien entre elles (ou toutes les deux liées à la même table ^^ )?

Parce que si c'est le cas, une requete suffira.

Quelques jointures et ça sera bon ! :)
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
29 janv. 2009 à 12:20
Fait tout en une seule requete !!!!

Et tu verras, tu te complikera bcp moins la vie !!!
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
29 janv. 2009 à 12:27
Ta requete devrait alors donner quelque chose du genre :

"select t1.IDProblem, t2.Nom, t2.Description, t2.NbProblem FROM tbl_nbPrbl t1 INNER JOIN tbl_problem ON t1.IDImprimante = t2.IDImprimante WHERE IDImprimante=$IDimprimante"


Ce que je ne comprends pas, ta table tbl_problem contient un IDImprimante, pourquoi ne pas afficher celui-là simplement?
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
29 janv. 2009 à 12:27
C'est ce que je t'ai di .. Vaut mieux faire une seule requete .. Et te complique pas à choisir ce que tu veux selectionner .. Fait un select * et on en parle plus lool !!!

Et ensuite tu récupere toute les données ke ta besoin ..

Compri ??
0
CyPile Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 29 janvier 2009 1
29 janv. 2009 à 12:33
Je me suis tromper la requete est comme ceci :


"select Nom,Description,NbProblem from tbl_problem where IDprbl=(select IDProblem from tbl_nbPrbl where IDImprimante=$IDimprimante)"


Non il contient pas IDImprimante... sa sera trop facile sinon lOol
0
CyPile Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 29 janvier 2009 1
29 janv. 2009 à 13:54
Merci de ta reponse!


c est le contraire en fait... la cle primaire est IDprbl... et non IDProblem...


sa me donne l erreur suivante...

The specified field 'IDImprimante' could refer to more than one table listed in the FROM clause of your SQL statement., SQL state S1000 in SQLExecDirect in C:\wamp\www\ImprimanteProblem\resume.php on line 47
0
CyPile Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 29 janvier 2009 1
29 janv. 2009 à 14:07
Sa marche!!!!!!


tu as assurer merci... j ai appris c est truc mais c etai y a bien lgt lOol..


J ai honte... c est une base Access.... (bon en mm temps ya pas plus de 20 entrees... )


Merci beaucoup en tt cas... et bonne apre midi
0
Salut
J'ai un peu pres le meme probleme mais ca ne fontionne pas chez moi

2 tables : contacts / prospection
cle primaire contacts = id_clients
cle primaire prospection =id_prospects

j'ai besoin de mettre à jour les 2 tables en meme temps depuis les données d'un formulaire que je recuperes.
id = Request.QueryString("id")


la requête :

sql = "SELECT contacts.id_clients, prospection.id_clients FROM contacts INNER JOIN prospection ON contacts.id_clients = prospection.id_clients WHERE id_clients=" & id"


erreur retournée :

Unterminated string constant

/test/prospection/maj-contactsOk.asp, line 42

sql = "SELECT contacts.id_clients, prospection.id_clients FROM contacts INNER JOIN prospection ON contacts.id_clients = prospection.id_clients WHERE id_clients=" & id"
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------^


Si kkun a une idee Svp ?
merci
0