[TPI PHP+Oracle] Connexion à Oracle

Connexion à Oracle [TPI PHP+Oracle] - PHP - Programmation

Marsh Posté le 06-04-2004 à 14:59:26    

Bonjour :hello:
Je vais bientôt devoir réaliser un travail de diplôme, qui portera sur la connexion sur plusieurs bases de données oracle à partir de php.
Je n'ai pas encore la donnée définitive, je la posterai dès que possible. Durant ce travail de diplome, j'ai le droit de demander de l'aide ou je veux, mais j'aimerais mieux des indices que des solutions toute faite (car je devrai défendre mon truc lors d'une présentation et tout le tralala).
--------------------------------------------------------
Travail fourni (mis à jour régulièrement)
 
1. Donnée du projet
Sujet :
Le travail consiste à élaborer une application Web nommée O'Viewer. Cette dernière permettra  à un utilisateur d'accéder librement à certaines parties du dictionnaire Oracle.
 
Pré-acquis :
Avoir des notions de PHP,  installé Apache, PHP, et déjà interfacé une base de données Oracle.
 
Environnement de développement :
Un PC en configuration standard de <entreprise>, WIN2000, EasyPHP.
 
Exigences fonctionnelles :
L'administrateur de l'application pourra, après identification:
- Ajouter / Supprimer des requêtes (sur le dictionnaire Oracle) qui seront mises à disposition des utilisateurs.
- Ajouter / Supprimer l'accès à une base de données pour les utilisateurs.
- Tester le fonctionnement d'une requête mise à disposition d'un utilisateur.
 
L'utilisateur pourra librement et sans identification, accéder à toutes les requêtes / instances définies par l'administrateur. Le résultat sera donné sous forme d'un tableau.
 
Il faudra également mettre en place, au niveau Oracle, la structure et les objets permettant de satisfaire au concept de sécurité décrit plus loin.
 
Exigences de l'interface utilisateur :
Le résultat des requêtes donné sous forme de tableau sera complètement dynamique, puisque les colonnes correspondantes aux requêtes ne seront pas connues à l'avance.
 
Les bases de données à disposition ainsi que les requêtes disponibles seront présentées à l'utilisateur sous forme de listes déroulantes. Une seule base et une seule requête pourront être choisies à la fois.  
 
Exigences de qualité :
Afin que l?intégration de l?application O'Viewer dans un site existant soit facile, toutes les mises en forme et mises en pages doivent être réalisées dans un fichier CSS.
 
Le rapport devra décrire et expliquer brièvement le concept de sécurité (fonctionnement DB-link privé / vue)
 
Concept de sécurité :
http://www.mangaclub.ch/urd/imagecenter/Perso/111.gif                
- On distingue deux catégories de base de données : La base d?entrée qui est le point d?entré du système, et les bases de travail, sur lesquelles les utilisateurs veulent avoir les informations du dictionnaire.
- L?utilisateur générique OV_USER et l?administrateur OV_ADMIN ne se connectent, via l?application, que sur la base d?entrée, prévue à cet effet. C?est uniquement sur cette base que l?administrateur OV_ADMIN pourra créer des objets.
- Les bases de travail sont reliées à la base d?entrée par des db-links privés appartenant à OV_ADMIN.
- Seul l?administrateur a les droits de connexion, et de consultation du dictionnaire, sur les bases de travail.  
- L?utilisateur générique OV_USER ne pourra consulter les bases de travail qu?au travers de vues, mises à disposition par OV_ADMIN sur la base d?entrée.
- Lors de la mise à disposition d'une nouvelle base de données, il faudra manuellement sur celle-ci créer le user OV_ADMIN et lui donner les droits nécessaires. (Niveau DBA)
 
2. Planning du projet
http://www.mangaclub.ch/urd/imagecenter/Perso/112.gif
 
3. Journal de travail
Je mets dans cette partie tout ce que j'ai fais, les problèmes rencontrés, l'aide recue, etc.
 
4. Réalisation du projet
Le projet a été séparé en différentes phases, s?inspirant de la méthodologie de travail RUP. Ces différentes phases décrivent une partie du projet. Le détail des phases sera expliqué dans les points ci-dessous, mais voici tout d?abord un résumé succinct de ces différentes phases, dans le cadre de ce projet :
 
Initialisation :  Définit « ce que l?on va réaliser »
Elaboration :  Définit « comment va-t-on le réaliser »
Construction :  La réalisation proprement dite (code)
Transition :  Documentation technique et utilisateur en vue du déploiement
 
4.1. Initialisation
Cette phase a été réalisée en pré acquis du projet. (à rédiger)
 
4.2. Elaboration
4.2.1. Architecture logicielle et matérielle
Cette dernière a été définie dans le cahier des charges par le supérieur professionnel. L?application O?Viewer réalisée en PHP communiquera avec la base d?entrée par l?intermédiaire des utilisateurs OV_ADMIN et OV_USER. Ces derniers pourront accéder aux bases de travail par l?intermédiaire de vues et de DB_LINK. Ce processus sera plus amplement expliqué dans le chapitre sur les concepts de sécurité.
http://www.mangaclub.ch/urd/imagecenter/Perso/111.gif
Dans le cadre du projet, l?application O?Viewer et la base d?entrée se trouvent sur deux serveurs différents. Les bases de travail peuvent être sur le serveur de la base d?entrée ou d?autres serveurs.
 
4.2.2. Acteurs
Pour ce projet nous aurons trois acteurs, l?utilisateur normal, l?utilisateur administrateur et le DBA.
 
Utilisateur normal :
? Accès au formulaire des requêtes sur les différentes instances
? Exécution d?une requête sur une instance choisie
? Accès au résultat d?une requête
 
Utilisateur administrateur :
? Mêmes actions que l?utilisateur normal
? Ajout/suppression de requêtes sur chaque instance
? Ajout/suppression d?accès à une base de données
? Création d?utilisateur sur une instance
 
DBA (DataBase Administrator)
? Créé les utilisateurs sur les bases de travail
 
4.2.3. vue d'ensemble des cas d'utilisation
http://www.mangaclub.ch/urd/imagecenter/Perso/113.gif
 
4.2.4. Détails des cas d?utilisation
UC#1 ? choixRequete
Description Accès aux formulaires des requêtes sur les différences instances
Acteur(s) abilité(s) Normal, administrateur
Pré-conditions Ouverture de l?interface web
Détails Page par défaut de l?application web
Exceptions Aucune
Notes -
Variantes -
 
UC#2 - executionRequete
Description Exécution d?une requête sur les différentes instances proposées
Acteur(s) abilité(s) Normal, administrateur
Pré-conditions UC#1
Détails ? Choisir une instance dans le menu déroulant  
? Cliquer sur le bouton Suivant
? Choisir une requête dans le menu déroulant
? Cliquer sur le bouton exécuter
Exceptions Message d?erreur si l?instance ou la requête n?est pas sélectionnée
Message d?erreur si l?instance n?est pas disponible
Message d?erreur si la requête  n?est pas réalisable
Message d?avertissement si aucune instance n?est disponible
Message d?avertissement si aucune requête n?est disponible
Notes -
Variantes -
 
UC#3 ? resultatRequete
Description Accès au résultat d?une requête
Acteur(s) abilité(s) Normal, administrateur
Pré-conditions UC#1, UC#2
Détails Le résultat de la requête est disponible sous forme de tableau dynamique
Exceptions Aucune
Notes -
Variantes Pour l?administrateur, le chemin suivant peut être employé :
? UC#1
? UC#4
? Cliquer sur une instance
? Cliquer sur le bouton Exécuter correspondant à la requête
 
 
UC#4 ? login
Description Login administrateur
Acteur(s) abilité(s) Administrateur
Pré-conditions UC#1
Détails ? Entrer le nom d?utilisateur
? Entrer le mot de passe
? Cliquer sur le bouton Valider
? Un nouveau menu apparaît
Exceptions Message d?erreur si le nom d?utilisateur ou le mot de passe n?est pas valide
Notes -
Variantes -
 
UC#5 ? ajoutInstance
Description Ajout d?une instance
Acteur(s) abilité(s) Administrateur
Pré-conditions UC#4, UC#9
Détails ? Entrer le nom de l?instance à ajouter
? Cliquer sur le bouton Ajouter
Exceptions Message d?erreur si le nom d?instance contient des caractères non alpha-numériques
Notes -
Variantes -
 
UC#6 ? suppressionInstance
Description Suppression d?une instance
Acteur(s) abilité(s) Administrateur
Pré-conditions UC#4
Détails ? Cliquer sur le bouton Supprimer correspondant à l?instance
Exceptions Avertissement si aucune base n?est disponible
Notes Le UC#9 doit être réalisé à la suite de ce cas d?utilisation
Variantes -
 
UC#7 ? ajoutRequete
Description Ajout d?une requête pour une instance
Acteur(s) abilité(s) Administrateur
Pré-conditions UC#4
Détails ? Cliquer sur l?instance où la requête sera ajoutée
? Entrer la requête
? Cliquer sur le bouton Valider
Exceptions Message d?erreur si la requête est invalide
Notes -
Variantes -
 
UC#8 ? suppressionRequete
Description Ajout d?une requête pour une instance
Acteur(s) abilité(s) Administrateur
Pré-conditions UC#4
Détails ? Cliquer sur l?instance où la requête sera supprimée
? Cliquer sur le bouton Supprimer correspondant à l?instance
Exceptions Aucune
Notes -
Variantes -
 
UC#9 ? ajoutsupprUser
Description Ajout ou suppression de l?utilisateur OV_ADMIN sur une base de travail
Acteur(s) abilité(s) DBA
Pré-conditions Ouverture du client Oracle
Détails ? Réaliser la requête d?ajout ou de suppression de l?utilisateur
? Si ajout, donner les droits à l?utilisateur
Exceptions Aucune
Notes -
Variantes -
 
4.2.5. Modèle des données
Deux variantes se sont présentées concernant le modèle des données. La première était de ne  pas réaliser de tables et d?afficher les vues et instances disponibles d?après les vues du dictionnaire d?Oracle (all_db_links et all_views). La deuxième de créer une ou plusieurs tables contenant ces informations.
 
La première solution présentait deux problèmes. Lorsque l?utilisateur administrateur créé une instance, le DB-LINK va être créé puis testé, et s?il ne fonctionne pas (dans le cas ou l?utilisateur n?a pas été créé sur la base de travail), il sera supprimé. Si l?utilisateur normal arrive au moment où le DB-LINK est créé mais non valide, il pourra tout de même l?utiliser et ceci amènera un message d?erreur. Le deuxième problème était qu?il aurait été plus convivial pour l?utilisateur normal de voir un titre des requêtes lors de la sélection (« Sélection des vues DBA » au lieu de la requête SQL correspondante par exemple). Cette information n?étant pas stockée dans le dictionnaire, il fallait l?entreposer autre part.
 
Pour ces raisons je me suis donc orientée vers la première solution, en créant deux tables. Voici le modèle des données :
http://www.mangaclub.ch/urd/imagecenter/Perso/114.gif
Notons que ces tables seront présentes sur le base d?entrée et créée par l?utilisateur OV_ADMIN. Les bases de travail ne contiendront pas de données relatives à ce projet.
 
4.2.6. Concept de sécurité
Protection du login administrateur :
Sur les pages dédiés à l?administrateur, un contrôle d?authentification de session devra être mis en place afin que l?on ne puisse pas accéder aux pages réservées.
 
Protection des bases de données Oracle :
Afin que l?accès aux données des tables de travail soit disponible à l?utilisateur OV_USER, un système de DB_LINK a été mis en place. Voici un schéma imagé de comment s?exécute une requête de l?utilisateur OV_USER sur une base de travail.
 
http://www.mangaclub.ch/urd/imagecenter/Perso/115.gif
1) L?utilisateur OV_USER est sur la base de données HELLO_ORA. Il a précédemment reçu les droits sur la vue HELLO_VIEW du schéma OV_ADMIN.
2) L?utilisateur OV_USER exécute la vue HELLO_VIEW. Il va donner le relai (symbolisé par une liste de courses) à OV_ADMIN.
3) L?utilisateur OV_ADMIN va emprunter le DB_LINK privé (que lui seul peut emprunter) et arriver sur la base HELLO_CLE
4) L?utilisateur OV_ADMIN de la table HELLO_ORA va prendre l?identité de l?utilisateur OV_ADMIN créé sur HELLO_CLE (dans notre cas, mais plus généralement il prendra l?identité définie dans le DB_LINK). Il va consulter les tables concernées par la vue (seul l?utilisateur OV_ADMIN de la table HELLO_CLE possède les droits d?accès sur ces tables). Puis il effectuera le chemin inverse et donnera les données à l?utilisateur OV_USER.
 
