Bonjour
j'ai une page web qui doit se connecter à une base oracle 10g. je voudrais savoir comment faire pour se connecter à la base oracle et d'y executer des requettes sql.
Bonjour
j'ai une page web qui doit se connecter à une base oracle 10g. je voudrais savoir comment faire pour se connecter à la base oracle et d'y executer des requettes sql.
Alors suivant ce que tu a activé tu a plusieurs choix:
Moi j'utilise ora:
Tient mes fonctions:
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 /* * *Fichier de manipulation de la Base de données *Auteur ECAROT Thibaud *Version: PHP 5 *On surdéfinit des fonctions comme ora_close() ou ora_logoff() pour permettre une meilleure lecture du code */ /* *Fonction connexion() *Permet de se connecter à la DataBase *3 variables dans config.inc.php *Renvoie le pointeur de connexion */ function connexion() { require('config.inc.php'); $domain = $user."@".$host; $ora_conn = ora_logon($domain, $passwd); if (!$ora_conn) { echo "<div style=\"background-color: #DDDDDD;width:300px\"><font color=\"red\">Problème pour se connecter à la base.<BR>\n"; echo ora_error(), "\n"; echo "</font></div>"; } return $ora_conn; } /* *Fonction ora_query() *Fonction qui execute une requête sur le serveur Oracle *Paramètres: @sql où $sql est une requête *@ora_conn où $ora_conn est le pointeur de connexion *Renvoie les résultats d'une requête */ function ora_query($sql,$ora_conn) { // open a cursor $curs = ora_open($ora_conn); // check that SQL is OK if (!@ora_parse($curs,$sql)) { echo "Erreur dans le parsing de la requête. Error was :", ora_error($curs); } else { ora_exec($curs); } return $curs; } /* *Fonction close qui permet de fermer un curseur en cour *PARAM: @$curseur qui est le curseur en cours */ function close($curseur) { ora_close($curseur); } /* *Fonction deco() qui permet de fermer une connexion au serveur *PARAM: @$connexion qui est le pointeur de connexion */ function deco($connexion) { ora_logoff($connexion); } ?>
ok merci beaucoup
mais ton fichier config.inc.php c'est toi qui la créer? il y a quoi dedans?
Oui je l'ai cré il y a:
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 <?php /* * *Fichier de configuration pour se connecter à la base *Auteur ECAROT Thibaud *Version: PHP 5 * */ $host="HOST"; $user="test"; $passwd="*****"; ?>
j'utilise easyphp 1.8. vu que cette version ne supporte pas déjà php5 je voudrais savoir si les instructions sont compatibles.
Bah euh... Normalement oui...
Sinon essaye avec oci_logon();
Tient moi au courant si sa marche ou pas...
voila le code de ma page web. en plus de ce code j'ai créé deux fichiers avec les fonctions précédentes.la page me dit qu'il y a une erreur a la ligne 22 mais je ne vois pas l'erreur.
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 <html> <head> <title>Database query</title> </head> <body> <?php $login = "hr"; $pwd = "hr"; if (isset($_POST['date'])) { $date = $_POST['date']; } ?> <img src="image" align="middle"> <hr noshade> <center>Enter the date of your query</center> <form action = "http://127.0.0.1:8080/apex/xe" method = "POST"> <center> //c'est ici l'erreur <p align="center">DATE: <input type="text" name="date" value="01/01/2008"> <?php trim($date) ; ?></p> <?php function returnvaliddate($date) { //pré-format $date=trim($date); $date=str_replace('-','/',$date); $date=str_replace(' ','/',$date); $date=str_replace('_','/',$date); $date=str_replace('.','',$date); if (!ereg('/', $date)) //error after the format { return false; } return $date; } ?> <br/> <input type = reset name = "reset" value="EFFACER"></input> <input type = submit name = "ok" value="ENVOYER"><a href = sgbd.php></a></input> </center> </form> </body> </html>
dis nous quelle est cette erreur ? et la ligne 22 correspond à quoi
Note : oci_logon est déprécié , si tu utilise PHP5 il faut que tu utilise oci_connect() oci_logon marchera quand même car ils ont fait un alias pour garder la compatibilité ascendante mais fait attention à ça ..
voici une classe que j'utilise et qui fonctionne sous PHP5 et oracle 10g avec easyphp2.0 si ça peut t'aider
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 <?php /** \brief Gestion du SGBD Classe SQL : Cette classe permet la connexion entre l'application et le SGBD Elle sera utilisée par les différentes méthodes de la couche métier. */ class Sql{ protected $user; protected $pass; protected $server; protected $connexionEnCours; protected $nbligneaf = 0; // ** Retourne le nombre de ligne affecté par la dernière requête */ protected $statut = 'Déconnecté'; function __construct() { $this->user = ''; $this->pass = ''; $this->server = ''; } public function connect() { $this->user = __USER__; $this->pass = __PASS__; $this->server = __SERVER__; $this->connexionEnCours = oci_connect($this->user,$this->pass,$this->server); if($this->connexionEnCours) $this->statut = 'Connecté!'; } public function close() { //On se déconnecte du serveur ocilogoff($this->connexionEnCours); $this->statut = 'Déconnecté'; } /** \param string req requête sql à executer \param bool indique si on doit retourner un objet via oci_fetch_object ou non, retour vaut true si oui false si non. */ public function select($req,$objet = null) { //On parse la requête à effectuer sans oublier de lui passer la chaine de connexion en paramêtre $statement = ociparse($this->connexionEnCours,$req); ociexecute($statement); $tab = array(); if($objet) { while($ligne = oci_fetch_object($statement,OCI_BOTH)) { $tab[] = $ligne; } } else { while($ligne = oci_fetch_array($statement,OCI_BOTH)) { $tab[] = $ligne; } } return $tab; } public function query($req) { //On parse la requête à effectuer sans oublier de lui passer la chaine de connexion en paramêtre if(!$statement = ociparse($this->connexionEnCours,$req)) { oci_rollback($this->connexionEnCours); $this->statut = 'Erreur lors de l\'appel d\'ociparse la requête est incorrecte'; return false; } if(!ociexecute($statement,OCI_DEFAULT)) { //Il y a eu un problème avec la transaction. oci_rollback($this->connexionEnCours); $this->statut = 'Erreur lors de la dernière transaction avec la base de donnée. Aucune modification n\'a été importé'; return false; } //Si nous parvenons jusqu'à là, tout s'est bien déroulé. oci_commit($this->connexionEnCours); $this->statut = 'Transaction réussie'; $this->nbligneaf = oci_num_rows($statement); return true; } function __get($nom) { return $this->$nom; } function __set($nom,$valeur) { $this->$nom = $valeur; } } ?>
excusez mon ignorance mais après avoir écrit cette classe, comment on fait appelle aux fonctions?
Partager