Impossible d'afficher ma Base de donnée (php) [Résolu/Fermé]

Signaler
-
 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

Messages postés
436
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
31 octobre 2008
141
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.
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%.
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 "
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
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... ^^
Merci, sa m'affiche enfin ce que je veux après des heures de galères.