Signaler

Probleme lors de l'insertion des donnée sur mon site [Résolu]

Posez votre question arcadenaker 13Messages postés dimanche 30 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - Dernière réponse le 2 août 2017 à 11:12 par arcadenaker
Je voudrais reprendre des donnée a la base de données pour voir les profiles des autres avec l'id de la personne!
Mais cela ne marche pas je sais pas pourquoi ?
image :
http://img-19.ccm2.net/qwje9onfIj8YFFpLhspJO4DgkHE=/246c417291144456ba305e68ccefa407/ccm-ugc/profile.png
que l'on puisse grace a l'url voir le profile d'un autre utilisateur!
j'ai un php, un autre fichier(fonctions), html;
php:

<?php
session_start();
include('filters/auth_filter.php');
require('includes/function.php');
require('config/database.php');
if(!empty($_GET['id'])){
echo "hello";
$user = find_user_by_id($_GET['id']);
if(!user){
redirect('index.php');
}
}else{
redirect('profile.php?id='.get_session('id'));
}
if(isset($_POST['update'])){
if(not_empty(['name', 'city', 'country', 'sex', 'bio'])){
extract($_POST);
$use = $db->prepare("UPDATE users SET name = :name, city = :city, country = :country, sex = :sex, twitter = :twitter, github = :github, available_for_hire = :available_for_hire, bio = :bio WHERE id = :id ");
$use->execute(['name' => $name, 'city' => $city, 'country' => $country, 'sex' => $sex, 'twitter' => $twitter, 'github' => $github, 'available_for_hire' => !empty($available_for_hire) ? '1' : '0', 'bio' => $bio, 'id' => get_session('id')]);
set_flash('Profile mis à jour, reconnectez-vous pour voir les modifications', 'info');
redirect('profile.php');
}else{set_flash('Erreur, veuillez remplir tout les champs');}
}
?>
<?php
require("views/profile.view.php");
?>

fonctions:

<?php
if(!function_exists('get_session')){
function get_session($key){
if($key){
return !empty($_SESSION[$key])
? e($_SESSION[$key])
: null;

}
}
}
if(!function_exists('find_user_by_id')){
function find_user_by_id($id){
global $db;
$q = $db->prepare('SELECT name, pseudo, city, available_for_hire, country, email, github, twitter, sex, bio FROM users WHERE id = ?');
$q->execute([$id]);
$data = $q->fetch(PDO::FETCH_OBJ);
$q->closeCursor();
return $data;
}
}
if(!function_exists('set_active')){
function set_active($file, $class = 'active'){
$page = array_pop(explode('/', $_SERVEUR['SCRIPT_NAME']));
if($page == $file.'.php'){
return $class;

}else{
return "";
}
}
}

//verifie si l'utilisateur est connecté
if(!function_exists('connecte')){
function connecte(){
return isset($_SESSION['email']);
}
}

if(!function_exists('e')){
function e($string){
if($string){
return htmlspecialchars($string);

}
}
}
if(!function_exists('get_avatar_url')){
function get_avatar_url($email){
return "http://gravatar.com/avatar/".md5(strtolower(trim(e($_SESSION['email']))));
}
}


if(!function_exists('not_empty')){
function not_empty($fields = []){
if(count($fields != 0)){
foreach ($fields as $field){
if(empty($_POST[$field]) || trim($_POST[$field]) == ""){
return false;
}
}
return true;
}
}
}
if(!function_exists('is_already_in_use')){
function is_already_in_use($field, $value, $table){
global $db;
$q = $db->prepare("SELECT id FROM $table WHERE $field = ?");
$q->execute([$value]);
$count = $q->rowCount();
$q->closeCursor();
return $count;
}
}
if(!function_exists('set_flash')){
function set_flash($message, $type = 'warning'){
$_SESSION['notification']['message'] = $message;
$_SESSION['notification']['type'] = $type;
}
}
if(!function_exists('redirect')){
function redirect($page){
header('Location: ' . $page);
exit();
}
}
?>

html:

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<style type="text/css">
input.parsley-success,
select.parsley-success,
textarea.parsley-success {
color: #468847;
background-color: #DFF0D8;
border: 1px solid #D6E9C6;
}

input.parsley-error,
select.parsley-error,
textarea.parsley-error {
color: #B94A48;
background-color: #F2DEDE;
border: 1px solid #EED3D7;
}

.parsley-errors-list {
margin: 2px 0 3px;
padding: 0;
list-style-type: none;
font-size: 0.9em;
line-height: 0.9em;
opacity: 0;
color: darkred;

transition: all .3s ease-in;
-o-transition: all .3s ease-in;
-moz-transition: all .3s ease-in;
-webkit-transition: all .3s ease-in;
}

.parsley-errors-list.filled {
opacity: 1;
}
</style>

<title>Profile de <?php echo($_SESSION['pseudo']); ?></title>

<link href="assets/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="assets/css/main.css">

<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>

</head>
<body>

