Accès à une base ODBC

cs_MrsDallara Messages postés 29 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 8 août 2005 - 21 juil. 2004 à 19:36
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 1 déc. 2009 à 12:45
Bonjour à tous
je voudrais savoir comment on procède pour se connecter à une base ODBC (ce qui je suis arrivée à faire) puis lire certaines tables pour enfin les affichées, tout les essais que j'ai fait semblent 'tourner ds le vide'...

si vous pouvez détailler le code c'est nickel :)
merci bcp!

12 réponses

wishnight Messages postés 18 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 22 juillet 2004
21 juil. 2004 à 22:29
Voici un exemple betement copier de mon code presentement....

Il y a 2 fonctions, pour simplifier mon code, une pour la connxion et l'autre pour executer n'importeque type de requete sql...., SELECT' INSERT UPDATE....

si tu regarde dans la doc de PHP (php.net), y a d'autre fonction, mais je ne les utilise pas, ceci me convient. Regarde ausis els commentaire pour la fonction odbc_fetch_array, ta des exemple je crois si ta plus d'une ligne de retour....

tk, jespere que ca t'aide!

//Connexion
$cnx = Connexion($dns, $user, $password); // connexion

$sqlstr="SELECT CuNumber, CuName FROM Customer WHERE CuNumber = '". $_POST['clients'] ."'";
$queryClients = RequeteSQL($cnx, $sqlstr);
$arrayClients = odbc_fetch_array($queryClients);

//Fonction pour se connecter à l'ODBC
function Connexion($dns, $user, $password) {
$cnx = odbc_connect( $dns , $user, $password );
return($cnx);
}

//Executer une requete SQL sur l'ODBC
function RequeteSQL($cnx, $sqlstr) {
$queryresult=odbc_exec($cnx, $sqlstr);
return($queryresult);
}

0
cs_MrsDallara Messages postés 29 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 8 août 2005
22 juil. 2004 à 10:01
<?php
$database = "nombase";
$user = "ID";
$pass = "PWD";
$nomtable= "table";
$cnx = odbc_connect($database,$user,$pass);
if($cnx)
{
print "Connexion au serveur réussie";
}
else
{
print "Connexion au serveur ratée";
}
$query = "select * FROM $nomtable ";
$result = odbc_do($cnx, $query);
print "resultat : $result
";

odbc_close($cnx);
?> 


pour l'instant g ca et c pas concluant je v essayer d'adapter avec ce que tu m'as doner
0
cs_MrsDallara Messages postés 29 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 8 août 2005
22 juil. 2004 à 11:51
j'ai voulu essayer avec une bdd access mais là non plus ca ne fonctionne pas: j'ai ce message d'erreur: "Connexion au serveur réussie
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la clause FROM., SQL state 37000 in SQLExecDirect in c:\site\test1\testaccess.php on line 23

Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in c:\site\test1\testaccess.php on line 25
NumSerie NumOrdre NumVisite

Warning: odbc_close(): 2 is not a valid ODBC-Link resource in c:\site\test1\testaccess.php on line 36"

voici le code:

<code>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>

<?php
$database = "matosloc";
$user = "";
$pass = "";
$nomtable= "----postes----";
$cnx = odbc_connect($database,$user,$pass);
if($cnx)
{
print "Connexion au serveur réussie";
}
else
{
print "Connexion au serveur ratée";
}
$query = "select * FROM $nomtable";
$result = odbc_exec($cnx, $query);
print "NumSerie";
odbc_close($cnx);
?>

</html>
0
wishnight Messages postés 18 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 22 juillet 2004
22 juil. 2004 à 15:02
Pour ce bout de code la...:
$query = "select * FROM $nomtable ";
$result = odbc_do($cnx, $query);
print "resultat : $result
";


le odbc_do te retourne un numero de requete si tu veux, tu dois utiliser un fetch ou result pour lire les resultat..., ton print doit te donner un numéro je suppose...

Et pour ton deuxieme bout de code avec Access, le: "select * FROM $nomtable" , fais un echo de $query avant de faire le exec, pour etre certain qu'il y a quelque chose dans ton FROM....

donne moi des nouvelles!
0

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

Posez votre question
wishnight Messages postés 18 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 22 juillet 2004
22 juil. 2004 à 16:23
Je vien de voir le nom de ta table: ----postes----

t'es certain que c'est un nom de table valide...., si oui, c'est certain que ton SQL va planter avec ca dans ton from...., tu dois mettre le nom de la table entre '' ou `` , chu pu certain..., fais des tests....
0
cs_MrsDallara Messages postés 29 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 8 août 2005
22 juil. 2004 à 21:39
bon je test tout ca demain et je vous dis
0
cs_MrsDallara Messages postés 29 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 8 août 2005
23 juil. 2004 à 09:55
là g ca:

$cnx = odbc_connect($database,$user,$pass);
$query = "select * FROM $nomtable";
$var1 = odbc_do($cnx, $query);
$var2 = odbc_fetch_row($var1);
odbc_fetch_row($var2);
odbc_close($cnx);


