IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requête SQL PHP Oracle


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    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 : 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>
    </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

  2. #2
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    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...


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    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...

  4. #4
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    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 : 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
    ?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);
    ?>

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    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 : 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
    ?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 )

  6. #6
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = 'SELECT * FROM DEPARTMENTS';
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = 'SELECT STARTUP_TIME FROM v$instance';

  7. #7
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Allez, on va te faire un peu réfléchir...

    Voici un autre exemple, plus simple (Sorti de la doc PHP).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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/

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    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.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  11. #11
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    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é...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    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" ...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  14. #14
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    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).

Discussions similaires

  1. Initiation à l'optimisation de requêtes SQL sous ORACLE
    Par Vincent Rogier dans le forum Contribuez
    Réponses: 12
    Dernier message: 30/09/2011, 14h09
  2. [Oracle] accents oracle requête sql/php
    Par falco- dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/10/2008, 13h40
  3. Requête SQL sous oracle
    Par milki1 dans le forum SQL
    Réponses: 2
    Dernier message: 12/06/2008, 15h13
  4. [SQL] Problème requêtes SQL / php
    Par laulau37 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 02/07/2007, 15h48
  5. [SQL] Problème construction requête SQL - PHP
    Par laulau37 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/06/2007, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo