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

Debideb9445 41 Messages postés lundi 22 novembre 2010Date d'inscription 3 juillet 2017 Dernière intervention - 25 nov. 2015 à 13:33 - Dernière réponse : Debideb9445 41 Messages postés lundi 22 novembre 2010Date d'inscription 3 juillet 2017 Dernière intervention
- 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
Afficher la suite 

4 réponses

Répondre au sujet
jordane45 20046 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 février 2018 Dernière intervention - 25 nov. 2015 à 13:57
+1
Utile
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>



Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jordane45
Debideb9445 41 Messages postés lundi 22 novembre 2010Date d'inscription 3 juillet 2017 Dernière intervention - 25 nov. 2015 à 14:17
0
Utile
2
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.

jordane45 20046 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 février 2018 Dernière intervention - 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);
Debideb9445 41 Messages postés lundi 22 novembre 2010Date d'inscription 3 juillet 2017 Dernière intervention - 25 nov. 2015 à 15:08
Ça fonctionne merci !
Commenter la réponse de Debideb9445

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.