Grâce à ce système, les failles de sécurité sont réduites. Seul l?utilisateur OV_ADMIN a accès aux bases de travail. En utilisant les vues, l?utilisateur OV_USER a donc indirectement l?accès aux tables dont il a besoin.  
 
4.2.7. Prototype
http://www.mangaclub.ch/urd/imagecenter/Perso/116.gif
 
--------------------------------------------------------
Bref. pour le moment je débute la période de pré-acquis, c'est à dire les choses à effectuer avant le travail proprement dit. Cela concerne la connexion à une base oracle, et quelques tests avec les vues, les droits et les DBLink.
 
pour l'instant j'en suis au touuuut début. J'ai installé apache et je te de me connecter sur une base oracle d'un autre serveur. J'ai trouvé ce script (entre autre, j'aimerais plutot utiliser oci par la suite).
 

Code :
  1. // connexion.php se connecte à la base.
  2. $ora_conn = ora_logon("nombase@tnsname","password" );
  3. // Se déconnecter de la base
  4. ora_logoff($ora_conn);


 
et bien sur, l'erreur obtenue suivante:

Code :
  1. Fatal error: Call to undefined function: ora_logon() in c:\www\index.php on line 16


 
J'ai enlevé le commentaire de la ligne "extension=php_oracle.dll" (merci dropsy) dans le php.ini, mais aucun changement à l'horizon malheureusement. Je ne sais pas vraiment chercher à vrai dire, donc je recherche de l'aide auprès de vous :)
 
