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 05/06/2008, 11h18   #1
Invité de passage
 
Inscription : mai 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 53
Points : 1
Points : 1
Par défaut Requête SQL PHP Oracle

bonjour à tous
j'aimerais savoir si la requête SQL que j'ai inséré dans mon tableau sera correcte ou non, et donc dans le cas ou elle serait fausse, quelles seraient mes erreurs. Je n'ai pas encore accès au bases de données donc j'aimerais juste savoir si "techniquement" mon code est correct

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>
</head>
<title>
Projet Oracle php
</title>
<body>
<?php
include("connexion.php");
?>

<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />

<div id="bandeau">

<h1>Bienvenue dans votre outil de recherche d'informations </h1>
<hr>
</div>
<div id="contenu">

<center><table BORDER=5  WIDTH=40% HEIGHT=600 BORDERCOLOR="#336699" CELLSPACING=2>
   <caption>Infos Base 1</caption>

   <thead> <!-- En-tête du tableau -->
       <tr>
           <th>Informations</th>
           <th>Valeurs</th>
                 </tr>
   </thead>

  
   <tbody> <!-- Corps du tableau -->
       <tr>
           <td>Date de démarage</td>
           <td>$query = "SELECT STARTUP_TIME FROM v$instance";</td>           
   </tbody>
</table>
<a href="Y:\Documents stage\Site Projet\projet.html" title="Pour revenir au sommaire, cliquez ici !!">Revenir au sommaire</a></p>
<div id="piedpage">
<br>

<center><p>Cette page a été créée par CADET Julien, stagiaire à la DSI</p></center></div>

<?php
include("deconnexion.php");
?>
</body>
</html>
</body>
</html>

Merci à tous de votre aide
julien0709 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 14h50   #2
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Non, il manque plein de trucs :
  1. Ton code est directement dans le bloc HTML et non PHP (Manque l'encapsulation).
  2. Ta requête comporte un '$' donc il faut soit l'échapper soit précéder celui-ci d'un '\'.
  3. Le ';' à la fin de la requête ne sert à rien.
  4. Il te manque tout le bloc d'appel à la base et la boucle de traitement du retour des données qui affichera le résultat avec des 'print' ou des 'echo'.
Bref, mis à part qu'il manque tout, cela semble correct...

__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 14h58   #3
Invité de passage
 
Inscription : mai 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 53
Points : 1
Points : 1
Citation:
Envoyé par philcero Voir le message
Non, il manque plein de trucs :
  1. Ton code est directement dans le bloc HTML et non PHP (Manque l'encapsulation).
  2. Ta requête comporte un '$' donc il faut soit l'échapper soit précéder celui-ci d'un '\'.
  3. Le ';' à la fin de la requête ne sert à rien.
  4. Il te manque tout le bloc d'appel à la base et la boucle de traitement du retour des données qui affichera le résultat avec des 'print' ou des 'echo'.
Bref, mis à part qu'il manque tout, cela semble correct...

Merci pour votre correction
j'aimerais savoir si vous pouviez me montrer un exemple de corrigé, car la je me noie littéralement...
julien0709 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 15h35   #4
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Là où tu as ta requête insère un code comme dans les exemples de la documentation PHP/OCI.

Je te mets ici le deuxième exemple de la documentation PHP.
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
?php

$conn = oci_connect('hr', 'hr', 'orcl');
if (!$conn) {
  $e = oci_error();
  print htmlentities($e['message']);
  exit;
}

$query = 'SELECT * FROM DEPARTMENTS';

$stid = oci_parse($conn, $query);
if (!$stid) {
  $e = oci_error($conn);
  print htmlentities($e['message']);
  exit;
}

$r = oci_execute($stid, OCI_DEFAULT);
if (!$r) {
  $e = oci_error($stid);
  echo htmlentities($e['message']);
  exit;
}

print '<table border="1">';
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
  print '<tr>';
   foreach ($row as $item) {
     print '<td>'.($item?htmlentities($item):'&nbsp;').'</td>';
   }
   print '</tr>';
}
print '</table>';

oci_close($conn);
?>
__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 15h45   #5
Invité de passage
 
Inscription : mai 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 53
Points : 1
Points : 1
Citation:
Envoyé par philcero Voir le message
Là où tu as ta requête insère un code comme dans les exemples de la documentation PHP/OCI.

Je te mets ici le deuxième exemple de la documentation PHP.
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
?php

$conn = oci_connect('hr', 'hr', 'orcl');
if (!$conn) {
  $e = oci_error();
  print htmlentities($e['message']);
  exit;
}

$query = 'SELECT * FROM DEPARTMENTS';

$stid = oci_parse($conn, $query);
if (!$stid) {
  $e = oci_error($conn);
  print htmlentities($e['message']);
  exit;
}

$r = oci_execute($stid, OCI_DEFAULT);
if (!$r) {
  $e = oci_error($stid);
  echo htmlentities($e['message']);
  exit;
}

print '<table border="1">';
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
  print '<tr>';
   foreach ($row as $item) {
     print '<td>'.($item?htmlentities($item):'&nbsp;').'</td>';
   }
   print '</tr>';
}
print '</table>';

