Realisation formulaire

mounmoon Messages postés 1 Date d'inscription dimanche 12 février 2017 Statut Membre Dernière intervention 12 février 2017 - 12 févr. 2017 à 12:36
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 12 févr. 2017 à 15:27
Bonjour !

Je suis débutante en PHP est j'ai pour projet de réaliser une petite appli web qui comportera un formulaire de pointage et un formulaire d'absence. Pour ce dernier formulaire, j'aimerais qu'il montre les absences de chaque personnes (ex : si toto se connecte , qu'il puisse voir ses absences sans voir celles des autres !) En effet j'ai réussi à obtenir une liste complète des absences de chacun (que je laisse pour le compte admin à venir) .

J'ai testée différentes solutions et j'ai essayée de l'adapter selon mon projet mais en vain je n'y parviens pas !

Auriez vous des solutions à me proposer ?

<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=formulaire', 'root', '');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="bootstrap.css">
<script src=""quot;https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script>
<script src=""quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel ="stylesheet" type="text/css" href="./bootstrap-datetimepicker-master/css/bootstrap-datetimepicker.css">
<script type="text/javascript" src=""quot;datepicker.js"></script>
<script type="text/javascript" src=""quot;./bootstrap-datetimepicker-master/js/jquery.js"></script>
<script type="text/javascript" src=""quot;./bootstrap-datetimepicker-master/js/bootstrap.min.js"></script>
<script type="text/javascript" src=""quot;./bootstrap-datetimepicker-master/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src=""quot;./bootstrap-datetimepicker-master/js/bootstrap-datetimepicker.fr.js"></script>
<script type="text/javascript" src=""quot;./bootstrap-datetimepicker-master/js/respond.min.js"></script>



<body>

<?php include('menu.php'); ?>


<form class="form-inline" method="POST" action="absbdd.php">

<legend>Ajouter une absence</legend>

<div class="form-group row" >
<label for="" class="col-2 col-form-label">Nom</label>
<div class="col-10">
<input class="form-control" type="text" name="nom" value="">
</div>
</div><br/>

<div class="form-group row" >
<label for="" class="col-2 col-form-label">Prénom</label>
<div class="col-10">
<input class="form-control" type="text" name="prenom" value="">
</div>
</div><br/><br/>

<div class="form-group">
<label for="motif">Motif :</label>
<textarea class="form-control" rows="2" id="motif" name="motif"></textarea>
</div><br/><br/>

<div class="form-group row" >
<div class="form-group">
<label for="datedeb" class="col-2 col-form-label">Date début</label>
<div class="col-10">
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-time"></span></span>
<input class="form-control datetime" name="datedeb" id="datearriveematin" type="text" value="" readonly >
</div>
</div>
</div>
</div><br/><br/>

<div class="form-group row" >
<div class="form-group">
<label for="datefin" class="col-2 col-form-label">Date fin </label>
<div class="col-10">
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-time"></span></span>
<input class="form-control datetime" name="datefin" id="datesortiematin" type="text" value="" readonly >
</div>
</div>
</div>
</div><br/><br/>

<div class="form-group">
<label for="type">Type d'absences:</label>
<select class="form-control" id="type" name="type">
<option>Maladie/Accident</option>
<option>Congés</option>
<option>Fêtes religieuses</option>
<option>Grossesse/Maternité</option>
</select>
</div><br/><br/>

</form>
<button type="submit" class="btn btn-default" name="absence">Valider</button>

<!--LISTE DES ABSENCES-->
<h2>Liste des absences</h2>
<?php
$monsql = "SELECT absence.*,espaceagents.* FROM absence,espaceagents WHERE espaceagents.nom = absence.nom AND absence.nome = '" . $_GET['nom'] ;
$nom = $_GET['Nom'];
$req = $bdd->query("SELECT * FROM absence WHERE nom = $nom");
?>
<?php include("footer.php");?>

</body>
</html>

Voici les codes :

Merci pour avoir pris le temps de lire et d'y répondre ! :)

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié par jordane45 le 12/02/2017 à 15:28
Bonjour,

Tu dis :
si toto se connecte , qu'il puisse voir ses absences sans voir celles des autres

Comment gères tu cette connexion ?
Dans l'idéal .. lorsque "toto" s'authentifie sur ton site... tu stockes, via les variables de session, son identifiant (ou un ID) ... puis, dans tes requêtes, tu te sers de cela pour filtrer les données à afficher

Car avec une variable GET ... il suffit à n'importe qui de changer le nom dans l'URL pour aller voir les données de cette personne...


Quoi qu'il en soit, tu dois commencer par apprendre à gérer les erreurs pdo.
Pour ça.. regarde ici : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Il faut également PROPREMENT récupérer les variables AVANT de les utiliser.
Lire ceci :
http://www.commentcamarche.net/faq/1391-php-notice-undefined-index

Pour finir, place le code de connexion à ta bdd dans un fichier à part pour ne pas avoir à le copier/coller dans chacune de tes pages.

Une fois tout ça appliqué correctement ...ton code deviendrait alors un truc du genre :
<?php
//connexion à la BDD
//fichier ; cnxBdd.php
try{
  $bdd =new PDO('mysql:host=127.0.0.1;dbname=formulaire; charset=utf8', 'root', '');
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//activation des erreurs PHP
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // Type de fetch par défaut
} catch(PDOException $e) {
   // en cas d'erreur
   die('Erreur : ' . $e->getMessage());
}


La suite de ton code:
<?php
//xn--dmarrage-b1a des sessions :
session_start();

//Connexion à la BDD
require_once "cnxBdd.php";

//xn--rcupration-b7ad PROPRE des VARIABLES AVANT de les utiliser:
$nom = !empty($_SESSION['nom'] ? $_SESSION['nom'] : NULL;



if($nom){
  //xn--requte-lva pour récupérer les données
  $sql = "SELECT * FROM absence WHERE nom = :nom ";
  $datas = array(":nom"=>$nom);
  try{
    $prep = $bdd->prepare($sql);
    $prep->execute($datas);
    $absences = $prep->fetchAll();//on stock le résultat dans un array
  }catch(Exception $e){
    echo "Erreur ! ".$e->getMessage();
  }
}


<?php include('menu.php'); ?>
?>
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <link rel="stylesheet" type="text/css" href="bootstrap.css">
  <script src=""quot;"quot;"quot;https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
  </script>
  <script src=""quot;"quot;"quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link rel ="stylesheet" type="text/css" href="./bootstrap-datetimepicker-master/css/bootstrap-datetimepicker.css">
    <script type="text/javascript" src=""quot;"quot;"quot;datepicker.js"></script>
    <script type="text/javascript" src=""quot;"quot;"quot;./bootstrap-datetimepicker-master/js/jquery.js"></script>
    <script type="text/javascript" src=""quot;"quot;"quot;./bootstrap-datetimepicker-master/js/bootstrap.min.js"></script>
    <script type="text/javascript" src=""quot;"quot;"quot;./bootstrap-datetimepicker-master/js/bootstrap-datetimepicker.min.js"></script>
    <script type="text/javascript" src=""quot;"quot;"quot;./bootstrap-datetimepicker-master/js/bootstrap-datetimepicker.fr.js"></script>
    <script type="text/javascript" src=""quot;"quot;"quot;./bootstrap-datetimepicker-master/js/respond.min.js"></script>
</head>
<body>

<form class="form-inline" method="POST" action="absbdd.php">
 <legend>Ajouter une absence</legend>
 <div class="form-group row" >
  <label for="" class="col-2 col-form-label">Nom</label>
  <div class="col-10">
    <input class="form-control" type="text" name="nom" value=""> 
  </div>
 </div><br/>

<div class="form-group row" >
  <label for="" class="col-2 col-form-label">Prénom</label>
  <div class="col-10">
    <input class="form-control" type="text"  name="prenom" value=""> 
  </div>
 </div><br/><br/>

<div class="form-group">
  <label for="motif">Motif :</label>
  <textarea class="form-control" rows="2" id="motif" name="motif"></textarea>
 </div><br/><br/>

<div class="form-group row" >
 <div class="form-group">
    <label for="datedeb" class="col-2 col-form-label">Date début</label>
    <div class="col-10">
    <div class="input-group">
      <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-time"></span></span>
      <input class="form-control datetime" name="datedeb" id="datearriveematin" type="text" value="" readonly >
      </div>
    </div>
 </div>
 </div><br/><br/>

<div class="form-group row" >
 <div class="form-group">
    <label for="datefin" class="col-2 col-form-label">Date fin </label>
    <div class="col-10">
    <div class="input-group">
      <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-time"></span></span>
      <input class="form-control datetime" name="datefin" id="datesortiematin" type="text" value="" readonly >
      </div>
    </div>
 </div>
 </div><br/><br/>

<div class="form-group">
  <label for="type">Type d'absences:</label>
  <select class="form-control" id="type" name="type">
    <option>Maladie/Accident</option>
    <option>Congés</option>
    <option>Fêtes religieuses</option>
    <option>Grossesse/Maternité</option>
  </select>
 </div><br/><br/>

<button type="submit" class="btn btn-default" name="absence">Valider</button>
</form>


<!--LISTE DES ABSENCES-->
<div class="col-md-12">
<h2>Liste des absences</h2>
<?php
 foreach($absences as $absence){
  //ici ton code pour afficher chaque absence
  // par exemple :
  print_r($absence);
 }
?>
</div>

<?php include("footer.php");?>

</body>
</html>


PS: Au fait.. tu n'avais pas fermé ta balises head ... et ton submit se trouvait en dehors de ton form (c'est déconseillé...)
Cordialement, 
Jordane                                                                 
0
Rejoignez-nous