Merci d'avance pour votre aide, je vous tiendrai au courant de l'évolution de ce travail de diplome qui est une note importante de mon CFC d'informaticienne (formation de 4 ans que je termine en aout).
 
Pour info:
-> 30 avril: pré-acquis
-> début mai: commencement du travail de diplomes (60 périodes de 45 minutes)
-> mi-mai: intervention d'une tierce-personne pour voir ou en est le projet
-> fin-mai: fin du projet
-> juin: présentation orale à 3 personnes (1 personne consciente du dossier; 1 personne toute neuvelle; le maitre d'apprentissage (mais il  n'a pas le droit de poser des questions durant la présentation))


Message édité par urd-sama le 29-04-2004 à 09:41:44
Reply

Marsh Posté le 06-04-2004 à 14:59:26   

Reply

Marsh Posté le 06-04-2004 à 16:06:14    

alors suivant les conseils déjà obtenus, j'ai ajouté l'extension pour la dll oci dans le php.ini.
Ensuite j'ai réalisé un test pour savoir si des fonctions spécifiques à ces dll étaient reconnues. niet.
 
pour terminer il semblerait que je doive installer un client oracle (logique [:kiki]) vu que la base oracle n'est pas chez moi.  
 
de retour jeudi sur le projet :)

Reply