oci_close($conn);
?>
Merci beaucoup monsieur le DBA oracle
Ouahouh je ne voyais pas ça aussi compliqué (c'est ce qu'on dit quand on ne connait pas !!!"
donc en fait je dois écrire un script de connexion au début de ma page, stocker les informations que les SELECT renvois dans des variables, et les afficher ensuite.

dans mon cas ou je ve afficher la date de démarage de ma base ça donnerait quoi ? (euh si j'en demande beaucoup il faut me dire )
julien0709 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 15h52   #6
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 975
Points : 3 975
Citation:
Envoyé par julien0709 Voir le message
dans mon cas ou je ve afficher la date de démarage de ma base ça donnerait quoi ? (euh si j'en demande beaucoup il faut me dire )
Je connais rien en php, mais je changerais
Code :
$query = 'SELECT * FROM DEPARTMENTS';
en
Code :
$query = 'SELECT STARTUP_TIME FROM v$instance';
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 16h03   #7
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Allez, on va te faire un peu réfléchir...

Voici un autre exemple, plus simple (Sorti de la doc PHP).
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 <?php
$connection = oci_connect("apelsin", "kanistra");

$query = "SELECT id, name FROM fruits";

$statement = oci_parse ($connection, $query);
oci_execute ($statement);

while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
    echo $row[0] . ' et ' . $row['ID'] . ' sont identiques<br />';
    echo $row[1] . ' et ' . $row['NAME'] . ' sont identiques<br />';
}
?> 
Conseil : Lit la doc PHP à la section Oracle.

http://www.php.net/manual/fr/
__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 16h36   #8
Invité de passage
 
Inscription : mai 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 53
Points : 1
Points : 1
Citation:
Envoyé par philcero Voir le message
Allez, on va te faire un peu réfléchir...

Voici un autre exemple, plus simple (Sorti de la doc PHP).
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 <?php
$connection = oci_connect("apelsin", "kanistra");

$query = "SELECT id, name FROM fruits";

$statement = oci_parse ($connection, $query);
oci_execute ($statement);

while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
    echo $row[0] . ' et ' . $row['ID'] . ' sont identiques<br />';
    echo $row[1] . ' et ' . $row['NAME'] . ' sont identiques<br />';
}
?> 
Conseil : Lit la doc PHP à la section Oracle.

http://www.php.net/manual/fr/

Bon, voila de quoi me faire travailler ce soir et demain. je ne manquerai pas d'aller faire un tour sur la doc PHP. j'ai déja regardé un peu sur le manuel PHP/OCI. je comprends globalement, mais il me manque encore un peu de grain a moudre comme disait mon prof d'éco.
Ce PHP est un peu trop évolué pour moi, mais après tout, je suis là pour apprendre.

sinon, auriez vous un autre conseil à me donner vis à vis de mon projet où je dois afficher les infos sur la base Oracle de mon choix, sur une page PHP ?
il faut que je sache où je vais et comment j'y vais !!!

Merci encore et à bientôt sur le forum
julien0709 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 17h08   #9
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
D'un côté apprends à faire une connexion PHP/Oracle et à traiter le retour avec affichage.

Ensuite t'as plus qu'à te taper la documentation Oracle® Database Reference surtout la partie des vues V$ où tu trouveras tout ton bonheur.

Bon courage, il y en a 363 en 10G !



Cela dit fis-toi au nom des vues, cela permet de trouver assez rapidement.
__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2008, 14h39   #10
Invité de passage
 
Inscription : mai 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 53
Points : 1
Points : 1
Citation:
Envoyé par philcero Voir le message
Allez, on va te faire un peu réfléchir...

Voici un autre exemple, plus simple (Sorti de la doc PHP).
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 <?php
$connection = oci_connect("apelsin", "kanistra");

$query = "SELECT id, name FROM fruits";

$statement = oci_parse ($connection, $query);
oci_execute ($statement);

while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
    echo $row[0] . ' et ' . $row['ID'] . ' sont identiques<br />';
    echo $row[1] . ' et ' . $row['NAME'] . ' sont identiques<br />';
}
?> 
Conseil : Lit la doc PHP à la section Oracle.

