Accueil > > > ORACLE FONSTIONS
ORACLE FONSTIONS
Information sur la source
Description
une petite expérience du php avec oracle
Source
- bonjour, j'ai passé donc un séminaire oracle, il m'était obligé de faire une interface d'utilisateur avec une base de données oracle derrière.
-
- J'ai trouvé très intéressant, et je voudrais partager le code avec vous
-
- // commencement
-
- pour se connecter à la base de données oracle, il existe une fonction ocilogon(). Cette fonction est similaire à lafonction mysql_connect() sous mysql. Sauf que vous n'avez pas besoin de faire un mysql_select_db() après. En voici un exemple:
-
- $db_name="nom de la base de données";
- $db_pass="le mot de passe de la base";
- $connexion=ocilogon($db_name,$db_pass);
- // en mysql normalement on fait :
- //$connexion = mysql_connect($db_name,$db_pass) or die ('affiche quelque chose');
-
- Après être connecté, nous avons besoins souvent de faire des requête sur la base de données (d'où l'intérêt d'utiliser une base de données ;-) )
- Donc une requete sous oracle est passée de manière suivante:
-
- pour les requêtes simple qui ne contiennent pas de variables php
-
- $requete = "select * from [nom de la table]";
- $result=ociparse($connexion,$requete); // vérification de la requête
- ociexecute($result); // si la vérification est passée alors on l'exécute
-
- pour l'affichage de résultats :
-
- while(ocifetch($result))
- {
- echo ociresult($result,"[le nom du champ que tu veut afficher en MAJUSCULE]");
- }
-
- C'est un peu différent par rapport à mysql non?
- Ensuite, si tu veux récupérer le nombre de ligne de résultat, il existe la fonction ocirowcount() pour oracle comme la fonction mysq_num_rows() en sql mais cette fonction ne peut pas être utilisé directement après l'exécution de la requête tu dois soit faire de manière suivante:
-
- $compteur = 0;
- while(ocifetch($result))
- {
- $compteur++;
- echo ociresult($result,"[le nom du champ que tu veut afficher en MAJUSCULE]");
- }
- echo $compteur;
-
- Mais comme on est malin, on utilisera une autre fonction pour récupérer le nombre de résulat de la requête. Nous nous recourrons alors à la fonction ocifetchstatement(). Cette fonction comme son nom indique renvoie le résultat de la requête dans un tableau, et on peut dès lors manipuler plus facilement avec les résultats.
- Code:
- // connexion + la requête...
- ociexecute($result);
- ocifetchstatement($result,$tab_resultat);
- // seulement maintenant que l'on peut récupérer le nombre de ligne du résulat avec la fonction ocirowcount()
- echo ocirowcount($result);
-
- Je suis sur et certain que si à la première fois que vous utiliser un serveur Oracle, pour constituer des requête vous allez faire du genre:
- $requete ="select nom_client from order where no_client ='".$no_client."'"; dont la variable $no_client est une variable de PHP.
- $result = ociparse($connexion,$requete);
-
- Et CA NE MARCHE PAS COMME CA sous Oracle. ;~(.
- En fait nous devons passer à une ou plusieurs étape pour éxécuter la requête selon le nombre de variables. Et pour référencer les varible php dans la requête passée sous oracle, il faut utiliser la fonction ocibindbyname() pour convertir en quelque sorte les variable sous php en oracle. Comme quand vous faites du sql sous c++, entre variables hotes et variables locales.
- Exple:
-
- // on souhaite récupérer le nom du client qui a le numéro du client = 2
- $num_client = 2;
- $requete =" select nom_client from client where no_client=:numclient"; //
- $result = ociparse($connexion,$requete) ; // vous vérifions si le script
- // avant d'envoyer le script au serveur pour l'exécuter nous devons affecter la valeur de php à celle de la requete
- ocibindbyname($result,':numclient',&$no_client,-1); // nous référencons la valeur de la variable $no_client à celle de :numclient
- // la signe & ici c'est pour envoyer la variable $no_client par référence dans la fonction ocibinbyname(), et la valeur de numclient sera affectée par la valeur de cette variable
-
- tu va demander peut-être à quoi sert le '-1', en fait dans ce champ tu dois préciser la longeur de la variables que tu souhaite passer en paramètre, quant il est à -1 ca veut dire que tu prends la longueur par défaut de la variable. pour avoir plus de détails voici le lien:http://fr.php.net/manual/en/function.ocibindbyname.php.
-
- // et maintenant nous pouvons exécuter la requete normalement avec la fonction ociexecute()
- ociexecute($result); // et là ça va marcher !
-
- Pour l'insertion des valeur dans les tables d'une base de données sous oracle est faite de la même manière.
- Par exemple, si tu a une table qui se nome Client(no_client, nom_client, prenom_client), et que tu veux insérer une ligne. l'insertion est faite de façon suivante:
-
- $no_client=3;
- $nom_client="son";
- $prenom_client="tung";
- $requete = "insert into Client(no_client, nom_client, prenom_client) values (:numclient, :nomclient,:prenomclient)";
- $insert = ociparse($connexion, $requete);
- ocibindbyname($insert,':numclient',&$no_client,-1); // affecter la valeur de la $no_client à :numclient
- ocibindbyname($insert,':nomclient',&$nom_client,-1);
- ocibindbyname($insert,':prenomclient',&$prenom_client,-1);
- // après que les variables ont été affectée, nous allons maintenant exécuter la requete
- ociexecute($insert);
- echo "insertion terminée!";
-
- Voilà. Avec toutes ces connaissances vous pourvez désormais commencer à faire des trucs avec la base de données sous oracle.
- J'espère avoir vos remarques sur ce petit tuto sur sontung2603@yahoo.com
-
- Chao !
-
-
-
-
-
-
-
-
-
-
bonjour, j'ai passé donc un séminaire oracle, il m'était obligé de faire une interface d'utilisateur avec une base de données oracle derrière.
J'ai trouvé très intéressant, et je voudrais partager le code avec vous
// commencement
pour se connecter à la base de données oracle, il existe une fonction ocilogon(). Cette fonction est similaire à lafonction mysql_connect() sous mysql. Sauf que vous n'avez pas besoin de faire un mysql_select_db() après. En voici un exemple:
$db_name="nom de la base de données";
$db_pass="le mot de passe de la base";
$connexion=ocilogon($db_name,$db_pass);
// en mysql normalement on fait :
//$connexion = mysql_connect($db_name,$db_pass) or die ('affiche quelque chose');
Après être connecté, nous avons besoins souvent de faire des requête sur la base de données (d'où l'intérêt d'utiliser une base de données ;-) )
Donc une requete sous oracle est passée de manière suivante:
pour les requêtes simple qui ne contiennent pas de variables php
$requete = "select * from [nom de la table]";
$result=ociparse($connexion,$requete); // vérification de la requête
ociexecute($result); // si la vérification est passée alors on l'exécute
pour l'affichage de résultats :
while(ocifetch($result))
{
echo ociresult($result,"[le nom du champ que tu veut afficher en MAJUSCULE]");
}
C'est un peu différent par rapport à mysql non?
Ensuite, si tu veux récupérer le nombre de ligne de résultat, il existe la fonction ocirowcount() pour oracle comme la fonction mysq_num_rows() en sql mais cette fonction ne peut pas être utilisé directement après l'exécution de la requête tu dois soit faire de manière suivante:
$compteur = 0;
while(ocifetch($result))
{
$compteur++;
echo ociresult($result,"[le nom du champ que tu veut afficher en MAJUSCULE]");
}
echo $compteur;
Mais comme on est malin, on utilisera une autre fonction pour récupérer le nombre de résulat de la requête. Nous nous recourrons alors à la fonction ocifetchstatement(). Cette fonction comme son nom indique renvoie le résultat de la requête dans un tableau, et on peut dès lors manipuler plus facilement avec les résultats.
Code:
// connexion + la requête...
ociexecute($result);
ocifetchstatement($result,$tab_resultat);
// seulement maintenant que l'on peut récupérer le nombre de ligne du résulat avec la fonction ocirowcount()
echo ocirowcount($result);
Je suis sur et certain que si à la première fois que vous utiliser un serveur Oracle, pour constituer des requête vous allez faire du genre:
$requete ="select nom_client from order where no_client ='".$no_client."'"; dont la variable $no_client est une variable de PHP.
$result = ociparse($connexion,$requete);
Et CA NE MARCHE PAS COMME CA sous Oracle. ;~(.
En fait nous devons passer à une ou plusieurs étape pour éxécuter la requête selon le nombre de variables. Et pour référencer les varible php dans la requête passée sous oracle, il faut utiliser la fonction ocibindbyname() pour convertir en quelque sorte les variable sous php en oracle. Comme quand vous faites du sql sous c++, entre variables hotes et variables locales.
Exple:
// on souhaite récupérer le nom du client qui a le numéro du client = 2
$num_client = 2;
$requete =" select nom_client from client where no_client=:numclient"; //
$result = ociparse($connexion,$requete) ; // vous vérifions si le script
// avant d'envoyer le script au serveur pour l'exécuter nous devons affecter la valeur de php à celle de la requete
ocibindbyname($result,':numclient',&$no_client,-1); // nous référencons la valeur de la variable $no_client à celle de :numclient
// la signe & ici c'est pour envoyer la variable $no_client par référence dans la fonction ocibinbyname(), et la valeur de numclient sera affectée par la valeur de cette variable
tu va demander peut-être à quoi sert le '-1', en fait dans ce champ tu dois préciser la longeur de la variables que tu souhaite passer en paramètre, quant il est à -1 ca veut dire que tu prends la longueur par défaut de la variable. pour avoir plus de détails voici le lien:http://fr.php.net/manual/en/function.ocibindbyname.php.
// et maintenant nous pouvons exécuter la requete normalement avec la fonction ociexecute()
ociexecute($result); // et là ça va marcher !
Pour l'insertion des valeur dans les tables d'une base de données sous oracle est faite de la même manière.
Par exemple, si tu a une table qui se nome Client(no_client, nom_client, prenom_client), et que tu veux insérer une ligne. l'insertion est faite de façon suivante:
$no_client=3;
$nom_client="son";
$prenom_client="tung";
$requete = "insert into Client(no_client, nom_client, prenom_client) values (:numclient, :nomclient,:prenomclient)";
$insert = ociparse($connexion, $requete);
ocibindbyname($insert,':numclient',&$no_client,-1); // affecter la valeur de la $no_client à :numclient
ocibindbyname($insert,':nomclient',&$nom_client,-1);
ocibindbyname($insert,':prenomclient',&$prenom_client,-1);
// après que les variables ont été affectée, nous allons maintenant exécuter la requete
ociexecute($insert);
echo "insertion terminée!";
Voilà. Avec toutes ces connaissances vous pourvez désormais commencer à faire des trucs avec la base de données sous oracle.
J'espère avoir vos remarques sur ce petit tuto sur sontung2603@yahoo.com
Chao !
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Connexion à Oracle 9i avec du php ? [ par ibti25 ]
Bonjour a tous,Voila je ne sais pas comment me connecter à une base d'Oracle 9i avec du php sachant qu'avt j'avais pas de pbs avec oracle 8. J'utilisa
Php & MySql ??? [ par nova85 ]
Je voudrai savoir si il est possible de realiser un site assez important juste avec une BDD mysql , si c'est capable de resister , et surtout savoir s
php et oracle ? [ par Xime ]
salut :)voila je vais attaquer une base oracle alors j'aimerais savoir les outils a utiliser et autres...ou des adresses de sites avec tutoriaux serai
ORACLE&PHP [ par terminaboul ]
Bonjour,Je suis a la recherche d'un site ou d'une doc en français bien évidament pouvant m'aider sur les problèmes que je rencontre avec ma base ORACL
ORACLE&PHP [ par terminaboul ]
Bonjour,Je suis a la recherche d'un site ou d'une doc en français bien évidament pouvant m'aider sur les problèmes que je rencontre avec ma base ORACL
php et oracle 9 [ par nat ]
Bonjour,je voudrais savoir si les fonction d'oracle sous php destinées à oracle 8 sont les même pour utiliser oracle 9.merci d'avance
probleme avec mes fonctions [ par ludlu ]
j'ai une fonction qui ne s'execute pas! si qq peut m'aider.voici le code source:<?phpfunction verif_session(){session_start();if(!session_is_regist
pb connection oracle PHP [ par boucledor ]
salut,j'ai un peit problème pour me connecter à une base oracle distante en php.je ne peu modifier le php.ini, donc je dois me resoudre à faire celà v
php et hyperfile, est-ce possible? [ par adeath ]
En premier lieu bonjour et merci à ceux qui lirons ce message.Je voudrais développer un site internet en exploitant une BDD hyperfile.>Est-il possi
connection base Oracle [ par thorod ]
Bonjour à tous,Bien voila, je cherche depuis un certain temps et je trouve pas de solution.J'ai un serveur IIS, avec oracle Net 8 installé. L'extensio
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|