Problème Oracle / PHP

Fermé
cool-abdoul Messages postés 96 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 30 novembre 2010 - 29 nov. 2009 à 20:20
 fiu - 30 nov. 2009 à 11:43
Bonjour les amis,

Je crée une table "entreprise" dans la seul base de données "SYSTEM" de la version gratuite d'Oracle Database Edition Express. Voici la table :

CREATE TABLE "ENTREPRISE"
( "IDENTREPRISE" VARCHAR2(80) NOT NULL ENABLE,
"NOMENTREPRISE" VARCHAR2(80) NOT NULL ENABLE,
"ADRESSEENTREPRISE" VARCHAR2(80) NOT NULL ENABLE,
"CODEPOSTALENTREPRISE" VARCHAR2(20) NOT NULL ENABLE,
"VILLEENTREPRISE" VARCHAR2(80) NOT NULL ENABLE,
"TELFIXEENTREPRISE" NUMBER,
"TELPORTENTREPRISE" NUMBER,
"FAXENTREPRISE" NUMBER,
"EMAILENTREPRISE" VARCHAR2(30),
CONSTRAINT "ENTREPRISE_PK" PRIMARY KEY ("IDENTREPRISE") ENABLE
)


J'ai également fait des insert sans problème ( 10 enregistrements).

J"écris mon script php et surtout en prenant le tant de bien parametrer le fichier php.ini en enlevant le ptit ;. Voivi le php :

<?php
$user = "cool";
$pass = "cool";
$database ="SYSTEM";
$connexion=ocilogon($user, $pass,$database);

$requete = "SELECT * FROM ENTREPRISE ";

$stmt = ociparse($connexion, $requete);

ociexecute($stmt,OCI_DEFAULT);

$nbcols = oci_num_fields ($stmt);

while ($ligne = ocifetch($stmt)){

for($i=0;$i<$nbcols;$i++){

echo $ligne[$i] ;

}

}

oci_free_statement ($ordre);

oci_close();

?>


Hélas, j'ai un warning et je cherche la solution depuis midi sans solution. Voici le warning :

Warning: ocilogon() [function.ocilogon]: ORA-12154: TNS : l'identificateur de connexion indiqué n'a pas pu être résolu in C:\Java Tools\wamp\www\PhpTest\index.php on line 5

Warning: ociparse() expects parameter 1 to be resource, boolean given in C:\Java Tools\wamp\www\PhpTest\index.php on line 9

Warning: ociexecute() expects parameter 1 to be resource, null given in C:\Java Tools\wamp\www\PhpTest\index.php on line 11

Warning: oci_num_fields() expects parameter 1 to be resource, null given in C:\Java Tools\wamp\www\PhpTest\index.php on line 13

Warning: ocifetch() expects parameter 1 to be resource, null given in C:\Java Tools\wamp\www\PhpTest\index.php on line 15

Notice: Undefined variable: ordre in C:\Java Tools\wamp\www\PhpTest\index.php on line 25

Warning: oci_free_statement() expects parameter 1 to be resource, null given in C:\Java Tools\wamp\www\PhpTest\index.php on line 25

Warning: oci_close() expects exactly 1 parameter, 0 given in C:\Java Tools\wamp\www\PhpTest\index.php on line 27


Aidez moi les amis svp !!!

Bien cordialement !!!
A voir également:

3 réponses

bob@37 Messages postés 1 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 29 novembre 2009
29 nov. 2009 à 20:48
si tu as une erreur oracle ORA-12xxx alors c'est ta connexion via sqlnet vers ta base qui ne fonctionne pas.
une connexion sqlnet est une connexion via le reseau comme si la base etait sur une autre machine.
je pense qu'il doit y avoir un assistant reseau avec ta version d'oracle pour configurer le SQLNET.
sinon tu peux aussi te connecter en local sans la couche reseau SQLNET.
ceci se fait avec la variable ORACLE_SID que tu dois affecter a "SYSTEM" et ne pas mettre de valeur dans $database
Le lien http://www.manuelphp.com/php/function.oci-connect.php est interressant.
0
cool-abdoul Messages postés 96 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 30 novembre 2010 9
29 nov. 2009 à 23:37
Hello bob !!

Merci pour ta réponse bien ciblée qui m'as été en partie très utile !! Cependant, je ne vois pas où effectuer l'affectation de la variable ORACLE_SID="SYSTEM". Est un script php ou du SQL ou de rajouter dans un fichier, en l'occurence php.ini ? Est-ce par exemple SET ORACLE_SID="SYSTEM" ?

Merci à d'avance !!
0
Attention à la confusion !
* SYSTEM est un utilisateur de la base (un grand gourou même)
* Le nom de la base (le nom de l'instance) est normalement choisi par la personne qui crée la base. Si tu ne te rappelles plus le nom donné à la base, tu l'as dans la vue v$database ;
* un autre nom est celui qui est défini sur la machine client, au niveau de SQL*Net, et qui nomme le service de données proposé par l'instance, que l'instance soit sur la même machine ou sur une machine distante. ce nom, ainsi que les autres noms donnés aux autres services de données oracle, est disponible dans le fichier $ORACLE_HOME/network/admin/tnsnames.ora ou %ORACLE_HOME%\network\admin\tnsnames.ora
C'est ce nom qu'il faut utiliser dans le script php
S'il n'y figure pas et que ta base de données est locale essaie $database = "";
Sinon, crée-toi une entrée dans tnsnames.ora via l'assistant ou, si tapapeur, manuellement avec un truc du genre SYSTEM=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(Port=1521)))(CONNECT_DATA=(INSTANCE_NAME=le_nom_de_ton_instance))) pour identifier sur ton pc une source SYSTEM qui corresponde à l'instance SYSTEM de ton pc.
0