Impossible d'afficher ma Base de donnée (php)

Résolu
keke_123 -  
 keke_123 -
Bonjour,


Je dois visualiser, sous forme de tableau, le contenu de ma base de donnée dans une page php. Après avoir tester mon script, celui-ci m'affiche un tableau mais je n'ai pas le contenu de la base de donnée. Il doit y avoir une erreur dans mon script mais je vois pas ou.

Voici le script :

<html>
<head>
<meta HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html;charset=iso-8859-1">
</head>
<body>
<?php
//connexion au serveur, $server est un pointeur vers le serveur
$host='localhost';$user='root';$pw='';
if (!($serveur = mysql_connect ($host,$user,$pw))) {print('pb connexion serveur ');exit;}

//connexion à la base de données sur le serveur
$db='gestbd';
if (!(mysql_select_db ($db,$serveur))) {print('pb connexion base de données');exit;}

if ($serveur)
{
$MaRequete="SELECT * FROM bd";

//Envoi de la requête et la récupére
$Recup=mysql_query($MaRequete,$serveur);
}
?>
<table border=5 width=40%>
<?
{
while ($tuple=mysql_fetch_array($Recup))
{
echo "<TR><TD width=50%>";
echo $tuple["Titre"];

echo "</TD><TD width=30%>";
echo $tuple["auteur_nom"];

echo "</TD><TD width=30%>";
echo $tuple["auteur_prenom"];

echo "</TD><TD width=30%>";
echo $tuple["LibType"];

echo "</TD><TD width=30%>";
echo $tuple["AnneeParution"];

echo "</TD><TD width=30%>";
echo $tuple["Editeur"];

echo "</TD></TR>";
}
//fermeture de la connection
mysql_close($serveur);
}
?>
</table>
</body>
</html>

En espérant une réponse.
Merci d'avance.

3 réponses

bbar Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   140
 
salut,
tu crées ta variable $MaRequete dans un bloc "if". De cette manière, il s'agit d'une variable locale, qui n'existe que dans ton bloc "if, ce qui fait qu'une fois sorti du "if", elle n'existe plus.
Plusieures solutions :
- la déclarer au début de ton code et l'initialiser à NULL avant de lui donner sa valeur dans le if
- la déclarer de type global dans le if : global $MaRequete.

Par ailleurs, tu as plus simple pour afficher un message d'erreur en cas de pb de connexion au serveur :
$serveur = mysql_connect ($host,$user,$pw) or die (mysql_error(),"erreur de connexion");

le "mysql_error()" t'affichant le message généré par MySQL.
0
le père
 
Bonjour

il s'agit d'une variable locale
en PHP, une variable est globale à tout le script, ou locale à une fonction, mais pas locale à une branche d'un if. Donc ta variable $MaRequete existe bien si tu passes par la branche, même après en être sorti.

Peux-tu faire un print_r($tuple), au début (à l'intérieur) de la boucle d'affichage du tableau ?

Détail : la somme des largeurs des éléments TD dépasse largement les 100%.
0
keke_123
 
Lorsque je fais un print_r($tuple) juste après le while cela ne m'affiche aucune info de ma variable, peut-être que je ne le mets pas au bon endroit. Sinon lorsque je teste ma page cela m'affiche :

"; } //fermeture de la connection mysql_close($serveur); } ?>

Et dans un tableau, ce qui suit :

"; echo $tuple["Titre"]; echo "
"; echo $tuple["auteur_nom"]; echo "
"; echo $tuple["auteur_prenom"]; echo "
"; echo $tuple["LibType"]; echo "
"; echo $tuple["AnneeParution"]; echo "
"; echo $tuple["Editeur"]; echo "
0
darkneurone Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   12
 
Bonjour, pourquoi as tu mis ça ?

if ($serveur)
{
$MaRequete="SELECT * FROM bd";

//Envoi de la requête et la récupére
$Recup=mysql_query($MaRequete,$serveur);
}
?>
<table border=5 width=40%>
<?
{
while ($tuple=mysql_fetch_array($Recup))
{

Les accolades sont mal fermées/ouvertes, pourquoi ne mets tu pas simplement ça ?

if($server)
{ // ouverture du IF
$MaRequete="SELECT * FROM bd";

//Envoi de la requête et la récupére
$Recup=mysql_query($MaRequete,$serveur);
?>
<table border=5 width=40%>
<?
while ($tuple=mysql_fetch_array($Recup))
{
//.... tout ton code jusqu'à...
//fermeture de la connection
mysql_close($serveur);
} // fermeture du IF
?>

Sinon tu as une alternative bien plus simple... penses aux echo ;)

if($server)
{ // ouverture du IF
$MaRequete="SELECT * FROM bd";

//Envoi de la requête et la récupére
$Recup=mysql_query($MaRequete,$serveur);

echo '<table border=5 width=40%>';

while ($tuple=mysql_fetch_array($Recup))
{
//.... tout ton code jusqu'à...
//fermeture de la connection
mysql_close($serveur);
} // fermeture du IF
?>

tu peux appliquer ça dans tout ton code... ça te permet de ne pas te perdre dans les ouvertures/fermetures de balises php aussi... ^^
0
keke_123
 
Merci, sa m'affiche enfin ce que je veux après des heures de galères.
0