Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2008, 10h52   #1
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 223
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 223
Points : 28
Points : 28
Par défaut executer une requette sur une base Oracle 10g à partir de php

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.
ledawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 11h03   #2
Membre régulier
 
Inscription : août 2005
Messages : 342
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 342
Points : 76
Points : 76
Envoyer un message via MSN à akrogames
Alors suivant ce que tu a activé tu a plusieurs choix:

Moi j'utilise ora:

Tient mes fonctions:

Code :
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&egrave;me pour se connecter &agrave; 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);
}
 
 
?>
akrogames est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 11h44   #3
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 223
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 223
Points : 28
Points : 28
ok merci beaucoup
mais ton fichier config.inc.php c'est toi qui la créer? il y a quoi dedans?
ledawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 11h48   #4
Membre régulier
 
Inscription : août 2005
Messages : 342
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 342
Points : 76
Points : 76
Envoyer un message via MSN à akrogames
Oui je l'ai cré il y a:
Code :
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="*****";
 
?>
akrogames est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 12h28   #5
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 223
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 223
Points : 28
Points : 28
j'utilise easyphp 1.8. vu que cette version ne supporte pas déjà php5 je voudrais savoir si les instructions sont compatibles.
ledawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 13h07   #6
Membre régulier
 
Inscription : août 2005
Messages : 342
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 342
Points : 76
Points : 76
Envoyer un message via MSN à akrogames
Bah euh... Normalement oui...

Sinon essaye avec oci_logon();

Tient moi au courant si sa marche ou pas...
akrogames est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 11h57   #7
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 223
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 223
Points : 28
Points : 28
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 :
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>
ledawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 08h44   #8
Invité régulier
 
Étudiant
Inscription : juillet 2007
Messages : 11
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 11
Points : 6
Points : 6
Envoyer un message via MSN à Kentpachi
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 :
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;
	}
}
?>
Kentpachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2008, 17h23   #9
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 223
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 223
Points : 28
Points : 28
excusez mon ignorance mais après avoir écrit cette classe, comment on fait appelle aux fonctions?
ledawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h56.


 
 
 
 
Partenaires

Hébergement Web