par
Cephou » 24 déc. 2015, 14:46
Bonjour,
Je suis un codeur débutant en PHP et j'ai très peu de contacts dans le domaine pour m'aider. J'aurais aimé avoir un "parrain" pour m'aider à me former mais pour le moment, je demande de l'aide sur ce forum.
Je sais qu'auto-remplir un formulaire avec des valeurs présentes dans une base de donnée est simple, mais je n'y arrive pas.
Dans ma page account.php, j'aurais aimé remplir les cases de coordonnées avec les valeurs présentes dans la base de données (le morceau de code visé est entouré de --------------------------------------------------).
Voici mon code :
// account.php
Code : Tout sélectionner
<?php
session_start();
require('inc/functions.php');
logged_only();
require_once 'inc/db.php';
$user_id = $_SESSION['auth']->id;
if(isset($_POST['submit_changepw'])){
if(!empty($_POST)){
if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']){
$_SESSION['flash']['danger'] = "Les mots de passe ne correspondent pas";
} else {
$password= password_hash($_POST['password'], PASSWORD_BCRYPT);
$pdo->prepare('UPDATE users SET password = ? WHERE id = ?')->execute([$password, $user_id]);
$_SESSION['flash']['success'] = "Votre mot de passe a bien été mis à jour.";
}
}
}
if(isset($_POST['submit_pubinfo'])){
if(!empty($_POST)){
$req = $pdo->prepare('UPDATE users SET name = ?, firstname = ?, birthdate = ?, adress = ?, phone = ?, activity = ? WHERE id = ?');
$req->execute([$_POST['name'], $_POST['firstname'], $_POST['birthdate'], $_POST['adress'], $_POST['phone'], $_POST['activity'], $user_id]);
$_SESSION['flash']['success'] = "Informations mises à jour !";
}
}
include('inc/header.php');
?>
<div id="content">
<?php if(isset($_SESSION['flash'])): ?>
<?php foreach($_SESSION['flash'] as $type => $message): ?>
<div class="<?= $type; ?>">
<?= $message; ?>
</div>
<?php endforeach; ?>
<?php unset($_SESSION['flash']); ?>
<?php endif; ?>
<h1>Votre compte</h1><br /><br />
--------------------------------------------------
<?php
$req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$req->execute([$user_id]);
$data = $req->fetch();
?>
<p>Coordonnées :</p>
<form action="" method="POST">
<label>Nom </label><input type="text" name="name" value="<?php echo $data['name']; ?>" /><br />
<label>Prénom </label><input type="text" name="firstname" value="<?php echo $data['firstname']; ?>" /><br />
<label>Année de naissance </label><input type="text" name="birthdate" value="<?php echo $data['birthdate']; ?>" /><br />
<label>Adresse </label><input type="text" name="adress" value="<?php echo $data['adress']; ?>" /><br />
<label>Téléphone </label><input type="text" name="phone" value="<?php echo $data['phone']; ?>" /><br />
<label>Activité </label><input type="text" name="activity" value="<?php echo $data['activity']; ?>" /><br />
<button type="submit" name="submit_pubinfo">Envoyer</button>
</form>
--------------------------------------------------
<p>Modifier votre mot de passe :</p>
<form action="" method="POST">
<div>
<input type="password" name="password" placeholder="Changer de mot de passe"/>
</div>
<div>
<input type="password" name="password_confirm" placeholder="Confirmation du mot de passe"/>
</div>
<button type="submit" name="submit_changepw">Changer mon mot de passe</button>
</form>
</div>
<?php include('inc/footer.php'); ?>
// Le functions.php
Code : Tout sélectionner
<?php
function debug($variable){
echo '<pre>' . print_r($variable, true) . '</pre>';
}
function str_random($length) {
$alphabet = "0123456789azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN";
return substr(str_shuffle(str_repeat($alphabet, $length)), 0, $length);
}
function logged_only(){
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(!isset($_SESSION['auth'])){
$_SESSION['flash']['danger'] = "Vous n'avez pas accès à cette page, veuillez vous connecter ou vous inscrire !";
header('Location: index.php');
exit();
}
}?>
// Le header.php
Code : Tout sélectionner
<?php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])) {
require('db.php');
$req = $pdo->prepare('SELECT * FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
$req->execute(['username' => $_POST['username']]);
$user = $req->fetch();
if(password_verify($_POST['password'], $user->password)){
session_start();
$_SESSION['auth'] = $user;
$_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
header('Location: account.php');
exit();
} else {
$_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect.';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="description" content="Job'Etu, le site d'annonces pour étudiants.">
<meta name="keywords" content="Job,Etu,annonce,annonces,étudiants,étudiant">
<title>Job'Etu</title>
<link rel="stylesheet" type="text/css" href="./css/jobetustyle.css">
<link rel="icon" type="image/png" href="./img/favicon.png" />
</head>
<body>
<?php if(isset($_SESSION['auth'])): ?>
<div align="right">
<?php
require('db.php');
$currentname = $_SESSION['auth']->username;
echo ("Bienvenue ") . $currentname;
?>
<a href="logout.php">Se déconnecter</a>
</div>
<?php else: ?>
<div align="right">
<form action="" method="POST">
<label>Pseudo ou Email</label><br />
<input type="text" name="username"/><br/><br/>
<label>Mot de passe</label><br/>
<input type="password" name="password"/><br/><br/>
<button type="submit">Se connecter</button>
</form><br/><br/>
Pas de compte ? <a href="register.php">S'inscrire</a>
</div>
<?php endif; ?>
<center><a href="index.php" id="logo">Job'Etu</a></center>
<br />
<div id="main">
<div id="navigation">
<table width="100%">
<td style="text-align: center">
<a class="nav" href="index.php">Accueil</a>
<a class="nav" href="createannounce.php">Déposer une annonce</a>
<a class="nav" href="offers.php">Offres</a>
<a class="nav" href="demands.php">Demandes</a>
<a class="nav" href="account.php">Mon compte</a>
</td>
</table>
</div>
Voila le résultat visuel :
http://awesomescreenshot.com/0fd5ibkkaa
Voila une image de la structure de la base de donnée :
http://awesomescreenshot.com/0a45ibkw93
Le DB.php permet de faire la connexion à la BDD et je sais qu'il marche.
Voila, soit je suis bigleux, soit j'ignore une règle et la transgresse.
Merci beaucoup d'avance pour votre aide.
Bonjour,
Je suis un codeur débutant en PHP et j'ai très peu de contacts dans le domaine pour m'aider. J'aurais aimé avoir un "parrain" pour m'aider à me former mais pour le moment, je demande de l'aide sur ce forum.
Je sais qu'auto-remplir un formulaire avec des valeurs présentes dans une base de donnée est simple, mais je n'y arrive pas.
Dans ma page account.php, j'aurais aimé remplir les cases de coordonnées avec les valeurs présentes dans la base de données (le morceau de code visé est entouré de --------------------------------------------------).
Voici mon code :
// account.php
[code]<?php
session_start();
require('inc/functions.php');
logged_only();
require_once 'inc/db.php';
$user_id = $_SESSION['auth']->id;
if(isset($_POST['submit_changepw'])){
if(!empty($_POST)){
if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']){
$_SESSION['flash']['danger'] = "Les mots de passe ne correspondent pas";
} else {
$password= password_hash($_POST['password'], PASSWORD_BCRYPT);
$pdo->prepare('UPDATE users SET password = ? WHERE id = ?')->execute([$password, $user_id]);
$_SESSION['flash']['success'] = "Votre mot de passe a bien été mis à jour.";
}
}
}
if(isset($_POST['submit_pubinfo'])){
if(!empty($_POST)){
$req = $pdo->prepare('UPDATE users SET name = ?, firstname = ?, birthdate = ?, adress = ?, phone = ?, activity = ? WHERE id = ?');
$req->execute([$_POST['name'], $_POST['firstname'], $_POST['birthdate'], $_POST['adress'], $_POST['phone'], $_POST['activity'], $user_id]);
$_SESSION['flash']['success'] = "Informations mises à jour !";
}
}
include('inc/header.php');
?>
<div id="content">
<?php if(isset($_SESSION['flash'])): ?>
<?php foreach($_SESSION['flash'] as $type => $message): ?>
<div class="<?= $type; ?>">
<?= $message; ?>
</div>
<?php endforeach; ?>
<?php unset($_SESSION['flash']); ?>
<?php endif; ?>
<h1>Votre compte</h1><br /><br />
--------------------------------------------------
<?php
$req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$req->execute([$user_id]);
$data = $req->fetch();
?>
<p>Coordonnées :</p>
<form action="" method="POST">
<label>Nom </label><input type="text" name="name" value="<?php echo $data['name']; ?>" /><br />
<label>Prénom </label><input type="text" name="firstname" value="<?php echo $data['firstname']; ?>" /><br />
<label>Année de naissance </label><input type="text" name="birthdate" value="<?php echo $data['birthdate']; ?>" /><br />
<label>Adresse </label><input type="text" name="adress" value="<?php echo $data['adress']; ?>" /><br />
<label>Téléphone </label><input type="text" name="phone" value="<?php echo $data['phone']; ?>" /><br />
<label>Activité </label><input type="text" name="activity" value="<?php echo $data['activity']; ?>" /><br />
<button type="submit" name="submit_pubinfo">Envoyer</button>
</form>
--------------------------------------------------
<p>Modifier votre mot de passe :</p>
<form action="" method="POST">
<div>
<input type="password" name="password" placeholder="Changer de mot de passe"/>
</div>
<div>
<input type="password" name="password_confirm" placeholder="Confirmation du mot de passe"/>
</div>
<button type="submit" name="submit_changepw">Changer mon mot de passe</button>
</form>
</div>
<?php include('inc/footer.php'); ?>[/code]
// Le functions.php
[code]<?php
function debug($variable){
echo '<pre>' . print_r($variable, true) . '</pre>';
}
function str_random($length) {
$alphabet = "0123456789azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN";
return substr(str_shuffle(str_repeat($alphabet, $length)), 0, $length);
}
function logged_only(){
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(!isset($_SESSION['auth'])){
$_SESSION['flash']['danger'] = "Vous n'avez pas accès à cette page, veuillez vous connecter ou vous inscrire !";
header('Location: index.php');
exit();
}
}?>[/code]
// Le header.php
[code]<?php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])) {
require('db.php');
$req = $pdo->prepare('SELECT * FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL');
$req->execute(['username' => $_POST['username']]);
$user = $req->fetch();
if(password_verify($_POST['password'], $user->password)){
session_start();
$_SESSION['auth'] = $user;
$_SESSION['flash']['success'] = 'Vous êtes maintenant connecté';
header('Location: account.php');
exit();
} else {
$_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect.';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="description" content="Job'Etu, le site d'annonces pour étudiants.">
<meta name="keywords" content="Job,Etu,annonce,annonces,étudiants,étudiant">
<title>Job'Etu</title>
<link rel="stylesheet" type="text/css" href="./css/jobetustyle.css">
<link rel="icon" type="image/png" href="./img/favicon.png" />
</head>
<body>
<?php if(isset($_SESSION['auth'])): ?>
<div align="right">
<?php
require('db.php');
$currentname = $_SESSION['auth']->username;
echo ("Bienvenue ") . $currentname;
?>
<a href="logout.php">Se déconnecter</a>
</div>
<?php else: ?>
<div align="right">
<form action="" method="POST">
<label>Pseudo ou Email</label><br />
<input type="text" name="username"/><br/><br/>
<label>Mot de passe</label><br/>
<input type="password" name="password"/><br/><br/>
<button type="submit">Se connecter</button>
</form><br/><br/>
Pas de compte ? <a href="register.php">S'inscrire</a>
</div>
<?php endif; ?>
<center><a href="index.php" id="logo">Job'Etu</a></center>
<br />
<div id="main">
<div id="navigation">
<table width="100%">
<td style="text-align: center">
<a class="nav" href="index.php">Accueil</a>
<a class="nav" href="createannounce.php">Déposer une annonce</a>
<a class="nav" href="offers.php">Offres</a>
<a class="nav" href="demands.php">Demandes</a>
<a class="nav" href="account.php">Mon compte</a>
</td>
</table>
</div>[/code]
Voila le résultat visuel : http://awesomescreenshot.com/0fd5ibkkaa
Voila une image de la structure de la base de donnée : http://awesomescreenshot.com/0a45ibkw93
Le DB.php permet de faire la connexion à la BDD et je sais qu'il marche.
Voila, soit je suis bigleux, soit j'ignore une règle et la transgresse.
Merci beaucoup d'avance pour votre aide.