Marsh Posté le 06-04-2004 à 16:47:49    

tu as redémarré apache après avoir modifié le php.ini?
 
sur mon projet, j'avais utilisé les fonctions oci, et ça roulez ;)
 
edit: le petit topic util: http://forum.hardware.fr/hardwaref [...] 8159-1.htm


Message édité par dropsy le 06-04-2004 à 16:49:05
Reply

Marsh Posté le 06-04-2004 à 19:35:26    

ouais je l'avais vu merci ;)
en fait effectivement je n'avais pas redémarré apache (jetez-moi des cailloux [:dawa]) et j'ai des problèmes de location de dll.
j'ai du partir à la bourre et j'ai pas pu tout regardé en détail, je m'y remets jeudi (autre projet pour demain)

Reply

Marsh Posté le 06-04-2004 à 19:38:14    

urd-sama a écrit :

ouais je l'avais vu merci ;)
en fait effectivement je n'avais pas redémarré apache (jetez-moi des cailloux [:dawa]) et j'ai des problèmes de location de dll.
j'ai du partir à la bourre et j'ai pas pu tout regardé en détail, je m'y remets jeudi (autre projet pour demain)


 
si il n'y a que ça pour te faire plaisir:
 
[:drasche]
 
 
 [:neowen]

Reply

Marsh Posté le 13-04-2004 à 10:25:52    

