Bonsoir,
Je cherche à créée une fonction pour inséré du contenu dans une bdd la ou je coince un peu dans ma réflexion c'est au niveau des noms et des valeur de la table puisque ce si provienne d'un $_POST et que les valeurs et leur nombre(qauntité, 5, 10 ou plus) sont inconnu. Comme on peut le voir $contentinsert contient sur la première ligne le nom de la table le reste provient du $_POST.
Je doit donc faire deux choses, la première très importante sécuriser tout sa il faut donc que je décortique le tableau en sachant que la nomenclature utiliser pour nommer les inputs et toujours la même; et quand ensuite je réparti les clés et la valeur avant de pouvoir enfin exécuté la requête.
function insert($contentinsert){
require('connect.php');
var_dump($contentinsert);
foreach ($contentinsert as $key => $value) {
if($key == "password"){
// chiffrement du mdp
}
elseif($key == "email"){
// vérification email
}
else{
$key = addslashes($value);
}
}
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, name, etc) VALUES (value, value, etc)");
$stmt->execute();
}
'nametable' => string 'matable' (length=7)
'name' => string 'Toto' (length=4)
'firstname' => string 'Tata' (length=4)
'password' => string '1234' (length=4)
<?php
function insert($content){
require('connect.php');
foreach($content as $k => $v){
if($k == 'password'){
// ...
}elseif($k == 'email'){
// ...
}
}
// Génère les clés dans $sql
$keys = array_keys($content);
$keys = implode(', ', $keys);
// Génère les ?, ?, ?, etc, dans $sql
$values = null;
for($i=0; $i < count($content); $i++){
$values .= '?, ';
}
$values = trim($values, ', ');
$sql = "INSERT INTO REGISTRY ($keys) VALUES ($values)";
$stmt = $dbh->prepare($sql);
$stmt->execute($content); // on mes les values de $content à la place des ?, ?,...
}
J'ai pas encore tester le code, mais y a un truc que je pige pas c'est comment ? Si je chiffre mon mdp dans le foreach comment se dernier pe se retrouver dans la bdd ?
<?php
function insert($content){
require('connect.php');
foreach($content as $k => $v){
if($k == 'password'){
$k = chiffrement($k);
}elseif($k == 'email'){
// ...
}
}
// Génère les clés dans $sql
$keys = array_keys($content);
$keys = implode(', ', $keys);
// Génère les ?, ?, ?, etc, dans $sql
$values = null;
for($i=0; $i < count($content); $i++){
$values .= '?, ';
}
$values = trim($values, ', ');
$sql = "INSERT INTO REGISTRY ($keys) VALUES ($values)";
$stmt = $dbh->prepare($sql);
$stmt->execute($content); // on mes les values de $content à la place des ?, ?,...
}
Pourquoi faire un insert pour ça ?
Utilise $_SESSION pour savoir si l'utilisateur a pu se connecter ou non. Ensuite tu ne le laisses ajouter du content que s'il est connecté.
<?php
function insert($content){
require('connect.php');
foreach($content as $k => $v){
if($k == 'password'){
/* ton chiffrement ici
e.g: $content$k] = md5($v);
on modifie directement $content, et comme en ligne 30, on ce base sur content, ton hash va se retrouver en DB
*/
}elseif($k == 'email'){
// ...
}
}
// Génère les clés dans $sql
$keys = array_keys($content);
$keys = implode(', ', $keys);
// Génère les ?, ?, ?, etc, dans $sql
$values = null;
for($i=0; $i < count($content); $i++){
$values .= '?, ';
}
$values = trim($values, ', ');
$sql = "INSERT INTO REGISTRY ($keys) VALUES ($values)";
$stmt = $dbh->prepare($sql);
$stmt->execute($content); // on mes les values de $content à la place des ?, ?,...
}
Bonjour,
@Brandon-xprodeur non je connaissais pas Medoo mais c'est exactement se que je cherche à faire ^^
@nestecha, je ne chercher pas à créée un système de login mais simplement apprendre à utiliser les "class" en php du coup je suis dit pour gagner du temps je me faire une petit "class" pour les bdd sauf quelqu'un à eu la même idée que moi avant :D
Je crois qu'on appel ça des class d'abstraction, ça ajoute une couche type php -> medoo -> mysql