<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php" rel="nofollow noopener noreferrer" target="_blank">ProGRamme</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="index.php" rel="nofollow noopener noreferrer" target="_blank">Acceuil</a></li>
<?php if(isset($_SESSION['email'])): ?>
<li class="active"><a href="profile.php" rel="nofollow noopener noreferrer" target="_blank">Mon profile</a></li>
<li><a href="share_code.php" rel="nofollow noopener noreferrer" target="_blank">Partager</a></li>
<li><a href="logout.php" rel="nofollow noopener noreferrer" target="_blank">Déconnexion</a></li>
<?php else: ?>
<li><a href="connexion.php" rel="nofollow noopener noreferrer" target="_blank">Connexion</a></li>
<li><a href="inscription.php" rel="nofollow noopener noreferrer" target="_blank">Inscription</a></li>
<?php endif; ?>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="main-content">
<div class="container">
<?php if(isset($_SESSION['notification']['message'])): ?>
<div class="alert alert-<?= $_SESSION['notification']['type'] ?>">
<button type="button" class="close" aria-label="Close"><span aria-hidden="true">×</button>
<h4><?= $_SESSION['notification']['message'] ?></h4>
</div>
<?php $_SESSION['notification'] = []; ?>
<?php endif; ?>
<br/>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Profil de <?= e($_SESSION['pseudo']); ?></h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-5">
<img class="img-circle" src="<?= get_avatar_url($user->email); ?>" alt="Image de profil de <?= e($user->pseudo) ?>">
<br/>
</div>
</div>
<div class="row">
<div class="col-sn-6">
<strong><?= e($_SESSION['pseudo']) ?></strong><br/>
<a href="mailto:<?= e($_SESSION['email']) ?>"><?= e($_SESSION['email']) ?></a>
</div>
<div class="col-md-6">
<?=
($_SESSION['twitter']) ? 'Twitter : <a href="//twitter.com/'.e($_SESSION['twitter']).'" rel="nofollow noopener noreferrer" target="_blank">@'.e($_SESSION['twitter']).'</a>' : '';
?>
</div>
</div>
<div class="col-md-6">
<?=
($_SESSION['github']) ? 'Github : <a href="//gihub.com/'.e($_SESSION['github']).'" rel="nofollow noopener noreferrer" target="_blank">'.e($_SESSION['github']).'</a><br/>' : '';
?>
</div>
<div class="col-sn-6">
<?=
($_SESSION['available_for_hire']) ? '<a href="https://www.indeed.fr/" rel="nofollow noopener noreferrer" target="_blank">Recherche job international</a>' : '';
?>
</div>
<div class="col-md-6">
<?=
($_SESSION['country']) && ($_SESSION['city']) ? 'Pays - Ville : '.e($_SESSION['country']). ' - ' .e($_SESSION['city']) : '';
?><br/>
<a href="https://www.google.com/maps?q=<?= e($_SESSION['city']) .''. e($_SESSION['country']) ?>" target="_blank">Voir sur google map</a>
</div>
<div class="col-sn-6">
<?=
($_SESSION['available_for_hire']) ? '#==> Disponible pour emploi' : '#==> Non Disponible pour emploi';
?>
</div>
</div>
<div class="row">
<div class="col-md-12 well">
<h5><strong>Biographie de <?= e($_SESSION['pseudo']) ?>:</strong></h5>
<?= ($_SESSION['bio']) ? nl2br(e($_SESSION['bio'])) : "Aucune biographie, J'écris ma biographie? Ma catégorie d'emploi, ma description..."; ?>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Je complète mon profil</h3>
</div>

<div class="panel-body">
<div class="row">
<form data-parsley-validate method="POST" autocomplete="off">
<div class="form-group">
<label for="name">Nom<span class="text-danger">*</span></label>
<input type="text" name="name" placeholder="Jean" id="name" value="<?= e($_SESSION['name']) ?>" class="form-control" required="required">
</div>
</div>

<div class="col-md-6">
<div class="form-group">
<label for="city">Ville<span class="text-danger">*</span></label>
<input type="text" value="<?= e($_SESSION['city']) ?>" name="city" id="city" class="form-control" required="required">
</div>
</div>


<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="country">Pays<span class="text-danger">*</span></label>
<input type="text" name="country" id="country" value="<?= e($_SESSION['country']) ?>" class="form-control" required="required">
</div>
</div>

<div class="col-md-6">
<div class="form-group">
<label for="sex">Sexe<span class="text-danger">*</span></label>
<select required="required" name="sex" id="sex" class="form-control">
<option value="H">
Homme
</option>
<option value="F">
Femme
</option>
</select>
</div>
</div>
</div>

<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="twitter">Twitter<span class="text-danger">*</span></label>
<input type="text" value="<?= e($_SESSION['twitter']) ?>" name="twitter" id="twitter" class="form-control" required="required">
</div>
</div>

<div class="col-md-6">
<div class="form-group">
<label for="github">Github<span class="text-danger">*</span></label>
<input value="<?= e($_SESSION['github']) ?>" type="text" name="github" id="github" class="form-control" required="required">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="available_for_hire">
<input type="checkbox" name="available_for_hire" <?= e($_SESSION['available_for_hire']) ? "checked" : ""; ?>>
Disponible pour emploi?
</label>
</div>
</div>

