Connexion base de données access en php via odbc et exploitation de requête, récupérer une image dans une base de données

Soyez le premier à donner votre avis sur cette source.

Snippet vu 41 581 fois - Téléchargée 28 fois

Contenu du snippet

Ce code permet de se connecter à une base de données sous Access en php grâce au lien ODBC.
Il permet aussi d'exécuter une requête qui récupére les données dans les champs d'une table et l'affiche dans la
page php ainsi que l'affichage du nom de la table.
La récupération et l'affichage des images est aussi montré et expliqué.

Il faut créer un identifiant DSN pour la table:
Pour cela allez dans : Panneau de config -> (Outils admin pour xp)source de données ODBC -> source de donnée système
ajouter -> pilote Microsoft Access ...(mdb) -> mettre le nom de votre identifiant DSN (dans source de données) puis
sélectionner votre base de données.

Source / Exemple :


<html>
<head>
       <title>Title here!</title>
</head>
<body>
 <?php
 //connexion à une base de données ACCESS
$bd="votre_base_de_données"; // identifiant DSN
$user="root"; // login
$password=""; // password
$cnx = odbc_connect( $bd , $user, $password );
if($cnx){ 

$tablelist = odbc_tables($cnx);
while (odbc_fetch_row($tablelist)) //tant que c'est pas la fin de la table
{
	if (odbc_result($tablelist, 3) == "TABLE") // Si indicateur TABLE
		echo odbc_result($tablelist, 3); // Affiche nom de la TABLE
}

$valeur= odbc_exec( $cnx, "select champ1,champ2,champphoto3 from TABLE" ); //requête
while(odbc_fetch_row($valeur)) //tant que c'est pas la fin de la table
{
   echo odbc_result( $valeur, 1 );//ici on affiche la valeur du champ1
   echo '<br/><br/>';
   $image = odbc_result($valeur, 3 );//dans votre table mettez le chemin de l'image et son extention dans le champphoto3
   //on va ainsi stocker dans la variable $image pour l'afficher en dessous
   echo "<img src=$image width=150 height=150>";
   echo odbc_result( $valeur, 2 );
   }

}
else{
echo "Impossible de se connecter à  la base de données";
}
odbc_close( $cnx); // ferme la connexion
?>
</body>
</html>

A voir également

Ajouter un commentaire

Commentaires

cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Salut,

<? est à remplacer par <?php pour des raisons de portabilité, pour le odbc_close() tu peux surement le mettre juste après la requête (en passant par des fetch_row comme tu l'as fait)

Je te mets 7/10 parce que c'est un exemple simple et qui j'espère sera mis à jour pour les quelques petites erreurs ci-dessus.

a ++
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
Salut,

Tu verifies que ta connexion est faite, si elle n'y est pas tu affiches un message d'erreur, mais le script continue, ce qui n'est pas logique

tu aurais du faire

if ( $cnx){
//traitement a faire sur la base
}else{
echo 'impossible de se connecter à la base';
}

Ce qui evites de passer dans les boucles while .

Mets ton script aux normes.

=>

...

A part ca, code propre et correctement commenté.

7/10
cs_Isengard
Messages postés
83
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
10 février 2006
-
Oui ou alors si tu souhaite que la page soit directement stoppé si la connection à la base marche pas tu met un :
$cnx = odbc_connect( $bd , $user, $password ) or die("La Connection a échoué");

Personellement je prefere faire comme ça, ça évite de laisser trainer un if sur toute la longueur de la page et d'avoir tous les else à la fin du code :)
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Perso, je n'aime pas faire die... c'est mieux de gérer l'erreur soit même plutôt que de faire "planter" la page avec un die... Il manquerait un @ devant le connect pour pas afficher l'erreur par défaut.
cs_Isengard
Messages postés
83
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
10 février 2006
-
Généralement une fois la connection échouée la page plante sur les requetes donc bon ca dépend ce que tu souhaite :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.