Problème affichage de données après requête BDD

Résolu
Debideb9445 Messages postés 41 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 3 juillet 2017 - 25 nov. 2015 à 13:33
Debideb9445 Messages postés 41 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 3 juillet 2017 - 25 nov. 2015 à 15:08
Bonjour,

Je dois réaliser un site internet en projet de techno Web utilisant seulement (Html,CSS,PHP et mySQL). J'ai choisi de réaliser un site qui référencie les films que j'ai vu, que je voudrais voir à l'avenir et ceux que mes amis me conseillent (gestion d'amis donc...).

C'est mon premier site donc je suis absolument pas un cador en la matière malheureusement.

Mon problème est vraiment basique.

J'ai créé une base de donnée "users" avec à l'intérieur : id_user, login, name et firstname.

J'ai créé un formulaire d'inscription qui marche parfaitement (l'utilisateur s'inscrit et les données sont enregistrées dans ma BDD).

J'ai créé aussi une page de connexion dont voici le code :

<?php session_start() ?>
<?php include("BaseDeDonnee.php"); ?>
<?php include("Mise_en_page.php"); ?>

<?php
if(isset($_POST['submit']))
{
$login = $_POST['login'];
$password = $_POST['password'];
if (!empty($login) AND !empty($password))
{
$requser = $bdd->prepare("SELECT * FROM users WHERE login = ? AND password = ?");
$requser->execute(array($login, $password));
$userexist = $requser->rowCount();
if($userexist == 1)
{
$userinfo = $requser->fetch();
$_SESSION['id_user'] = $userinfo['id_user'];
$_SESSION['login'] = $userinfo['login'];
$_SESSION['name'] = $userinfo['name'];
$_SESSION['firstname'] = $userinfo['firstname'];
header("Location: Profil.php?id=".$_SESSION["id_user"]);
}
else
{
$erreur = "Mauvais identifiant ou mot de passe";
}

}
else
{
$erreur = "Tous les champs ne sont pas remplis !";
}
}
?>
<html>
<head>
<title>Connexion</title>
<link rel="stylesheet" href="css/CodeCSS.css" />
</head>

<body>

<form action="Connexion.php" method ="POST">

<fieldset><legend> Connexion </legend>
<p>
<label for="login">Votre pseudo :</label>
<input type="text" name="login" id="login" placeholder="Ex : Nanard59" />
</p>

<p>
<label for="password">Votre mot de passe :</label>
<input type="password" name="password" id="password" placeholder="Ex : azerty59" />

</p>

<input type="submit" value="Se connecter" name="submit" />

</fieldset>

</form>
<?php
if(isset($erreur))
{
echo '<font color="red">'.$erreur;
}
?>

</body>

</html>


En résumé, dès que l'utilisateur se connecte, il est redirigé vers sa page de profil.
C'est là que mon soucis commence...

J'ai créé le fichier Page.php qui devrait me renvoyer les infos du profil. Voici le code :
<!DOCTYPE html>
<?php session_start() ?>
<?php include("BaseDeDonnee.php"); ?>
<?php include("Mise_en_page.php"); ?>




<?php
if(isset($GET['id_user']) AND $_GET['id_user'] > 0)
{
$getid = intval($_GET['id_user']);
$requser = $bdd->prepare('SELECT * FROM users WHERE id_user = ?');
$requser->execute(array($getid));
$userinfo = $requser->fetch();
?>

<html>
<head>
<title>Profil</title>
<link rel="stylesheet" href="css/CodeCSS.css" />
</head>



<body>
<div align="center">
<h2>Profil de <?php echo $userinfo['login']; ?></h2>
<br /><br />
Pseudo = <?php echo $userinfo['login']; ?>
<br />
Nom = <?php echo $userinfo['name']; ?>
<br />
Prénom = <?php echo $userinfo['firstname']; ?>
<br />

</div>
</body>
</html>
<?php
}
?>


Le soucis c'est que lorsque je teste, je reçois rien et ma mise en page est toute moche :


Au lieu d'avoir une mise en page comme ça :


Du coup, il doit y avoir un soucis de balise mais je ne sais pas vraiment où ... :/

Cordialement

2 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
25 nov. 2015 à 13:57
Bonjour,

Premièrement.... penses à récupérer "proprement" les variables AVANT de les utiliser
$login = isset($_POST['login']) ? $_POST['login'] : NULL;
$password = isset($_POST['password']) ? $_POST['password']: NULL;




Ensuite... pourquoi passer par une variable GET pour transmettre ton ID user ... alors que tu peux le faire avec une variable de SESSION ??

Bon... voila ton code remis en forme et légèrement corrigé (tâche d'en tenir compte pour tes prochains codes....)

<?php
session_start();
require_once "BaseDeDonnee.php"; 
require_once "Mise_en_page.php"; 


//récupération de l'id user
$id_user = !empty($_SESSION['id_user']) ? $_SESSION['id_user'] : NULL;


if($id_user){
	// Si id_user n'est pas vide ...
	$sql = "SELECT * FROM users WHERE id_user = :id_user";
	$param = array(":id_user"=>$id_user);
	
	try{
	  $requser = $bdd->prepare($sql);
	  $requser->execute($param);
	  $userinfo = $requser->fetchAll();
	}catch(Exception $e) {
		//en cas de souci dans la requête
    echo "<pre><br>".$e->getMessage()."<br>";
	}
}

//Récupération /initialisation des variables à afficher 
$user_login = !empty($userinfo['login']) ? $userinfo['login'] : '';
$user_name = !empty($userinfo['name']) ? $userinfo['name'] : '';
$user_firstname = !empty($userinfo['firstname']) ? $userinfo['firstname'] : '';


?>
<!doctype html>
<html>
<head>
 <title>Profil</title>
 <link rel="stylesheet" href="css/CodeCSS.css" />
</head>

<body>

  <div align="center">
		<h2>Profil de <?php echo $user_login; ?></h2>
		<br><br>
		Pseudo = <?php echo $user_login; ?>
		<br>
		Nom = <?php echo $user_name; ?>
		<br>
		Prénom = <?php echo $user_firstname; ?>
		<br>

	</div>

</body>
</html>



1
Debideb9445 Messages postés 41 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 3 juillet 2017
25 nov. 2015 à 14:17
Merci beaucoup ! (une nouvelle fois)

Je voulais utilisé la variable GET car c'est le seul moyen qui m'est venu en tête à vrai dire :( . Du coup, c'est vrai que c'est plus intelligent de prendre directement la variable SESSION .

Bon du coup, j'ai bien retrouvé ma mise en page mais la page n'affiche toujours pas les données de ma BDD.

0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
25 nov. 2015 à 14:45
Oupssss... petite erreur de ma part :

//Récupération /initialisation des variables à afficher 
$user_login = !empty($userinfo[0]['login']) ? $userinfo[0]['login'] : '';
$user_name = !empty($userinfo[0]['name']) ? $userinfo[0]['name'] : '';
$user_firstname = !empty($userinfo[0]['firstname']) ? $userinfo[0]['firstname'] : '';



et si ça ne marche pas... ajoutes, le temps des tests, en dessous de ces lignes le code :
//on va voir si la requête retourne qq chose :
print_r(($userinfo);
0
Debideb9445 Messages postés 41 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 3 juillet 2017
25 nov. 2015 à 15:08
Ça fonctionne merci !
0
Rejoignez-nous