{Oracle} afficher une table en php

Résolu
Bonjour,
j'ai crée une base de donnée d'une bibliothèque
mais mon problème c'est que je n'arrive pas a crée une page php qui permet d'affiche la liste des livres de ma bibliothèque
une requete évidente serais par exemple :
select* from livre ;
mais comment afficher les données de la table sur une page php
es ce quelqu'un pourrais me donner de l'aide svp
merci
Configuration: Windows XP
Firefox 3.0.16

11 réponses

  1. bonjour,j'aurais souhaite comprendre et maitriser le bon fonctionnement d'une base de donnees tout comme vous et en se basant beaucoup plus sur les requettes....merci
    0
    1. Bonjour , je voudrais aussi recuperer un base ORACLE en php , mais j'ai un probleme , c'est que quand je veut faire juste un test pour accedez a ma base ORACLE en utilisant la fonction "oci_connect" il me dit qu'elle n'est pas definit .
      Donc je sais pas s'il y avait des manip anterieur a effectuer :/
      un petit coup de main s'il vous plait ?
      0
      1. je ne pourais pas te dire :s, la comme ca je sais pas, peut etre une incompatibilité?
        je ne connais pas assez oracle pour te dire

        Cordialement
        Dragondark de lonlindil
        0
        1. donc ce qui pose probleme est la :

          $ora_cur = ora_do($ora_conn, $query); 


          test un

          print_r(ora_do($ora_conn, $query));//ca devrais rien retourner de plus


          je ne connais aps oracle mais cherche de ce coter la ;) si il y a pas une erreur sur la connection et la requete?

          peut etre que tu a inverser les parametre? :o

          ------------------------------------------------------------------------------------------------------------------------------

          $connect = ocilogon("login","mdp","chaine_hote");
          //Connexion à la base
          
          $stmt = ociparse($connect,$query);
          //On parse la requête à effectuer sans oublier de lui passer la chaine de connexion en paramêtre
          
          ociexecute($stmt,OCI_DEFAULT);
          //On execute la requête en lui passant l'option OCI_DEFAULT
          
          
          echo "Début----<br>\n\n";
           
          while (ocifetch($stmt)){ //On parcourt les résultats
            echo ociresult($stmt,1); //On récupère le premier champ de la ma_table
            echo ociresult($stmt,2); //On récupère le deuxième champ de la ma_table
          }
              
          echo "<br>----fin\n\n";
          
          ocilogoff($connect);
          //On se déconnecte du serveur


          essaye un truc comme ca

          Cordialement
          Dragondark de lonlindil
          --
          LE POUVOIR EST NOTRE GLOIRE
          LE CŒUR NOTRE HONNEUR
          0
          1. merci pour ton aide Dragondrak
            je suis parvenu ,grasse a toi,a faire les corrections nécessaires pour que le code fonctionne :
            voila un code valide :

            <?php
            /* oci_fetch_all exemple mbritton at verinet dot com (990624) */
            
            $conn = oci_connect("biblio", "codee");
            
            $stmt = oci_parse($conn, "select code_livre,titre,themes from livre");
            
            oci_execute($stmt);
            
            $nrows = oci_fetch_all($stmt, $results);
            if ($nrows > 0) {
               echo "<table border=\"1\">\n";
               echo "<tr>\n";
               foreach ($results as $key => $val) {
                  echo "<th>$key</th>\n";
               }
               echo "</tr>\n";
               
               for ($i = 0; $i < $nrows; $i++) {
                  echo "<tr>\n";
                  foreach ($results as $data) {
                     echo "<td>$data[$i]</td>\n";
                  }
                  echo "</tr>\n";
               }
               echo "</table>\n";
            } else {
               echo "Pas de ligne<br />\n";
            }      
            echo "$nrows Lignes lues<br />\n";
             
            oci_free_statement($stmt);
            oci_close($conn);
            ?>


            mais peux tu me dire pourquoi le premier code ne fonctionne pas stp ?!
            tu m as dit que la fonction :
            $ora_cur = ora_do($ora_conn, $query);

            n a pas été lancer
            pourquoi ?
            et comment tu as su que c'est cette fonction qui cause problème dans le code php ?
            merci
            0
        2. le faite que cela ne te retourne rien signifie que ta requete ne fonctionne pas dans ton code,

          donc l'erreur se situe avant le print_r

          essaye de rajouter
          print $query
          en debut de fichier

          Cordialement
          Dragondark de lonlindil
          0
          1. c'est fait
            et ca donne le script de la requete :
            select code_livre,titre,themes from livre

            peut être que la connexion a la base de donnée n'a pas eux lieu ?!
            j'ai déjà exécuté cette requête dans sur oracle et elle fonctionne correctement !!!
            0
        3. le faite qu'il t'ai retourner

          Notice: Undefined variable: results in C:\wamp\www\essai.php on line 11

          signifie que ta requete n'a rien retourner donc oui ta table est vide pour cette requete, verifie la en la testant drirectement dans oracle.

          apres :

          rajoute cette ligne

          print_r($ora_cur); 
          et dis nous si ca t'affiche quelque chose

          ps : quand tu affiche du code n'oublie pas les balise code, ca permet de mieu le lire ;)

          <? 
          	// Il suffit de mette en commentaire error_reporting pour faire du 
          	// débogage - voir quand il n'y a aucun résultat "NO DATA FOUND" par exemple. 
          	error_reporting(0); 
          
          	// Crée un tableau, un curseur, compte les colonnes, 
          	// fait le fetch en insérant dans le tableau. 
          	$results = array(); 
          	$ora_cur = ora_do($ora_conn, $query); 
          
          	//affiche les entree dans $ora_cur
          	print_r($ora_cur); 
          
          	if ($ora_cur) 
          	{ 
          		// Nombre de colonnes 
          		$numCols = ora_numcols($ora_cur); 
          
          		// Prends la première ligne et la met dans le tableau... 
          		$row = array(); 
          		for($i=0; $i<$numCols; $i++) 
          		{ // Parcours des colonnes 
          			$row[ora_columnname($ora_cur, $i)] = ora_getcolumn($ora_cur,$i); 
          		} 
          		array_push($results,$row); 
          
          		// "Fetch" des lignes, une par une, en créant un tableau pour chaque ligne. 
          		// Chaque tableau est inséré à la suite du tableau $results. 
          		while (ora_fetch($ora_cur)) 
          		{ // Pour chaque ligne 
          			$row = array(); 
          			for($i=0; $i<$numCols; $i++) 
          			{ // Chaque colonne 
          			$row[ora_columnname($ora_cur, $i)] = ora_getcolumn($ora_cur,$i); 
          			} 
          		array_push($results,$row); 
          		}
          	} 
          // Le fameux error_reporting. Mettre en commentaire pour voir les NO_DATA_FOUND. 
          error_reporting(1); 
          ?>


          Cordialement
          dragondark de lonlindil
          1
          1. c'est fait
            j'ai ajouté la commande print_r
            mais ça donne toujours une page vide
            et j'ai testé la requête dans ma base de donnée et ça marche très bien !!!!
            c'est peut être parce que j utilise oci8 et non pas ora ?
            0
        4. remplace i
          f (count($results)) // Si y'a des résultat 


          par

          if (isset($results)&&count($results)) // Si y'a des résultat 


          meme le count($results) deviens inutile dans ce cas la car si $result n'existe pas (donc rien dedans) isset($results) retournera false

          Cordialement
          Dragondark de lonlindil
          0
          1. j'ai fait la modification que tu as proposé dragondark
            la page php est lancée correctement!!
            sauf que je reçoit une page vide !!
            donc le contenue de la table n'est pas affiché !!!
            0
        5. <?php
          include ("connexion.php");

          echo "Liste des livres";

          $query = "SELECT code_livre,titre,themes from livre";
          include("select.php");

          // Parcours du tableau $results pour afficher les résultats :
          if (count($results)) // Si y'a des résultat
          {
          reset($results); // se placer à la première ligne du tableau $results
          while($res = each($results)) // Parcourir le tableau $results
          {
          echo $res[1]["CODE_LIVRE"]; // code_livre
          echo $res[1]["TITRE"]; // titre
          echo $res[1]["THEMES"]; //themes
          // Attention, il faut bien mettre les noms de colonnes en MAJUSCULE
          // et entre " et "

          // Traitement...
          echo "<br />";
          }
          }

          include ("deconnexion.php");

          ?>

          et ça c'est le fichier select.php

          <? // Il suffit de mette en commentaire error_reporting pour faire du
          // débogage - voir quand il n'y a aucun résultat "NO DATA FOUND" par exemple.
          error_reporting(0);

          // Crée un tableau, un curseur, compte les colonnes,
          // fait le fetch en insérant dans le tableau.
          $results = array();
          $ora_cur = ora_do($ora_conn, $query);

          if ($ora_cur)
          {
          // Nombre de colonnes
          $numCols = ora_numcols($ora_cur);

          // Prends la première ligne et la met dans le tableau...
          $row = array();
          for($i=0; $i<$numCols; $i++)
          { // Parcours des colonnes
          $row[ora_columnname($ora_cur, $i)] = ora_getcolumn($ora_cur,$i);
          }
          array_push($results,$row);

          // "Fetch" des lignes, une par une, en créant un tableau pour chaque ligne.
          // Chaque tableau est inséré à la suite du tableau $results.
          while (ora_fetch($ora_cur))
          { // Pour chaque ligne
          $row = array();
          for($i=0; $i<$numCols; $i++)
          { // Chaque colonne
          $row[ora_columnname($ora_cur, $i)] = ora_getcolumn($ora_cur,$i);
          }
          array_push($results,$row);
          }
          }
          // Le fameux error_reporting. Mettre en commentaire pour voir les NO_DATA_FOUND.
          error_reporting(1);
          ?>

          et ça c'est les deux fichiers connexion.php et deconnexion.php

          <?php
          // connexion.php se connecte à la base.
          $ora_conn = oci_connect("biblio","admin");
          ?>

          <?php
          // Se déconnecter de la base
          oci_close($ora_conn);
          ?>
          1
          1. peux tu me montrer ton essai.php?

            Cordialement
            Dragondark de lonlindil
            0
            1. d'apres ce que j'ai lut, ora_logon est pour oracle 7 et anterieur
              et oci_logon pour les version ulterieur

              oci_connect() je ne sais pas

              apres je ne peux pas te dire, je n'utilise pas oracle, que je ne trouve pas des plus accessible personnelement ^^'.
              je te conseil de tester et de voir laquel il accepte

              Cordialement
              Dragondark de lonlindil
              0
              1. voila ca marche
                mais il reste juste le problème de la variable results
                a chaque foi que je lances mon fichier on m'affiche un message d'alerte indiquant que cette variable n a pas été défini :

                Notice: Undefined variable: results in C:\wamp\www\essai.php on line 11
                0
            2. alors il faut savoir qu'une requete avec oracle n'equivaux pas avec une requete avec mysql

              soit

              regarde ce site ;)

              http://www.asp-php.net/tutorial/asp-php/php_et_oracle.php

              Cordialement
              Dragondark de lonlindil
              0
              1. merci pour le site !!!!!
                mais il y a un point que je ne comprends pas la
                pour se connecter a la base de donnée
                j'utilisais la commande oci_connect()
                alors que la je trouves la commande ora_logon()
                c'est quoi la différence entre ces deux fonctions ? et la quel est compatible la version d'oracle que j utilise
                en fete j'utilise la version oracle 10g
                0