ca ne marche pas biensure
pk??!
0
cs_MrsDallara Messages postés 29 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 8 août 2005
23 juil. 2004 à 10:07
je me suis planté de code à envoyer :)
voici celui à regarde:

$cnx = odbc_connect($database,$user,$pass);
$query = "select * FROM $nomtable";
$var1 = odbc_do($cnx, $query);
$var2 = odbc_fetch_row($var1,1);
odbc_result($var2);
odbc_close($cnx);
0
wishnight Messages postés 18 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 22 juillet 2004
24 juil. 2004 à 04:52
que vaut $nomtable?

fais un echo dessus ton $query et copie ici.., ca va p-e aider...

quoi le message d'erruer que te donne PHP?

s'il y en a pas.., fais un echo de toutes tes variables (cnx, query, var1, var2)..., voir lequel a une valeur bizarre, qui pourrai mener a une piste....

c'est du débogage, donc le mieu c'est de toujours savoir la valeur de tes variable au fur et à mesure, et en PHP je ne connais pas d'outil de débogage comme en VB ou de quoi du genre.., donc imprime toujours la valeur de tes variable jusqua ce que tu obtinne le résultat voulu!

tien moi au courant!
0
cs_MrsDallara Messages postés 29 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 8 août 2005
24 juil. 2004 à 08:55
bon quand j'ai commencé ca je partie sur la mauvaise direction
j'ai modifier un peu ce code et avec une base access ca fonctionne bien:

$database = "xxx";
$pass = "xxx";
$nomtable= "xxx";
$cnx = odbc_connect($database,$user,$pass);
{
$query = "select * FROM $nomtable";
$queryresult = odbc_do($cnx,$query);
odbc_fetch_row($queryresult,"");
odbc_result_all($queryresult);
//print "
Résultat: $queryresult";
odbc_close($cnx);
}
?> 


mais moi je veux accéder à une base oracle et c pas comme ca qu eje dois procéder meme si ca utilise l'odbc il me semble....
merci à tous pour vos réponse :)
0
wishnight Messages postés 18 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 22 juillet 2004
24 juil. 2004 à 21:23
ta une section du manuel de php qui concerne orale..., pour une gestion native, tu dois compier php avec le soutient pour oacle: http://ca2.php.net/oracle (p-e pas conseiller sur windows, mais plus linux et cie..)

si tu veux utiliser par ODBC (sur windows, ca va etre plus simple), assure toi que ton pilote pour Oracle est present dans la liste des pilote ODBC... (si ce n'ai deja fais, car sinon la, cest certain que ca marchera jamais)
Va dans les outil d'administration (windows 2000 / xp) et va dans ODBC (de souvenir), dans la section systeme ou usager, tu dois voir dans ta liste le pilote pour Oracle..., sinon, ajoute le...

y a plusieur site web qui peuvent t'aider pour l'installation d'un pilote ODBC, une petite recherche et tu toruvera...
Si au moment de faire l'ajout le pilote Oracle n'y ai pas, vérifie ton installation, p-e cetait une option que tu na pas choisi...!

bopnne chance
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
1 déc. 2009 à 12:45
Méthode 1 :

$connect =  ODBC_connect("NOM_BASE","NOM_BUSER","MOTDEPASSE");
// Connexion à la base

$sql="select * from ma_table"; // Sélection de toutes les colonnes
$res=ODBC_exec($connect,$sql); // Exécute la requete
while(odbc_fetch_row) // tant qu'il y a des résultats ..
{
  $Var_A = ODBC_result($res,"CHAMPS_A");
  $Var_B = ODBC_result($res,"CHAMP_B");
  $Var_C =  ODBC_result($res,"CHAMPS_C");
  echo "j'ai : ".$Var_A.", ".$Var_B." et ".$Var_C." comem résulats respectif de mes 3 colonnes CHAMPS_1, CHAMPS_B et CHAMPS_C !!
";
//... on fait ceci.
// à chaque ligne de trouvée tu auras un résultat, le programme s'arretera quand tu auras toutes les lignes de toutes les colonnes que tu as sélectionnées
}

odbc_close($connect); // n'oublie pas de fermer ta connexion


_________________________________________________________________
Méthode 2 :

$connect   = ODBC_connect("NOM_BASE","NOM_BUSER","MOTDEPASSE");
// Connexion à la base

$sql="select CHAMPS_1,CHAMPS_2 from ma_table where CHAMP_3 = 'cequetuveux' "; // Sélection précise de colonnes et lignes avec condition
$res=ODBC_exec($connect,$sql); // Exécute la requete
$Var_1 = ODBC_result($res,"CHAMPS_1"); // Renvoi le résultat
$Var_2 = ODBC_result($res,"CHAMP_2"); // Renvoi le résultat
echo "j'ai : ".$Var_1." et ".$Var_2." comem résulats respectifs de mes 2 colonnes, là où mon CHAMPS_3 est égal à 'cequetuveux' ! 
"; // Affichage des résultats

odbc_close($connect); // n'oublie pas de fermer ta connexion



Est-ce que ça te va ?
(je pense que d'ici là tu as compris, mais au moins pour d'autres qui se poseraient les meme question, dont je faisais parti il y a encore moins d'un an :) )
0
Rejoignez-nous