Problème affichage de données après requête BDD [Résolu]

Signaler
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017
-
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017
-
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

Messages postés
32939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
351
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>



Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017

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.

Messages postés
32939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
351
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);
Messages postés
41
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2017

Ça fonctionne merci !