<div class="col-md-12">
<div class="form-group">
<label for="bio">Biographie<span class="text-danger">*</span></label>
<textarea name="bio" id="bio" cols="30" rows="10" class="form-control" required="required" placeholder="J'écris ma biographie, ma catégorie d'emploi..."><?= e($_SESSION['bio']) ?></textarea>
</div>
</div>
</div>
<input type="submit" value="Valider" class="btn btn-info btn-lg active" name="update" />
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<form data-parsley-validate method="POST">
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
<script src="assets/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
<script src="libraries/parsley/parsley.min.js"></script>
<script src="libraries/parsley/i18n/fr.js"></script>
<script src="libraries/parsley/i18n/fr.extra.js"></script>
</body>
</html>
merci de votre réponce

Utile
+1
plus moins
Bonjour,
if(!user){

Il ne manquerait pas un $ ici, par hasard ?

Xavier
Cette réponse vous a-t-elle aidé ?  
arcadenaker 13Messages postés dimanche 30 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - 2 août 2017 à 08:57
Ah oui tu viens de m'intriguer, je vais essayer et on verra...
Répondre
arcadenaker 13Messages postés dimanche 30 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - 2 août 2017 à 09:00
C'est vrai mais cela ne marche quand même pas :(
Répondre
jordane45 18479Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 23 octobre 2017 Dernière intervention - 2 août 2017 à 09:02
Commence par appliquer ce que je t'ai donné. ...
Puis reviens nous montrer ton code modifié....
Là on regardera plus précisément. ..
Répondre
arcadenaker 13Messages postés dimanche 30 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - 2 août 2017 à 09:33
Les modifications sont en bas...
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Déjà... lorsque tu postes du code sur le forum..il serait bien d'y préciser le langage afin d'avoir la coloration syntaxique.
Regarde ceci : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Ca rendrait ton code plus lisible...
Par exemple :
 <?php echo "sans couleur" ; ?>

 <?php echo "AVEC couleur" ; ?>


Ensuite...
Il serait bien de commenter ton code... là on est obligé de tout lire pour savoir ce qu'il est "sensé" faire...


Puis... tu sembles utiliser PDO.
Dans ce cas... active la gestion des erreurs pdo ET place tes requêtes dans des blocs TRY/CATCH (voir ceci : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs )

Et enfin (le plus important...)

Le titre de ta question est :
Probleme lors de l'insertion des donnée sur mon site

Mais le problème que tu décris est :

Je voudrais reprendre des donnée a la base de données pour voir les profiles des autres avec l'id de la personne!


Donc... ma question est : Quel est le souci exactement ???
Insérer des données comme ton titre semble le laisser présager..... ou les"reprendre" (je comprend "récupérer", "lister".... via un "SELECT")
arcadenaker 13Messages postés dimanche 30 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - 2 août 2017 à 08:47
Mais bien sûr quand je change l'ID qui est dans l'url il ne fait rien donc ma question est l'a pourquoi il fait rien et n'affiche pas le profile de l'autre personne ayant cet id ?
Répondre
arcadenaker 13Messages postés dimanche 30 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - 2 août 2017 à 09:15
Modification:
(Dans mon site il n'affiche rien donc l'erreur n'est peut être pas l'à, il sait que il existe ou pas mais il ne fais rien d'autre)
if(!function_exists('find_user_by_id')){
  function find_user_by_id($id){
   global $db;
   try{
   $q = $db->prepare('SELECT name, pseudo, city, available_for_hire, country, email, github, twitter, sex, bio FROM users WHERE id = ?');
   $q->execute([$id]);
   }catch(Exception $e){
    echo "erreur dans le select";
   }
   $data = $q->fetch(PDO::FETCH_OBJ);
   $q->closeCursor();
   return $data;
  }
 }
Répondre
jordane45 18479Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 23 octobre 2017 Dernière intervention - 2 août 2017 à 10:27
Est-ce que tu as également modifié la "connexion" pour activer les erreurs PDO ?

As tu aussi essayé de placer des echo / print dans ton portail pour essayer de voir quelles sont les valeurs de tes différentes variables ???
tu peux aussi mettre des echo dans tes IF .. pour voir si tu entres dedans ou non.

Pense aussi à activer l'affichage des erreurs PHP ( le plus sûr étant de le faire depuis le php.ini de ton serveur).

Désactivé également les éventuelles REDIRECTIONS de pages le temps des tests....
Répondre
jordane45 18479Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 23 octobre 2017 Dernière intervention - 2 août 2017 à 10:42
Tu viens de mettre le sujet en RESOLU ..... tu peux nous dire ce que tu as corrigé ?
Répondre
arcadenaker 13Messages postés dimanche 30 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - 2 août 2017 à 11:12
je l'ai mis en résolu parce que j'ai mis quelques modification avec mes sessions... cela ma pris plus au moins 1 ou 2 heures pour le comprendre mais merci pour votre aide
Répondre
Donnez votre avis

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.

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

Vous n'êtes pas encore membre ?

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