de retour sur le projet.
Alors j'ai enfin compris que en fait le php.ini appelait des librairies oracles situées dans le répertoire php qui elles-même appelaient des librairies utilisées par mon client oracle (si c'est faux dites-le moi).
Ayant compris ceci, j'ai pu modifier mes variables d'environnement (PATH) pour qu'il aille à la bonne place tout seul.
 
La librairie oracle (objets ora_xxx) fonctionne donc apparemment sans autre problème (j'ai pu me connecter sur ma base \o/).
 
Maintenant, autre problème avec l'ajout de la librairie oci (car elle m'a l'air bien plus pratique à utiliser que la ora). First il me fait une erreur comme quoi il me trouve pas la dll dans le répertoire extension de php, malgré que je l'ai bien copié et que j'aie la bonne version.
 
secondo, j'ai une autre erreur, à savoir celle-ci:
http://www.mangaclub.ch/urd/imagecenter/Perso/110.gif
dois-je comprendre que je ne peux pas y faire grand-chose et que cette dll (que je ne peux pas modifier car sur le share spécifique des librairies oracle qu'uitlise mon client) ne contient pas ce qu'il me faut?
 
y'a-t-il une autre solution que de me contenter de la librairie oracle? :(
 
merci :jap:

Reply

Marsh Posté le 13-04-2004 à 13:36:39    

tu as désactivé la dll des ora*? peut-être qu'il aime pas les deux en même temps [:proy]

Reply

Marsh Posté le 13-04-2004 à 13:45:10    

bonne idée, mais apparemment non
je pense que c'est plutot un problème de version, mais je ne sais pas encore quelle version exacte j'aurai pour mon travail de diplome :/

Reply

Marsh Posté le 13-04-2004 à 15:21:53    

perso, j'ai utilisé oci avec oracle 8 et 9i [:proy]

Reply

Marsh Posté le 13-04-2004 à 15:31:19    

apparemment je suis sur une oracle 9.2.0.4

Reply

Marsh Posté le 13-04-2004 à 15:31:19   

Reply

Marsh Posté le 13-04-2004 à 16:21:15    

emploie les fonctions ora_*. Les OCI sont clairement pour Oracle 8 ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 13-04-2004 à 17:23:39    

à l'époque (ça fait un peu plus d'un an maintenant), tout ce que j'ai pu lire conseillait les fonctions oci pour 9i :??:

Reply

Marsh Posté le 13-04-2004 à 17:28:04    

bin avec "php_oci8.dll" comme nom de fichier, j'avais conclu que cette API visait Oracle 8 en priorité [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 13-04-2004 à 17:49:27    

perso j'ai lu que c'était pour les versions 7 et 8, faut que je cherche si c'est pour la 9
effectivement j'ai toujours la ora, si jamais j'utiliserai celle-là mais à première vue la oci a l'air moins chiante à utiliser


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 13-04-2004 à 17:55:42    

urd-sama a écrit :

perso j'ai lu que c'était pour les versions 7 et 8, faut que je cherche si c'est pour la 9
effectivement j'ai toujours la ora, si jamais j'utiliserai celle-là mais à première vue la oci a l'air moins chiante à utiliser


sltm
 
perso, je traine quelque peu sur le forum Oracle de developpez.net...
ce n'est pas pour faire de la pub, mais, moi, ils m'ont bien renseigné.
 
bon courage

Reply

Marsh Posté le 13-04-2004 à 18:08:20    

merci pour le tuyau [:zytra]


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 13-04-2004 à 18:42:21    

urd-sama a écrit :

perso j'ai lu que c'était pour les versions 7 et 8, faut que je cherche si c'est pour la 9
effectivement j'ai toujours la ora, si jamais j'utiliserai celle-là mais à première vue la oci a l'air moins chiante à utiliser


j'avais lu oci -> 8 et 9, mais ora -> 7 :lol:
c'est un peu vieux dans ma tête, pê que je me trompe [:proy]
il me semble que Mara's Dad a bossé sur PHP/Oracle, et en général, il est plutôt de bon conseil ;)


Message édité par dropsy le 13-04-2004 à 18:42:58
Reply

Marsh Posté le 13-04-2004 à 20:16:23    

OCI contient plus de fonctions, et marche tout aussi bien d'un client 9 vers un serveur 8 que d'un client 9 vers un serveur 9 ... ;)

Reply

Marsh Posté le 13-04-2004 à 20:54:43    

dropsy a écrit :


