fonction odbc_connect

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction odbc_connect

Solution trouvée

par ArnaudM » 09 déc. 2006, 16:23

Voici la solution et il n'y a aucun paramétrage machine à faire:

Bonne lecture.

Arnaud
Test de connexion au fichier texte<br>
<?
  $adresse="Coordonnees.txt";
  echo "Adresse:$adresse";?></p><?
  $chemin=realpath($adresse);
  $chemin2="C:\Program Files\ZazouMiniWebServer\Apache\ZMWS\_web.zmwsc\GoogleMap";
  echo "Chemin: $chemin";?></p><?
  echo "Chemin: $chemin2";?></p><?
  $odbc="Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=$chemin2;Extensions=asc,csv,tab,txt;Persist Security Info=False";
  echo $odbc;?></p><?
  $connexion = odbc_connect($odbc,"","");
  if (!$connexion) {
    // Échec de la connexion
    echo "La connexion au fichier texte a échoué, ";
    echo "vérifiez que la connection à l'ODBC texte fonctionne";
    die;
  }
  echo "Connection: $connexion";
  $liste_tables = odbc_tables($connexion);
  if (!$liste_tables) {
    // Échec de la lecture des tables
    echo "La connexion aux tables a échoué, ";
    echo "vérifiez que la connection à l'ODBC texte fonctionne";
    die;
  }

   $tables = array();
   while (odbc_fetch_row($liste_tables)){
     if(odbc_result($liste_tables,"TABLE_TYPE")=="TABLE")
       echo"<br>".odbc_result($liste_tables,"TABLE_NAME");

   }


  $result=odbc_do($connexion,"SELECT * FROM Coordonnees.txt");
  if (!$result) {
    // Échec de la lecture de la table
    echo "La lecture de la table a échoué, ";
    echo "vérifiez la syntaxe de votre SQL";
    die;
  }


?>

Connection suite

par ArnaudM » 09 déc. 2006, 15:55

Il semble manquer des paramètres dans ma chaîne de connection.

En effet, si j'attache le fichier à Access, voici ce qui est précisé au niveau de la chaîne de connection:

Code : Tout sélectionner

Text;DSN=Coordonnees Spécification d'attache;FMT=Delimited;HDR=NO;IMEX=2;CharacterSet=1252;
Quelqu'un peut-il m'aider à compléter mon fichier php.

Merci.

Arnaud

Sans paramétrage machine

par amatard » 09 déc. 2006, 15:38

Bonjour,

A terme, mon code, en PHP, doit contenir tous les paramètres me permettant d'ouvrir la connexion odbc sans avoir à créer de ressources odbc dans les ressources odbc de la machine.

En ASP, pour me connecter sur une base Acces, j'écris ceci dans mon code et c'est tout:

Code : Tout sélectionner

set fldnew=server.createobject("scripting.dictionary") set cnnl=server.createobject("ADODB.connection") openstr="driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("./Enquete.mdb") cnnl.open openstr,"","" sql="select * from Messages;" set rst=server.createobject("ADODB.Recordset") rst.open sql, cnnl, adopenforwardonly,adlockoptimistic,adcmdtext
Je suppose qu'il est possible de faire la même chose en PHP avec un driver texte, d'où mes tests ci-dessus en PHP. Cela ne marche pas. Pourquoi?

Cdt,

Arnaud

par Cyrano » 09 déc. 2006, 14:33

As-tu bien créée une ressource ODBC dans les sources de données de ta machine ?

Pas de changement

par arnaudm » 09 déc. 2006, 13:18

Re-Bonjour,

Cela ne change rien (avec / ou \ ou sans l'un des deux). :(
Voici mon code complet: :cry:
Test de connexion au fichier texte<br>
<?
  $adresse="Coordonnees.txt";
  echo "Adresse:$adresse";?></p><?
  $chemin=realpath($adresse);
  echo "Chemin: $chemin";?></p><?
  $odbc="Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=$chemin;";
  echo $odbc;?></p><?
  $connexion = odbc_connect($odbc,"","");
  if (!$connexion) {
    // Échec de la connexion
    echo "La connexion au fichier texte a échoué, ";
    echo "vérifiez que la connection à l'ODBC texte fonctionne";
    die;
  }

?>
merci pour les conseils futurs,

Arnaud

par Cyrano » 09 déc. 2006, 13:06

Tu as une erreur ici:
$chemin=realpath(".\Coordonnees.txt");
PHP va "lire" : ".oordonnees.txt" parce que le "\" est un caractère d'échappement.
Donc, essaye en remplaçant par :
$chemin=realpath("./Coordonnees.txt");

par zeus » 09 déc. 2006, 12:44

Modération :
Afin d'améliorer la lisibilité de ton message, pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Pour cette fois, j'ai modifié le message pour toi

fonction odbc_connect

par arnaudm » 09 déc. 2006, 12:37

Bonjour,

J'essaye de bien définir la connection odbc pour accéder à mon fichier texte.
J'exécute mon code par étapes pour voir où est mon erreur.

Mon test de connexion (avec mes commentaires) se déroule en plusieurs étapes:

1- Recherche du fichier texte:
Test de connexion au fichier texte<br>

$chemin=realpath(".\Coordonnees.txt");
echo "Chemin: $chemin";
=> Le chemin est affiché donc le fichier est bien trouvé. J'ai le message suivant:

Code : Tout sélectionner

Test de connexion au fichier texte Chemin: C:\Program Files\ZazouMiniWebServer\Apache\ZMWS\_web.zmwsc\GoogleMap\Coordonnees.txt
2- Préparation et affichage de la chaîne ODBC:
Voici la chaîne que je prépare:
$odbc="Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=$chemin;";
echo $odbc;
et voici ce qu'il m'affiche:

Code : Tout sélectionner

Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=C:\Program Files\ZazouMiniWebServer\Apache\ZMWS\_web.zmwsc\GoogleMap\Coordonnees.txt;
3-Test de communication avec l'odbc texte:
Voici mon code de test:
$connexion = odbc_connect($odbc,"","");
if (!$connexion) {
// Échec de la connexion
echo "La connexion au fichier texte a échoué, ";
echo "vérifiez que la connection à l'ODBC texte fonctionne";
die;
}
Le message suivant m'indique que le serveur a bien compris que j'utilise le pilote ODBC texte mais que le chemin n'est pas compris. Pourquoi? Voici le message obtenu pour cette dernière partie:

Code : Tout sélectionner

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][Pilote ODBC Texte] '(Inconnu)' n'est pas un chemin d'accès valide. Assurez-vous que le nom du chemin d'accès est correct et qu'une connexion est établie avec le serveur sur lequel réside le fichier., SQL state S1009 in SQLConnect in C:\Program Files\ZazouMiniWebServer\Apache\ZMWS\_web.zmwsc\GoogleMap\test_googleMap.php on line 7 La connexion au fichier texte a échoué, vérifiez que la connection à l'ODBC texte fonctionne
Merci par avance pour vos commentaires qui me permettraient d'avancer.

Arnaud