{Oracle} afficher une table en php

Résolu/Fermé
haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 - 5 janv. 2010 à 11:23
nzounza Messages postés 2 Date d'inscription lundi 27 mai 2013 Statut Membre Dernière intervention 27 mai 2013 - 27 mai 2013 à 13:49
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
A voir également:

11 réponses

haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 3
6 janv. 2010 à 11:56
<?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
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
7 janv. 2010 à 09:33
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
haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 3
7 janv. 2010 à 11:29
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
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
5 janv. 2010 à 11:28
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
haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 3
5 janv. 2010 à 11:47
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
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
5 janv. 2010 à 13:22
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
haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 3
6 janv. 2010 à 06:04
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
6 janv. 2010 à 09:47
peux tu me montrer ton essai.php?

Cordialement
Dragondark de lonlindil
0
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
6 janv. 2010 à 14:30
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
haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 3
6 janv. 2010 à 22:43
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
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
7 janv. 2010 à 11:39
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
haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 3
7 janv. 2010 à 16:40
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
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
7 janv. 2010 à 16:55
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
haroun- Messages postés 708 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 17 décembre 2021 3
7 janv. 2010 à 17:22
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
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
8 janv. 2010 à 09:39
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
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
nzounza Messages postés 2 Date d'inscription lundi 27 mai 2013 Statut Membre Dernière intervention 27 mai 2013
27 mai 2013 à 13:49
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