IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Lecture table en PHP sur une Base HyperFile


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 57
    Points : 34
    Points
    34
    Par défaut Lecture table en PHP sur une Base HyperFile
    Bonjour,

    Je souhaite faire des requêtes sur une base hyperfile depuis PHP.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dsn="DRIVER={HyperFileSQL};DSN=hyperfile;ANA=C:\PROGRAM FILES\PC SOFT\saas.wdd;REP=C:\ProgramData\PC SOFT\ServeurHyperFileSQL_3X4D1N1\BDD;Server Name=3X4D1N1;Server Port=4900;Database=seg_1;";
    $connexion = odbc_connect($dsn,'admin','') or die( odbc_errormsg() ); 
    $sql = "SELECT * FROM SegActivite";
    $res = odbc_exec ($connexion,$sql) or die( odbc_errormsg() ); 
    $row=odbc_fetch_array($res);
    Voici l'erreur affichée à l’exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur dans le code SQL de la requête . Initialisation de la requête impossible. Fichier SegActivite inconnu Informations de débogage : IEWD170SQL=1.12 Module= Version=<17.0.89.0> Code SQL de la requête : SELECT * FROM SegActivite
    J'ai une base Hyperfile installée en locale et quand j'éxecute cette requete à la main dans le logiciel il me retourne bien les entrées de la table.

    Sauriez-vous me dire mon erreur ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    peu être les espaces dans les chemin qu'il aime pas trop, échappe les

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Merci de ta réponse.
    Je ne pense pas que cela soit le pb car quand j'affiche le contenu de $connexion il me retourne "Ressource id#1".

    Je test quand même.
    Merci

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    J'ai tenté la connexion avec PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try{
    	$conn = new PDO("odbc:Driver={HyperFileSQL};DSN=hyperfile;ANA=C:\PROGRAM FILES\PC SOFT\saas.wdd;REP=C:\ProgramData\PC SOFT\ServeurHyperFileSQL_3X4D1N1\BDD\;Server=3X4D1N1;Port=4900;Database=seg_1;","admin","");
    	$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	$sql = "SELECT * FROM SegActivite";
    	$res_select = $conn->prepare($sql);
            $res_select->execute();
    } catch (PDOException $e) {
        echo 'Échec lors de la connexion : ' . $e->getMessage();
    }
    Erreur retournée :
    Echec lors de la connexion : SQLSTATE[HY090]: Invalid string or buffer length: 0 Fichier SegActivite inconnu (SQLPrepare[0] at ext\pdo_odbc\odbc_driver.c:206)
    Une idée ?
    Merci

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as essayé au moins d’échapper les espaces ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Par quel caractère les échappes-tu?
    Merci

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    avec des guillemets

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Désolé du retard mais j'ai enfin trouvé une solution (et avec les guillemets ça ne marchait pas non plus).
    Je passe maintenant non plus par ODBC mais par OLEDB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Déclaration de la chaîne de connexion
    $ProviderOLEDBHyperFileSQL ='Provider=PCSOFT.HFSQL;Initial Catalog=c:\ProgramData\PC SOFT\ServeurHyperFileSQL_3X4D1N1\BDD\seg_1';
    // Instanciation de l'objet
    $ConnectionOLEDBHyperFileSQL = new COM("ADODB.Connection") or die("Impossible d'instancier un objet ADO");
    // Connexion
    $ConnectionOLEDBHyperFileSQL ->ConnectionString = $ProviderOLEDBHyperFileSQL;
    $ConnectionOLEDBHyperFileSQL ->Open();
    // Création et exécution de la requête
    $rs = new COM("ADODB.Recordset");
    $sql = "SELECT * FROM SegActivite";
    $rs->Open($sql, $ProviderOLEDBHyperFileSQL);
    Il faut donc ajouter la DLL oledb, l'ajouter dans le php.ini (extensions) puis installer le provider oledb qui est fournit avec windev (le fichier d'installation se situe dans C:\Program Files\Common Files\PC SOFT\17.0\OLEDB). Redémarrage du serveur et ça marche.

    Merci à tout ceux qui ont pris du temps de réfléchir à mon problème.
    Maxime

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour Maxime,

    j'essaie d'utiliser cette même solution en vain...
    J'obtiens l'erreur "Fatal error: Class 'COM' not found".
    J'ai bien installé le pack oledb fourni par PC Soft et ajouté l'extension oledb.dll dans le php.ini.
    Aurais-tu une idée ?

    Merci,

    Florent

    Citation Envoyé par maxwell374 Voir le message
    Bonjour,

    Désolé du retard mais j'ai enfin trouvé une solution (et avec les guillemets ça ne marchait pas non plus).
    Je passe maintenant non plus par ODBC mais par OLEDB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Déclaration de la chaîne de connexion
    $ProviderOLEDBHyperFileSQL ='Provider=PCSOFT.HFSQL;Initial Catalog=c:\ProgramData\PC SOFT\ServeurHyperFileSQL_3X4D1N1\BDD\seg_1';
    // Instanciation de l'objet
    $ConnectionOLEDBHyperFileSQL = new COM("ADODB.Connection") or die("Impossible d'instancier un objet ADO");
    // Connexion
    $ConnectionOLEDBHyperFileSQL ->ConnectionString = $ProviderOLEDBHyperFileSQL;
    $ConnectionOLEDBHyperFileSQL ->Open();
    // Création et exécution de la requête
    $rs = new COM("ADODB.Recordset");
    $sql = "SELECT * FROM SegActivite";
    $rs->Open($sql, $ProviderOLEDBHyperFileSQL);
    Il faut donc ajouter la DLL oledb, l'ajouter dans le php.ini (extensions) puis installer le provider oledb qui est fournit avec windev (le fichier d'installation se situe dans C:\Program Files\Common Files\PC SOFT\17.0\OLEDB). Redémarrage du serveur et ça marche.

    Merci à tout ceux qui ont pris du temps de réfléchir à mon problème.
    Maxime

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    bjr maxime (maxwell375)

    svp si vous pouvez me dire comment ajouter l'extension oledb.dll dans php.ini, j'en ai vraiment besoin


    je vous remercie

    cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion de Oracle XE sur une base Hyperfile via ODBC
    Par zouhenlai dans le forum Connexions aux bases de données
    Réponses: 8
    Dernier message: 13/01/2009, 20h38
  2. [CR ?][Hyperfile] Faire un etat sur une base Hyperfile
    Par foulla dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/01/2009, 15h01
  3. [MySQL] comprendre une connexion php sur une base SQL
    Par gillot007 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/12/2008, 14h53
  4. Réponses: 4
    Dernier message: 24/10/2007, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo