[Php/MySql] Page blanche !

Fermé
sambarre Messages postés 6 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 23 octobre 2008 - 18 août 2008 à 15:35
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 - 19 août 2008 à 10:27
Bonjour,
J'ai un petit problème avec mon site, voilà tout :
Je veux créer une fiche membre avec une recup des infos après avoir entré le pseudo du membre cherché !

Page de recherche (Fonctionnelle mais bon ^^) :
<title>Document sans titre</title>
<style type="text/css">
<!--
body {
	background-color: #5DBEF5;
}
-->
</style></head>

<body>
<div align="center">
  <form enctype="multipart/form-data" action="fichemembre.php3" method="post">
  <p align="center">Veuillez entrer le pseudo du membre :</p>
  <div align="center">
    <input type="text" name="pseudo" value="" size="32">
     <input type="submit" value="Voir sa fiche !">
  </div>
  <p align="center">&nbsp;</p>
</body>
</html>


Page d'arrivé (avec les infos du membre, c'est elle qui bug !) :
<?php
mysql_connect("localhost", "*****", "****"); // Connexion à MySQL
mysql_select_db("*****"); // Sélection de la base
 
$reponse = mysql_query("SELECT * FROM utilisateurs WHERE '$pseudo'"); // Requête SQL
 
 while ($donnees = mysql_fetch_array($reponse) )
{

?>
<title>Fiche du Membre</title>
<style type="text/css">
<!--
body {
	background-color: #5DBEF5;
}
-->
</style></head>

<body>
<div align="center">
  <table border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td width="96" height="96" rowspan="4" valign="top"><p><img src="/avatar/"<?php $donnees['avatar']; ?>".jpg"></p></td>
      <td width="503" height="24" valign="top"><p>Pseudo : <?php $donnees['login']; ?></p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p> E-mail : <?php $donnees['email']; ?></p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Nom : <?php $donnees['nom']; ?></p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Prenom : <?php $donnees['prenom']; ?></p></td>
    </tr>
  </table>
</div>
</body>
</html>
<?php
}
 
mysql_close(); // Déconnexion de MySQL
?>

Je débute en php/mysql et j'aimerais bien corriger ce petit problème !
Le problème est que après avoir lancé la recherche, j'arrivhe sur une jolie page blanche !
Alors que tout le texte est mit dans le code source !
Aider moi ! S'il vous plait !
Merci a ceux qui m'aideront !
A voir également:

9 réponses

gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
18 août 2008 à 15:42
Salut,

ne mets pas de blasie <head></head><body></body> et </html>.

Puis essaye en définissant ta variable $pseudo comme tel:

$pseudo = $_GET['pseudo'];

Puis ta requête comme ceci:

$reponse = mysql_query("SELECT * FROM utilisateurs WHERE '" . $pseudo . "'"); // Requête SQL

A+

Gaerebut
0
sambarre Messages postés 6 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 23 octobre 2008 2
18 août 2008 à 15:55
Rien y fait, j'ai remarqué qu'en faisant clique droit sur la page qui bug, il n'y avait rien dans le code source XD !
Sinon voici mon nouveau code :
<?php
mysql_connect("localhost", "****", "****"); // Connexion à MySQL
mysql_select_db("******"); // Sélection de la base
 
$reponse = mysql_query("SELECT * FROM utilisateurs WHERE '" . $pseudo . "'"); // Requête SQL 
 
 while ($donnees = mysql_fetch_array($reponse) )
{

?>
<title>Fiche du Membre</title>
<style type="text/css">
<!--
body {
	background-color: #5DBEF5;
}
-->
</style>
<?php
$pseudo = $_GET['pseudo'];
$email = $_GET['email'];
$avatar = $_GET['avatar'];
$nom = $_GET['nom'];
$prenom = $_GET['prenom'];
?>
<div align="center">
  <table border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td width="96" height="96" rowspan="4" valign="top"><p><img src="/avatar/'$avatar'"></p></td>
      <td width="503" height="24" valign="top"><p>Pseudo : '$pseudo'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p> E-mail : '$email'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Nom : '$nom'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Prenom : '$prenom'</p></td>
    </tr>
  </table>
</div>
<?php
}
 
