Skip to content

Instantly share code, notes, and snippets.

@pierrealexaline
Created April 5, 2020 14:48
Show Gist options
  • Save pierrealexaline/ad6c1fd8c4735097518773d72b696b04 to your computer and use it in GitHub Desktop.
Save pierrealexaline/ad6c1fd8c4735097518773d72b696b04 to your computer and use it in GitHub Desktop.
WCS - PDO quest 1
<?php
/*
Enoncé :
Crée une page index.php qui liste les "friends" contenus dans la base, sous la forme d'une liste HTML.
Pense à créer un fichier connec.php que tu n’enverras pas avec ta solution, afin de ne pas dévoiler ton mot de passe.
Sous la liste, crée un formulaire simple disposant des champs obligatoires Firstname et Lastname.
Lorsque tu soumets le formulaire, un nouveau personnage doit être inséré dans la base de données, via une requête préparée.
Poste le fichier PHP dans un Gist.
Bonus : Tu peux effectuer des validations afin de t'assurer que les noms et prénoms ne soient pas vides et
fassent moins de 45 caractères (les champs de la table étant des VARCHAR(45)).
Une fois l'enregistrement effectué, effectue une redirection via l'header() approprié,
afin d'éviter de soumettre le formulaire à nouveau (et donc de créer un doublon) si tu réactualises la page.
Critères de validation :
- Le Gist contient bien le fichier index.php
- La connexion à la base de données est correctement configurée avec PDO (tu peux réutiliser le même fichier connec.php que tu as créé pour réaliser cette quête).
- La page affiche la liste des friends contenus dans ta propre base de données.
- La page affiche un formulaire d'ajout de friend. Lorsque tu soumets le formulaire, un nouveau friend apparaît dans la liste.
- La requête d’insertion est une requête préparée.
*/
//Connexion via PDO
require('connect.php');
$pdo = new \PDO(DSN, USER, PASS);
// Tools : empty dbase
//$pdo->exec("TRUNCATE TABLE friend;");
$output = '';
// We can add new friend ...
if(
isset($_POST['submit']) &&
$_POST['submit']!=''
){
if(
isset($_POST['firstname']) &&
!empty($_POST['firstname']) &&
strlen($_POST['firstname'])<=45
){
$firstname = trim($_POST['firstname']);
}
if(
isset($_POST['lastname']) &&
!empty($_POST['lastname']) &&
strlen($_POST['lastname'])<=45
){
$lastname = trim($_POST['lastname']);
}
if(isset($firstname) && isset($lastname)){
$query = "INSERT INTO friend (firstname, lastname) VALUES (:firstname, :lastname)"; //Write query with :placeholder
$statement = $pdo->prepare($query); // Prepare query
$statement->bindValue(':lastname', $lastname, \PDO::PARAM_STR); // attribute value for each :placeholder
$statement->bindValue(':firstname', $firstname, \PDO::PARAM_STR); // attribute value for each :placeholder
$statement->execute();
header('location:index.php');
}
}
// ... from add friend form
$output .= '<h4>Add friend : </h4>' . "\n";
$output .= '<form action="index.php" method="POST">' . "\n";
$output .= '<label>Firstname : </label>' . "\n";
$output .= '<input type="text" name="firstname" pattern="^[a-zA-Z\'àâäáãåîïìíôöòóõøùûüúéèêëçÿñýÀÂÄÁÃÅÎÏÌÍÔÖÒÓÕØÙÛÜÚÉÈÊËÇŸÑÝ]{1,45}$" required><br>' . "\n";
$output .= '<label>Last name : </label>' . "\n";
$output .= '<input type="text" name="lastname" pattern="^[a-zA-Z\'àâäáãåîïìíôöòóõøùûüúéèêëçÿñýÀÂÄÁÃÅÎÏÌÍÔÖÒÓÕØÙÛÜÚÉÈÊËÇŸÑÝ]{1,45}$" required><br><br>' . "\n";
$output .= '<input type="submit" name="submit" value="ok">' . "\n";
$output .= '<form">' . "\n";
// Select all friends from friend ...
$query = "SELECT * FROM friend";
$statement = $pdo->query($query);
$friends = $statement->fetchAll();
// ... and return friends in an html well formed list
if(isset($friends)){
$output .= '<ul>' . "\n";
foreach($friends as $friend){
$output .= '<li>' . $friend['firstname'] . ' '. $friend['firstname'] . '</li>' . "\n";
}
$output .= '</ul>' . "\n";
}
else{
$output .=" You haven't friend for now, please add some !!!<br>\n";
}
echo $output;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment