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 :

Instancier une classe pour chaque résultat avec OCI_


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Points : 76
    Points
    76
    Par défaut Instancier une classe pour chaque résultat avec OCI_
    aloha
    Je définis ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    class AutoCompletionCPVille {
    	public $CodeInsee;
    	public $Nom;
    }
    ?>
    Merci à x zolezzi pour son tuto sur l'autocomplétion.
    Utilisant oracle, je passe plutôt par de l'OCI. Je récupère mon résultat de requête sous forme de tableau, mais je ne sais pas comment instancier chacun de mes résultats.

    Comment faire ?

    D'avance merci,

    Ci après mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <?php
    error_reporting(E_ALL || E_NOTICE);
    require_once('./AutoCompletionCPVille.class.php');
     
    function select_to_array($connexion, $select) 
    		{
    			// Crée un tableau, un curseur, compte les colonnes,
    			// fait le fetch en insérant dans le tableau.
    			$myResults = array();
    			// ora_do analyse (ora_parse) $query, l'exécute (ora_exec)
    			// et lit la première ligne du résultat (ora_fetch).
    			$statementID = oci_parse($connexion, $select);
    			$executeResult = oci_execute($statementID);
    			while (($row = oci_fetch_array($statementID, OCI_ASSOC))) {
    			   array_push($myResults, $row);
    			}
    			oci_free_statement($statementID);
    			return $myResults;
    		}
     
    //Initialisation de la liste
    $list = array();
     
    //Connexion Oracle
    $base = "SIGE";
    try
    {
    //echo 'bob';
        $ora_connSIGE = oci_connect("*****","$$$$$",$base);	
    }
    catch (Exception $ex)
    {
        echo $ex->getMessage();
    }
     
    //Construction de la requete
    $strQuery = "SELECT CO_INSEE CodeInsee, NOM Nom FROM BT_COMMU WHERE ";
    if (isset($_POST["codeInsee"]))
    {
        $strQuery .= "CO_INSEE LIKE :codeInsee ";
    }
    else
    {
        $strQuery .= "NOM LIKE :ville ";
    }
    $strQuery .= "AND DEPART = 'MARNE' ";
     
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $strQuery .= "LIMIT 0, :maxRows";
    }
     
    if (isset($_POST["co_insee"]))
    {
        $value = $_POST["co_insee"]."%";
    	oci_bind_by_name($statementID, ":codeInsee", $value);
     
    }
    else
    {
        $value = $_POST["ville"]."%";
    	oci_bind_by_name($statementID, ":ville", $value);	
    }
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $valueRows = intval($_POST["maxRows"]);
    	oci_bind_by_name($statementID, ":maxRows", $value);
    }
     
    $list = select_to_array($ora_connSIGE, $strQuery);
     
    echo json_encode($list);
    ?>

  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
    avec PDO tu peux ça simplement

  3. #3
    Membre régulier Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Points : 76
    Points
    76
    Par défaut
    J'essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    try
    {
    	$ora_connSIGE = new PDO("oci:dbname=SIGE","****","$$$$$");
    	echo 'bob';
    }
    catch (Exception $ex)
    {
    	echo 'bob2';
        echo $ex->getMessage();
    }
    Mais j'obtiens :
    Fatal error: Class 'PDO' not found in ... on line 13
    Mon admin me dit que les librairies PDO sont bien installées, et que le pilote oracle aussi.

    Une idée ?

    D'avance, (re)merci

  4. #4
    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
    fais un phpinfo tu verra bien si il a menti ou pas

  5. #5
    Membre régulier Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Points : 76
    Points
    76
    Par défaut
    huMMM;
    j'ai ça :
    zend.ze1_compatibility_mode Off Off
    C'est ce que je devais chercher ?
    mais j'ai aussi :
    ...--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared"

  6. #6
    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
    Regarde dans la section PDO, si y'en a pas c'est qu'il n'est pas activé

Discussions similaires

  1. Utiliser une classe pour chaque composant ?
    Par Rtransat dans le forum PyQt
    Réponses: 5
    Dernier message: 26/11/2014, 17h45
  2. Réponses: 2
    Dernier message: 19/11/2014, 00h51
  3. Réponses: 4
    Dernier message: 28/05/2010, 17h11
  4. Réponses: 2
    Dernier message: 20/04/2006, 14h33
  5. Réponses: 3
    Dernier message: 13/08/2005, 15h18

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