mysql_close(); // Déconnexion de MySQL
?>

Merci de m'aider !
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
18 août 2008 à 16:06
Autant pour moi !

J'avais pas vu ton POST dans ton formulaire !

Remplace les $_GET par des $_POST sur ta deuxième page. ça devrait marcher !

A+

Gaerebut
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
18 août 2008 à 16:07
Salut,

Ta requête SQL ne semble pas valide au niveau du where sur pseudo, il faut une comparaison;
Essai de mettre un echo mysql_error() entre la ligne du mysql_query et celle du while.
0
sambarre Messages postés 6 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 23 octobre 2008 2
18 août 2008 à 16:13
J'ai essayer ce que tu m'as dit et là surprise !! Enfin qu'elque chose, mais ... pas ce que je veux !!
Voici ce qui m'affiche maintenant :

Parse error: syntax error, unexpected T_WHILE, expecting ',' or ';' in C:\xampp\htdocs\fichemembre.php on line 7

Voici le code :
<?php
mysql_connect("localhost", "*****", "***"); // Connexion à MySQL
mysql_select_db("******"); // Sélection de la base
 
$reponse = mysql_query("SELECT * FROM utilisateurs WHERE '" . $pseudo . "'"); // Requête SQL 
 echo mysql_error() 
 while ($donnees = mysql_fetch_array($reponse))
{

?>
<title>Fiche du Membre</title>
<style type="text/css">
<!--
body {
	background-color: #5DBEF5;
}
-->
</style>
<?php
$pseudo = $_POST['pseudo'];
$email = $_POST['email'];
$avatar = $_POST['avatar'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
?>
<div align="center">
  <table border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td width="96" height="96" rowspan="4" valign="top"><p><img src="/avatar/'$avatar'"></p></td>
      <td width="503" height="24" valign="top"><p>Pseudo : '$pseudo'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p> E-mail : '$email'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Nom : '$nom'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Prenom : '$prenom'</p></td>
    </tr>
  </table>
</div>
<?php
}
 
mysql_close(); // Déconnexion de MySQL
?>


Autrement dit c'est la ligne :
 while ($donnees = mysql_fetch_array($reponse))


Que faire ???
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
18 août 2008 à 16:17
Il manque le ; à la fin de la ligne echo mysql_error(), entre autres
0

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

Posez votre question
sambarre Messages postés 6 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 23 octobre 2008 2
18 août 2008 à 16:27
Je l'ai mit, mais ........ je retrouve ma vielle amie la page blanche lol !!!
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
18 août 2008 à 19:41
Normal ! Lol

Tu dis que $pseudo = $_POST['pseudo']; Aprrès l'avoir utilisé !

Autrement dit, déclare le en tout début!

Voici le nouveau code :

<?php
mysql_connect("localhost", "*****", "***"); // Connexion à MySQL
mysql_select_db("******"); // Sélection de la base
 
$pseudo = $_POST['pseudo'];
$email = $_POST['email'];
$avatar = $_POST['avatar'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];

$reponse = mysql_query("SELECT * FROM utilisateurs WHERE '" . $pseudo . "'"); // Requête SQL 
 echo mysql_error();
 while ($donnees = mysql_fetch_array($reponse))
{

?>
<title>Fiche du Membre</title>
<style type="text/css">
<!--
body {
	background-color: #5DBEF5;
}
-->
</style>
<div align="center">
  <table border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td width="96" height="96" rowspan="4" valign="top"><p><img src="/avatar/'$avatar'"></p></td>
      <td width="503" height="24" valign="top"><p>Pseudo : '$pseudo'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p> E-mail : '$email'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Nom : '$nom'</p></td>
    </tr>
    <tr>
      <td width="503" height="24" valign="top"><p>Prenom : '$prenom'</p></td>
    </tr>
  </table>
</div>
<?php
}
 
mysql_close(); // Déconnexion de MySQL
?>


A+

Gaerebut
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
19 août 2008 à 08:24
Re,

Ton code est plein d'incohérences :
- Le where de ta requête est incomplet : il faudrait qq chose comme '...pseudo = '$pseudo' ...'
- Il manque des entêtes HTML <html><body>.
- les balises <title><style> et peut-etre le <div> n'ont rien à faire dans la boucle while.
- Et pourquoi utilises-tu un while ? je pense que le login est censé être unique dans ta base (non ?)
- Tes 'echos' de variables ne peuvent pas marcher comme ça : Pseudo : '$pseudo', il n'y à pas de echo et on n'est pas dans un bloc PHP, il faudrait qq chose comme Pseudo: <?php echo $pseudo; ?>.
- seules la donnée pseudo vient du formulaire donc il y a aura juste un $pseudo = $_POST['pseudo'] , pour les autres variables ca serait plutôt $email = $donnees['email'] comme ces infos viennent de la BD.

L'important est que tu comprennes ce que ton code fait, et essaye de travailler étape par étape.

Bon courage
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
19 août 2008 à 09:37
Salut Dr Zoidberg !

Donc je reprend tes remarques :

- Le where de ta requête est incomplet : il faudrait qq chose comme '...pseudo = '$pseudo' ...' 


==> Quand on met juste WHERE quelque chose, cela signifie que la chose existe ! C'est comme un if, on est pas obligé de mettre un == :p

- Il manque des entêtes HTML <html><body>


==> Qui te dit que sambarre nous a donné tout son code !?

- les balises <title><style> et peut-etre le <div> n'ont rien à faire dans la boucle while. 


==> Pourquoi pas ? Il veut a chaque tour de boucle répéter une action. Il construit un formulaire à chaque tour ... c'est son choix et ça marche ! Bon ok j'avouerai que c'est un peu inutile et que c'est stupide de mettre du css (non dynamique surtout) ici mais bon ... c'est pas ça qui fait bugger !

- Et pourquoi utilises-tu un while ? je pense que le login est censé être unique dans ta base (non ?) 


==> Je pense que tu as raison, sambarre devrait vérifier son code à ce niveau ! C'est louche ...

- Tes 'echos' de variables ne peuvent pas marcher comme ça : Pseudo : '$pseudo', il n'y à pas de echo et on n'est pas dans un bloc PHP, il faudrait qq chose comme Pseudo: <?php echo $pseudo; ?>. 


==> Ici, tu as encore entièrement raison, ça ne peut pas marcher.Il faut remplacer ceci:
Pseudo : '$pseudo'


par ceci:

Pseudo : <?php echo $pseudo; ?>


Et faire pareil pour les autres ($email, $nom et $prenom)

- seules la donnée pseudo vient du formulaire donc il y a aura juste un $pseudo = $_POST['pseudo'] , pour les autres variables ca serait plutôt $email = $donnees['email'] comme ces infos viennent de la BD. 


==> Encore raison ! Au final on ne sait pas ce que tu veux faire ! Veux-tu faire un formulaire d'inscription ou une fiche d'info sur un utilisateur ! Voila la différence que tu en fait ! Ici, tu l'écris comme un formulaire d'inscription car il y aura que ton $pseudo d'écris dans le formulaire ...Suis le conseil de notre ami Dr Zoidberg.

[...] travailler étape par étape


Très important ! Effectues des tests pour corriger tes erreurs ;)

A+

Gaerebut
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
19 août 2008 à 10:20
Je suis d'accord avec toi pour le where, ca ne serait pas une erreur si dans le code on avait 'where pseudo' (on chercherait les lignes avec un pseudo non null) mais pas comme ici avec where $pseudo. Car SQL chercherait une colonne qui s'appelle comme le pseudo.
Ok aussi pour les entêtes mais je signalais qu'elles manquent dans le code donné, après à notre ami de vérifier.
Et à moitié d'accord sur le coup de la boucle, effectivement on peut mettre un <style> dans la boucle, mais un <title> qui est unique sur une page et est dans le <head> et dans notre cas il n'y a pas de head fermant.
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
19 août 2008 à 10:27
Totalement d'accord ^^
Désolé pour le Where tu avais raison ... :p (j'ai pas vérifié mais j'imagine bien)

A+

Gaerebut
0