Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/06/2007, 09h40   #1
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
Par défaut Accès à une base Access avec PHP

voici j'essaye de faire une connection a une base Access via PHP

voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
// Sélection du driver et de la base de données
 
$DSNLess='DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=C:\wamp\www\Administrateur\donnees.mdb';
 
// Connexion au DSN nouvellement créé
 
$cnx=@odbc_connect($DSNLess,'','');
 
if(!$cnx)
{
// Si erreur de connexion
echo "Impossible de se connecter";
}
 
$id = $_GET["ident"];
 
$sql = "SELECT * FROM ParcelNet WHERE ident = ".$id;
 
$requete = odbc_do($cnx,$sql);
 
$valeur = odbc_exec($cnx,$requete);
 
$count = 0;
echo'<table border="1"><tbody>
     <tr>';
for ($j=1; $j<odbc_num_fields($valeur)+1;$j++)
{
	echo '<td align="center"><strong>'.odbc_field_name($result,$j).'</strong></td>';
	$count++;
}
echo'</tr>';
$resultnumber = 0;
while(odbc_fetch_row($result))
{
	echo '<tr>';
	for ($i = 1; $i<$count+1;$i++)
	{
		if(odbc_result($result,$i))
			$data = odbc_result($result,$i);
		else
			$data = "-";
		echo '<td align="center">'.$data."</td>";
	}
	echo '</tr>';
	$resultnumber ++;
}
 
echo'</tbody></table>';
 
odbc_close ($cnx);
 
?>
ce code me fournis des erreurs :

Citation:
Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'ident = AB 1'., SQL state 37000 in SQLExecDirect in C:\wamp\www\Administrateur\requete.php on line 20

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access]Utilisation non valide de pointeur null , SQL state S1009 in SQLExecDirect in C:\wamp\www\Administrateur\requete.php on line 22

Warning: odbc_num_fields(): supplied argument is not a valid ODBC result resource in C:\wamp\www\Administrateur\requete.php on line 27

Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in C:\wamp\www\Administrateur\requete.php on line 34
cela viendrais t il de ma création de DSN?
car je veux pouvoir créer un DSN automatiquement sans que l'utilisateur ai besoin de le faire

merci d'avance de votre aide
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 09h42   #2
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
a priori ton $id n'est pas un chiffre mais une chaine de char.
Il faut donc la mettre entre guillemets dans ta requete.
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h02   #3
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
ça m'affiche toujour la même erreur

j'ai corrigé ça comme ligne :

Code :
$sql = "SELECT * FROM ParcelNet WHERE ident = $id";
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h03   #4
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
En fait c'est plutot comme cela que je le voyais.
Code :
$sql = "SELECT * FROM ParcelNet WHERE ident = '$id'";
[/QUOTE]
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h26   #5
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
merci la premiere erreur c'est enlever
maintenant il reste celle ci :

Citation:
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Instruction SQL non valide; 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' attendus., SQL state 37000 in SQLExecDirect in C:\wamp\www\Administrateur\requete.php on line 22
je vois pas du tout pourquoi ma requete serait non valide?
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h33   #6
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
Je ne connais rien a ODBC mais a priori c'est ou odbc_do ou odbc_exec et pas en s'enchainant
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h49   #7
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
ouai j'ai vu mon erreur
c'était une erreur de frappe d'ailleur
j'executeai deux fois ma requete

allez plus que 2 erreurs (en attendant les erreurs d'execution ^^ )

Citation:
Warning: odbc_num_fields(): supplied argument is not a valid ODBC result resource in C:\wamp\www\AdministrateurP\requete.php on line 26


Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in C:\wamp\www\Administrateur\requete.php on line 33
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h52   #8
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
va voir la doc pour comprendre mais je pense que tu ne lui donne pas le bon parametre (ressource de l'execution de la requete)
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h59   #9
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
bon je poste ma correction

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
// Sélection du driver et de la base de données
 
$DSNLess='DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=C:\wamp\www\Administrateur\donnees.mdb';
 
// Connexion au DSN nouvellement créé
 
$cnx=odbc_connect($DSNLess,'','');
 
if(!$cnx)
{
// Si erreur de connexion
echo "Impossible de se connecter";
}
 
$id = $_GET["ident"];
 
$sql = "SELECT * FROM ParcelNet WHERE ident = '$id'";
 
$valeur = odbc_exec($cnx,$sql);
$result = odbc_do ($cnx,$sql);
 
$count = 0;
echo'<table border="1"><tbody>
     <tr>';
for ($j=1; $j<odbc_num_fields($valeur)+1;$j++)
{
	echo '<td align="center"><strong>'.odbc_field_name($result,$j).'</strong></td>';
	$count++;
}
echo'</tr>';
$resultnumber = 0;
while(odbc_fetch_row($result))
{
	echo '<tr>';
	for ($i = 1; $i<$count+1;$i++)
	{
		if(odbc_result($result,$i))
			$data = odbc_result($result,$i);
		else
			$data = "-";
		echo '<td align="center">'.$data."</td>";
	}
	echo '</tr>';
	$resultnumber ++;
}
 
echo'</tbody></table>';
 
odbc_close ($cnx);
 
?>
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h18   #10
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
bon apres reflection
j'ai un petit problème
donc je voudrais faire une requete SQL du type :

SELECT NOM_VILLE FROM VILLE WHERE ID = '$id'

vu que le nom de la ville et l'id apparait plusieur fois il m'indique plusieur fois le nom de la ville comment faire pour le faire apparaitre qu'une seul fois?

j'ai rechangé la méthode de connection a la base et de consultation mais maintenant pour une ville il m'affiche qu'un seul nom de commune (je voudrais qu'il me les affiche toutes )

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$base="C:\wamp\www\Administrateur\donnees.mdb"; 
$table="ParcelNet"; 
$id = $_GET["ident"];
if (!$conn = new COM("ADODB.Connection"))                        // Declaration Objet 
     exit("impossible de créer la connection ADODB<br />"); 
 
$conn->open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$base");     // ouverture du fichier 
 
$requete = "SELECT * FROM $table WHERE ident = '$id'";     // Selectionne une table 
$resultat = $conn->execute($requete);     // execute la requete 
 
$col2 = $resultat->Fields(1); 
$col3 = $resultat->Fields(2);
$col4 = $resultat->Fields(4);
$col10 = $resultat->Fields(10);
$col13 = $resultat->Fields(13);
echo "<table>"; 
 echo "<tr>"; 
 echo "<td>$col2->value </td>"; 
 echo "</tr>"; 
 echo "<tr>";
 echo "<td>$col3->value </td>"; 
 echo "</tr>"; 
  echo "<tr>";
 echo "<td>$col4->value </td>"; 
 echo "</tr>";
  echo "<tr>";
 echo "<td>$col10->value </td>"; 
 echo "</tr>";
  echo "<tr>";
 echo "<td>$col13->value </td>"; 
 echo "</tr>";
echo "</table>"; 
$resultat->Close();                        // ferme la requete 
$conn->Close();
je suis novice dans le PHP/SGBD

a la fin je voudrais :une page du style
VILLE : LYON
POPULATION : ....
COMMUNE : ...., ...., ....

merci d'avance pour votre aide
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h35.


 
 
 
 
Partenaires

Hébergement Web