SQL/PHP et Base de données Access

SQL/PHP et Base de données Access - SQL/NoSQL - Programmation

Marsh Posté le 03-06-2005 à 16:24:47    

Bonjour a tous,
j'aimerais développer un site de consultation d'une base de données concernant la location de logements. Cette base de données est au format Access.
 
Comment se connecter en PHP a une base de données Access ?
J'aimerais, je le précise, que cela marche en utilisant Easy PHP, je ne suis en effet pas dans la capacité de travailler sur serveur web pour mes tests de requêtes etc...
 
Voilà.
Je vous avouerai que j'ai essayé de nombreuses choses et je n'arrive pas à m'en sortir.
Il faut à priori utiliser la fonction odbc_connect mais je ne sais pas avec quels parametres.


Message édité par Mythrandil le 03-06-2005 à 17:37:06
Reply

Marsh Posté le 03-06-2005 à 16:24:47   

Reply

Marsh Posté le 03-06-2005 à 16:26:09    

il faut faire un driver odbc aussi regarde dans outils d administration dasn le panneau de configuration

Reply

Marsh Posté le 03-06-2005 à 16:30:18    

J'ai installé ma base de données comme dit sur de nombreus sites (mis en place le driver via outils d'administration)
 
Il semblerait qu'en modifiant deux trois trucs, j'ai pu me connecter a ma base.
 
Cependant, lors de l'exécution d'une requete, j'ai ce message d'erreur.
 
Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 7 attendu., SQL state 07001 in SQLExecDirect in c:\program files\easyphp1-8\www\logement\results.php on line 149

Reply

Marsh Posté le 03-06-2005 à 16:31:36    

Bah l'erreur est claire pourtant, visiblement il manque des paramètres.

Reply

Marsh Posté le 03-06-2005 à 16:31:37    

arf j'ai deja eu cette erreur mais pour un driver excel en faite j'avais mal ecrire ma requete les champs ete faux .... regarde la tienne sinon je ne sais pas

Reply

Marsh Posté le 03-06-2005 à 16:31:49    

Donnes nous le code s'il te plait, nous ne sommes pas devins.  
 
On pourra peut-etre t'aider mieux ^^


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 03-06-2005 à 16:35:38    

Je vais pas donner le code pour une raison simple ...
 
J'ai testé avec une requete toute simple "Select * from table" et la ca marche ... donc comme dit dedefou, ma requete est pourrie ^^

Reply

Marsh Posté le 03-06-2005 à 16:36:47    

Mythrandil a écrit :

Je vais pas donner le code pour une raison simple ...
 
J'ai testé avec une requete toute simple "Select * from table" et la ca marche ... donc comme dit dedefou, ma requete est pourrie ^^


 
Tu veux pas qu'on t'aide? :??:


Message édité par cesarr89 le 03-06-2005 à 16:36:58
Reply

Marsh Posté le 03-06-2005 à 16:41:40    

En gros, le probleme principal que j'ai est celui ci. Les noms de colonnes de ma BD sont mal foutus.
Je m'explique, tous contiennent des espaces et/ou des accents, ce qui fait que c'est compliqué pour une requete.
 
Ensuite, je viens de comprendre pourquoi l'erreur demandait 7 parametres, c'est à cause de ce que j'ai cité précédement, ayant du mal taper mes requetes (a cause de ces problemes d'espacement probablement) il me demande des parametres.
 
Voila tout.  
Savez vous donc comment gérer les noms de colonnes avec espace dans une BD Access ?

Reply

Marsh Posté le 03-06-2005 à 16:43:38    

Pourquoi tu as mis des accents et des espaces?

Reply

Marsh Posté le 03-06-2005 à 16:43:38   

Reply

Marsh Posté le 03-06-2005 à 16:43:59    

C'est pas moi ... je récupère la table ainsi et ne peux la modifier.

Reply

Marsh Posté le 03-06-2005 à 16:45:10    

Tu mets un alias dessus.

Reply

Marsh Posté le 03-06-2005 à 16:48:06    

Bonne idée ... comment exactement ?

Reply

Marsh Posté le 03-06-2005 à 16:49:06    

Alors là par contre je sais pas

Reply

Marsh Posté le 03-06-2005 à 16:51:38    

mets le nom des tes tables dans des []

Reply

Marsh Posté le 03-06-2005 à 16:57:38    

merci betsamee, c'est ce qui me manquait.
 
Par contre, j'ai quelques problèmes à résoudre avec les jointures et je vais donc m'y atteler de ce pas.
 
Merci à tous pour vos conseils.

Reply

Marsh Posté le 03-06-2005 à 16:59:18    

De rien.

Reply

Marsh Posté le 03-06-2005 à 17:06:13    

Bon en fait j'ai encore une erreur .... et je vous avoue que je comprend difficilement ou est ce qu'elle se trouve la.
 
Je prend ma requete générée par mon script PHP :

