|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 15 ![]() |
Bonjour,
Je crée actuellement une interface web en PHP avec ODBC pour exploiter les données d'une base de données ACCESS. Je bloque sur un script qui permet(tra) aux utilisateurs de rechercher les documents liés à une machine (recherche par nom de machine). J'ai deux tables : - table DOCUMENTS (id, nom de doc, date, format, thème, résumé, etc.) - table MACHINES (id, nom, type, catégorie) Je me suis basée sur un formulaire PHP-MySQL publié sur le site Comment ça marche. Voici mon code. D'après le message d'erreur que j'obtiens, l'erreur se trouve sur la ligne que j'ai mis en rouge mais je n'arrive pas à comprendre pourquoi. Code :
Bib |
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Développeur Web Inscription : octobre 2006 Messages : 251 ![]() |
il te manque 1 } juste avant ton else, ou alors tu as 2 else qui ce suive
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 15 ![]() |
Bonjour Benji07,
Merci pour ta réponse. Tu as raison, mes accolades ne sont pas claires. J'ai ajouté une accolade avant mon else mais il m'indique la même erreur Parse error: syntax error, unexpected T_ELSE et toujours au niveau du même else. Par contre, je me retrouve toujours avec deux else à la suite (le premier du script et le dernier) et je ne vois pas comment faire pour arranger cela. |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Développeur Web Inscription : octobre 2006 Messages : 251 ![]() |
tu as 2 else a la suite
|
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 15 ![]() |
C'est bon, j'ai corrigé mon code au niveau des else et des if qui ne se suivaient pas logiquement.
Mais évidemment, un autre bug est apparu une fois celui-ci résolu. J'ai apparement un problème de syntaxe dans ma requête SQL. J'ai beau chercher sur le net, je ne trouve pas d'aide (guide, tuto ?) sur comment adapter la syntaxe SQL a ODBC/Access. Du coup je teste un peu tout mais rien ne fonctionne. J'ai essayé de coller le requête générée par Access mais ça ne marche pas non plus... Pourriez-vous me dire si ma requête SQL vous parait bonne ou pas s'il vous plait ? Voila le message d'erreur : Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la clause FROM., SQL state 37000 in SQLExecDirect in C:\Program Files\xampp\htdocs\xampp\Interface\Recherche_document.php on line 23 Et voila mon code corrigé : Je précise que j'ai supprimé du script le bout de code qui permettait de vérifier si le champ était bien rempli car celui-ci ne marche pas non plus (pfff) mais je voulais justement savoir si le script fonctionnait sans cela (ce qui n'est pas le cas). Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Développeur Web Inscription : octobre 2006 Messages : 251 ![]() |
Maintenant le problème est dans ta requête SQL :
Code :
|
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 15 ![]() |
En fait je n'ai pas de ON dans le premier INNER Join car rien ne relie directement les tables documents et machines.
Je me suis mal expliquée dans mon premier post. J'ai en fait trois tables (dont une table intermédiaire ) car il s'agit d'une relation plusieurs à plusieurs : - table DOCUMENTS (id_doc, nom de doc, date, format, thème, résumé, etc.) - table MACHINES (id_machine, nom, type, catégorie) - table intermédiaire DOCUMENTS_MACHINES (id_doc, id_machine) Je pensais qu'avec la parenthèse après le premier INNER JOIN, les deux tables seraient prises en compte pour le ON. Apparement non. Comment puis-je opérer alors une requête sur trois tables ? Je ne trouve sur le net que des exemples pour mysql... |
|
|
00
|
|
|
#8 | ||
|
Membre confirmé
![]() Développeur Web Inscription : octobre 2006 Messages : 251 ![]() |
Et avec cette requete, tu obtiens ce que tu veut ou pas?
Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 15 ![]() |
Ca ne fonctionne pas non plus...
Voilà l'erreur que j'ai : Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'machines.idmachine = documents_machines.idmachine INNER JOIN documents ON documents.iddoc = documents_machines.iddoc'., SQL state 37000 in SQLExecDirect in C:\Program Files\xampp\htdocs\xampp\Interface\Recherche_document.php on line 40 J'ai essayé en commençant la requête par la table intermédiaire mais rien à faire... Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 15 ![]() |
Ca y est, j'ai enfin trouvé la solution pour créer un formulaire de recherche. Le nouveau code n'a plus grand chose à voir avec le premier... :o)
Pour ceux qui seraient intéressés, voici le script de recherche de documents par nom de machine : Code :
Bonne journée |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com