j'avais lu oci -> 8 et 9, mais ora -> 7 :lol:
c'est un peu vieux dans ma tête, pê que je me trompe [:proy]
il me semble que Mara's Dad a bossé sur PHP/Oracle, et en général, il est plutôt de bon conseil ;)


j'ai peut-etre confondu moi aussi :/


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 15-04-2004 à 07:59:16    

good news!
Ce matin en startant mon apache j'ai remarqué qu'il me faisait pas d'erreur, premier [:mlc]
je vais voir ma page et je constate qu'il comprendre mes lib oci, deuxième [:mlc]
j'essaye de piger si j'avais peut-etre mal restarté mon apache, mais non, vu que j'ai fais sur plusieurs jours avec assez de restart de mon pc pour être sure :/, troisième [:mlc]
 
donc deux solutions, ou la dll sur le serveur oracle a changé (peu propable) ou alors cela provient d'un mix à la con (genre un script avec ora + oci + tel manip dans php.ini = BUMP).
 
Bref, le problème avec l'oci semble ok pour l'instant, le blème c'est que je ne sais pas pourquoi ni comment :/

Reply

Marsh Posté le 15-04-2004 à 08:02:33    

t'auras la réponse en le réinstallant [:banzai]
 
[:neowen]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 15-04-2004 à 08:16:29    

drasche a écrit :

t'auras la réponse en le réinstallant [:banzai]
[:neowen]


 [:lacuna coil]

Reply

Marsh Posté le 15-04-2004 à 08:21:17    

non mais sérieusement, t'as intérêt à t'assurer que ce n'est pas le fruit du hasard sinon tu risques de mauvaises surprises au moment du déploiement ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 15-04-2004 à 08:22:39    

ouais je sais bien, et c'est ca qui m'emmerde :/
 
edit: enfin bon, je le déploie pas donc le problème n'est pas vraiment là ;)


Message édité par urd-sama le 15-04-2004 à 08:23:02
Reply

Marsh Posté le 15-04-2004 à 10:52:47    

urd-sama a écrit :

ouais je sais bien, et c'est ca qui m'emmerde :/
 
edit: enfin bon, je le déploie pas donc le problème n'est pas vraiment là ;)


d'un autre côté rien te dit que demain matin ton erreur ne sera pas revenue [:ddr555]


Message édité par dropsy le 15-04-2004 à 10:53:14
Reply

Marsh Posté le 15-04-2004 à 10:57:40    

dropsy a écrit :


d'un autre côté rien te dit que demain matin ton erreur ne sera pas revenue [:ddr555]


tais-toi donc [:ddr555]

Reply

Marsh Posté le 21-04-2004 à 12:34:29    

petit up concernant l'avancée de ce travail de diplome. ma librairie oci fonctionne toujours, j'ai donc fait quelques tests de connexion, requêtes. d'ailleurs pour les requêtes rien de plus simple, pour les intéressés:

Code :
  1. $stmt = ociparse($connexion,"create table scott.hallo (test varchar2(64))" );
  2. ociexecute($stmt);
  3. echo $connexion." created table\n\n";


on peut donc passer sans problèmes tout type de requête (il me semble qu'avec la ora c'était beaucoup plus compliqué).
 
J'ai également fait quelques tests et appris ce qu'étaient les dblink, views, users, etc sous oracle. Pas de problèmes apparents et je pense avoir pigé le truc.
 
sinon je fais encore le pré-acquis cette semaine, et la semaine prochaine je commence le travail à proprement dit, qui durement 3-4 semaines (60 heures réelles). Je vous tiens au courant :jap:

Reply

Marsh Posté le 21-04-2004 à 15:14:56    

allez, une petite variante.
Avec mon client oracle (toad) je fais la requête de création de vue suivante:

Code :
  1. CREATE OR REPLACE FORCE VIEW SCOTT.test AS SELECT TEST FROM HALLO;


tout fonctionne à merveille. Je transpose ceci dans le code, de cette manière:

Code :
  1. $stmt = ociparse($connexion,'CREATE OR REPLACE FORCE VIEW SCOTT.test (TEST) AS SELECT TEST FROM HALLO;');
  2. ociexecute($stmt);