http://www.php.net/manual/fr/
Bon alors je me suis penché sur ce code et la doc php
ce que je comprends (pense comprendre):
$connection : variable dans laquelle on stocke la connexion
$query : variable ou je stocke ma requête SQL
$statement : variable dans laquelle on stocke le statu de la connexion : ok ou non
et ensuite on utilise oci_connect pour se connecter à la base avec les paramètres qui sont les variables que j'ai citées au dessus

déjà, j'espère que je ne me trompe pas !!
mais que ve dire la suite du code ? je ne sais pas si j'en aurai besoin...
julien0709 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 12h03   #11
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Le "Statement" est le ta requête préparée côté client (coche OCI).

Une fois la requête préparée du l'exécute et tu exploite le résultat via la procédure "oci_fetch..." qui te renvoi une ligne à la fois sous forme de tableau.

Bref, lis la documentation PHP/Oracle tout y est clairement expliqué...
__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 11h04   #12
Invité de passage
 
Inscription : mai 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 53
Points : 1
Points : 1
Citation:
Envoyé par philcero Voir le message
Le "Statement" est le ta requête préparée côté client (coche OCI).

Une fois la requête préparée du l'exécute et tu exploite le résultat via la procédure "oci_fetch..." qui te renvoi une ligne à la fois sous forme de tableau.

Bref, lis la documentation PHP/Oracle tout y est clairement expliqué...
Bon, j'ai jeté un coup d'oeil à la documentation PHP/oracle
je comprends certaines choses, et j'enrichis ma culture PHP
Mais en fait, je n'ai pas besoin d'afficher le résultat de ma requête dans un tableau, puisque le tableau existe déja dans ma page html.
j'ai déja prévu une case dans mon tableau, et en fait je n'ai que la requête à placer à l'intérieur.
ai-je choisi la bonne solution ?
comment dois-je m'y prendre pour faire un affichage simple de la réponse à ma requête SQL ?
un simple "echo" ...
julien0709 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 11h16   #13
Invité de passage
 
Inscription : mai 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 53
Points : 1
Points : 1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
<?php
$connection = oci_connect("nomdelabase", "motdepasse");
 
$query = ‘SELECT * FROM v$sga;';
 
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
 
oci_fetch_object($statement);
?>
Que pensez vous de ce code ?
est ce qu'il me retourne bien le résultat que je lui demande ?
j'ai suivi (presque) a la lettre le manuel php oracle

Merci
julien0709 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2008, 13h51   #14
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Remarques :
  • Spécifie tout de même le nom de ta base dans oci_connect (Troisième paramètre).
  • Le point-virgule à la fin de la requête ne sert à rien ici.
  • Utilise plus-tôt un oci_fetch_array(...) pour récupérer le résutlat afin de traiter un tableau (C'est plus simple).
__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero 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 01h56.


 
 
 
 
Partenaires

Hébergement Web