Code :
  1. select nom, prenom,[rue pro],[ville pro],[codepost pro],tel_res, tel_bur, rue, ville, cpostal,[Numéro log], [Numéro det] from adr_logement, proprietaire, detail where proprietaire.[Numéro prop]=adr_logement.Proprietaire_Numéro and adr_logement.[Numéro log]= Detail.Adr_logement_Numéro and Detail.Prix<1000 and Detail.Fréquence="Mois" and grandeur="1 1/2" and Detail.[Type de Chambre]="Avec permis de cuisine" and Detail.[Durée du bail]="10 mois";


 
Je l'exécute donc avec la fonction odbc_do :

Code :
  1. $result = odbc_do($conn,$req_select_proprio_et_adresse);


 
$conn étant ma connexion vers la BD déclarée par :

Code :
  1. $conn = odbc_connect($base_de_donnees,$user,$password);


 
Cela me retourne l'erreur :

Code :
  1. Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 4 attendu., SQL state 07001 in SQLExecDirect in c:\program files\easyphp1-8\www\logement\results.php on line 150


 
Je copie colle ma requete, je l'exécute sous Access. Aucune erreur.
Quels sont les deux paramètres manquant ? Comment doit on paramettre la fonction odbc_do ?

Reply

Marsh Posté le 03-06-2005 à 17:08:52    

C'est quoi les truc entre [] dans le select? je dis bien dans le select, pas dans le from.
c'est quoi ca :  Detail.[Durée du bail]="10 mois" ??
Mettre une durée en Char ?

Reply

Marsh Posté le 03-06-2005 à 17:09:08    

Reply

Marsh Posté le 03-06-2005 à 17:10:42    

cesarr89 a écrit :

C'est quoi les truc entre [] dans le select?


 
Des données que je souhaites récupérer dans la table dont le nom contient des espaces. (voir messages ci dessus)
 

cesarr89 a écrit :


c'est quoi ca :  Detail.[Durée du bail]="10 mois" ??
Mettre une durée en Char ?


 
Je n'ai pas créé cette base de données qui, il faut le dire, est completement bancale. Si la durée est en char, c'est qu'elle peut être de 10 mois ou de 10 - 12 mois ou négociable, etc...

Reply

Marsh Posté le 03-06-2005 à 17:12:27    

Mythrandil a écrit :

Des données que je souhaites récupérer dans la table dont le nom contient des espaces. (voir messages ci dessus)


 On a le droit de faire select TABLE from .... ???

Mythrandil a écrit :


Je n'ai pas créé cette base de données qui, il faut le dire, est completement bancale. Si la durée est en char, c'est qu'elle peut être de 10 mois ou de 10 - 12 mois ou négociable, etc...


Mouais  

Reply

Marsh Posté le 03-06-2005 à 17:13:38    

cesarr89 a écrit :

On a le droit de faire select TABLE from .... ???


 
Je me suis mal exprimé... Nom de colonnes évidemment.

Reply

Marsh Posté le 03-06-2005 à 17:14:53    

Ah ok, putain, ils pouvaient pas mettre des '_' plutôt que des espaces?
Bah sinon dsl je sais pas d'où ca vient

Reply

Marsh Posté le 03-06-2005 à 17:18:14    

Dis ça au tocard qui a créé cette table aux jointures mal faites, aux noms de colonnes fantaisistes et à la structure mal définie...

Reply

Marsh Posté le 03-06-2005 à 17:24:38    

Comme l'erreur vient je pense des jointures et du nom qui leur a été donné dans la base, j'ai tenté une variante pour ma requete.

Code :
  1. select nom, prenom,[rue pro],[ville pro],[codepost pro],tel_res, tel_bur, rue, ville, cpostal,[Numéro log], [Numéro det] from proprietaire INNER JOIN (Adr_logement INNER JOIN Detail ON Adr_logement.[Numéro log] = Detail.Adr_logement_Numéro) ON Proprietaire.[Numéro prop] = Adr_logement.Proprietaire_Numéro where Detail.Prix<1000 and Detail.Fréquence="Mois" and grandeur="1 1/2" and Detail.[Type de Chambre]="Avec permis de cuisine" and Detail.[Durée du bail]="10 mois";


 
Cela me retourne toujours la même erreur :
 

Code :
  1. Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 4 attendu., SQL state 07001 in SQLExecDirect in c:\program files\easyphp1-8\www\logement\results.php on line 151


 
Ci joint le schéma relationnel de la table ça peut aider.
http://thoraden.free.fr/loge/table.jpg


Message édité par Mythrandil le 03-06-2005 à 17:36:18
Reply

Marsh Posté le 03-06-2005 à 19:41:17    

Remplace les " par des ' et ça devrait marcher.
 
Sinon, le [], c'est la façon de Microsoft d'échapper le nom des éléments non conformes au SQL. Sous Oracle, ce serait des ".

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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