{Oracle} afficher une table en php

Résolu
haroun- Messages postés 762 Statut Membre -  
nzounza Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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. haroun- Messages postés 762 Statut Membre 3
     
    <?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
  2. dragondark Messages postés 481 Statut Membre 159
     
    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. haroun- Messages postés 762 Statut Membre 3
       
      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
  3. dragondark Messages postés 481 Statut Membre 159
     
    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. haroun- Messages postés 762 Statut Membre 3
       
      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
  4. dragondark Messages postés 481 Statut Membre 159
     
    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. haroun- Messages postés 762 Statut Membre 3
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dragondark Messages postés 481 Statut Membre 159
     
    peux tu me montrer ton essai.php?

    Cordialement
    Dragondark de lonlindil
    0
  7. dragondark Messages postés 481 Statut Membre 159
     
    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. haroun- Messages postés 762 Statut Membre 3
       
      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
  8. dragondark Messages postés 481 Statut Membre 159
     
    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. haroun- Messages postés 762 Statut Membre 3
       
      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
  9. dragondark Messages postés 481 Statut Membre 159
     
    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. haroun- Messages postés 762 Statut Membre 3
       
      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
  10. dragondark Messages postés 481 Statut Membre 159
     
    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
  11. Med
     
    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
  12. nzounza Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    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