et là, j'ai une erreur ORA-00911: invalid character
j'ai regardé la doc, et cette dernière dit que cette erreur intervient lorsqu'il y a des caractères spéciaux dans les noms, et que l'on a pas mis entre "". vu que ce n'est pas le cas pour cette requête je cherche à savoir pourquoi il ne veut pas me la faire.

Reply

Marsh Posté le 21-04-2004 à 15:30:22    

je vais peut-être dire une connerie (j'ai jamais utilisé les vues), mais les requêtes ne sont pas identiques ;)
il y a "(TEST)" en plus [:proy]


Message édité par dropsy le 21-04-2004 à 15:30:37
Reply

Marsh Posté le 21-04-2004 à 15:32:57    

j'ai bien très bien compris ce que tu as voulu dire, mais si je mets :
OR REPLACE FORCE VIEW SCOTT.test "(TEST)" AS SELECT TEST FROM HALLO
il me fait une erreur sous php et toad: missing keywords

Reply

Marsh Posté le 21-04-2004 à 15:42:26    

urd-sama a écrit :

j'ai bien très bien compris ce que tu as voulu dire, mais si je mets :
OR REPLACE FORCE VIEW SCOTT.test "(TEST)" AS SELECT TEST FROM HALLO
il me fait une erreur sous php et toad: missing keywords


bonjour,
 
 
je plussote ce que dit dropsy, tes 2 requetes ne sont pas identiques.
 
autre chose, tu as mis le point-virgule à l'intérieur de ton expression alors qu'il n'y était pas dans l'exemple précédent
 

Code :
  1. $stmt = ociparse($connexion,"create table scott.hallo (test varchar2(64))" );
  2.   ociexecute($stmt);
  3.   echo $connexion." created table\n\n";


 
ça pourrait venir de là aussi ?
 
P.S.: je n'y connais rien en php...
 
bon courage

Reply

Marsh Posté le 21-04-2004 à 15:44:43    

oui mais c'est le but qu'elle ne soit pas identiques, ou alors je ne peux pas utiliser le ociparse pour passer une autre requête?
 
purée, en testant "pour de rire" en enlevant le point-virgule ca a l'air de fonctionner [:mlc]
 
script:

Code :
  1. $stmt = ociparse($connexion,"CREATE OR REPLACE FORCE VIEW SCOTT.test (TEST) AS SELECT TEST FROM HALLO" );
  2. ociexecute($stmt);

Reply

Marsh Posté le 21-04-2004 à 15:45:42    

curieux on
ça sers à quoi le (test)? c'est pour faire un alias ?
curieux off
 
merci

Reply

Marsh Posté le 21-04-2004 à 15:47:01    

je sais pas exactement, c'est les colonnes sélectionnées dans la vue apparemment (si je les mets pas ca va aussi)
 
pour info, doc sur la syntaxe des vues:
http://www.laltruiste.com/document [...] eview.html

Reply

Marsh Posté le 21-04-2004 à 15:48:55    

ah ok,
 
dsl, j'étais à côté de la plaque, c'est en effet la colonne de ta vue...
 
merci
 
---->[]

Reply

Marsh Posté le 21-04-2004 à 16:44:08    

urd-sama a écrit :

j'ai bien très bien compris ce que tu as voulu dire, mais si je mets :
OR REPLACE FORCE VIEW SCOTT.test "(TEST)" AS SELECT TEST FROM HALLO
il me fait une erreur sous php et toad: missing keywords


 
bah je disais juste que la requête que tu passais à TOAD n'était pas la même que celle que tu faisais en php ;)
 
et maintenant que tu le dis, c'est vrai que je ne met jamais le ; à la fin de mes requêtes, mais le message d'erreur n'était pas des plus explicites :D

Reply

Marsh Posté le 21-04-2004 à 17:20:02    

clair, en plus je pensais que c'était totalement facultatif dans ce cas-là ;)
c'est bon à savoir en tout cas

Reply

Marsh Posté le 26-04-2004 à 14:59:07    

voilà je recois mon cahier des charges et débute le travail demain matin.
j'ai pu faire mes tests oracle ainsi qu'une ébauche d'interface html et de cas d'utilisation.
mon oci fonctionne toujours, espérons que ca dure :/

Reply

Marsh Posté le 26-04-2004 à 15:21:36    

copie tes fichiers de configuration de côté (httpd.conf et php.ini), on sait jamais ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 26-04-2004 à 15:53:08    

good idea

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed