Connexion base de données PDO
Résolu
Zakarya93
Messages postés
1026
Statut
Membre
-
Zakarya93 Messages postés 1026 Statut Membre -
Zakarya93 Messages postés 1026 Statut Membre -
Bonjour,
Comment puis-je organiser mon fichier "functions.php" en PDO ?
Sachant que le script mysql est :
s'il vous plait je bloque trop
vidéo à l'appui : https://www.youtube.com/watch?v=ZP422fZDcCQ
Comment puis-je organiser mon fichier "functions.php" en PDO ?
Sachant que le script mysql est :
<?php
//connexion à la base de données
mysql_connect('localhost','root','')or die('error');
mysql_select_db('rs')or die('Bdd introuvable');
mysql_query('SET NAMES utf8');
//function qui va se charger d'inscrire l'utilisateur
function inscrire_utilisateur($pseudo,$password,$email,$sex
e,$sittuation,$apropos)
{
$password=sha1($password);
mysql_query("INSERT INTO utilisateurs(id,pseudo,password,email,sexe,situati
on,apropos)
VALUES(','$pseudo','$password','$email','$sexe','$
situation','$apropos','
'")or die(mysql_error());
}
?>
s'il vous plait je bloque trop
vidéo à l'appui : https://www.youtube.com/watch?v=ZP422fZDcCQ
2 réponses
-
Bonsoir,
<?php try { $bdd = new PDO ('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } function inscrire_utilisateur($pseudo,$password,$email,$sexe,$situation,$apropos) { Global $bdd; $password=sha1($password); $sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,situation,apropos) VALUES (:pseudo,:password,:email,:sexe,:situation,:apropos)"; $result = $bdd->prepare($sql); $result->bindValue('pseudo', $pseudo, PDO::PARAM_STR); $result->bindValue('password', $password, PDO::PARAM_STR); $result->bindValue('email', $email, PDO::PARAM_STR); $result->bindValue('sexe', $sexe, PDO::PARAM_STR); $result->bindValue('situation', $situation, PDO::PARAM_STR); $result->bindValue('apropos', $apropos, PDO::PARAM_STR); $result->execute(); } ?>
Cordialement,
Thorak83-
Merci !
Et pour le script register.php :
<h1>Inscription</h1>
<?php
$link = mysqli_connect();
if(isset($_POST['submit'])){
$sexe = mysqli_real_escape_string($link, htmlentities(trim($_POST['sexe'])));
$pseudo = mysqli_real_escape_string($link, htmlentities(trim($_POST['pseudo'])));
$password = mysqli_real_escape_string($link, htmlentities(trim($_POST['password'])));
$repeatpassword = mysqli_real_escape_string($link, htmlentities(trim($_POST['repeatpassword'])));
$email = mysqli_real_escape_string($link, htmlentities(trim($_POST['email'])));
$apropos = mysqli_real_escape_string($link, htmlentities(trim($_POST['apropos'])));
if(empty($pseudo))
{
$errors[] ="Veuillez saisir un pseudo";
}
if (empty($password))
{
$errors[] ="Veuillez saisir un password";
}
if($password != $repeatpassword)
{
$errors[] = "Vos deux password doivent être identiques";
}
if(!filter_var($email,FILTER_VALIDATE_EMAIL))
{
$errors[] = "Votre adresse email n'est pas correcte";
}
if(empty($apropos))
{
$errors[] = "Veuillez vous décrire en quelques lignes";
}
if(!empty($errors))
{
foreach($errors as $error)
{
echo "<div class='error'>".$error."</div>";
}else{
inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos);
die('Inscription terminée, vous pouvez vous<a href=\'index.php?page=login\'>connecter</a>');
}
}
}
?>
<form method="POST" action="">
<label for='sexe'>Sexe</label>
<select name="sexe">
<?php echo isset($sexe)?'<option value='.$sexe.'>'.$sexe.'</option>':""; ?>
<?php echo $sexe != 'Homme' ?'<option value="Homme">Homme</option>':""; ?>
<?php echo $sexe != 'Femme' ?'<option value="Femme">Femme</option>':""; ?>
</select><br /><br/>
<label for="pseudo">Votre pseudo : </label>
<input type="text" name ="pseudo" value='<?php echo isset($pseudo) ? $pseudo :""; ?>'><br />
<label for="password">Votre password : </label>
<input type="password" name ="password"><br />
<label for="repeatpassword">Repetez votre password : </label>
<input type="password" name ="repeatpassword"><br />
<label for="email">Veuillez saisir votre email : </label>
<input type="text" name ="email" value='<?php echo isset($email) ? $email :""; ?>'><br />
<label for="apropos">A propos de vous </label>
<textarea rows="6" cols="30" name="apropos"><?php echo isset($apropos) ? $apropos : ""; ?></textarea><br /><br />
<input type="submit" value="S'inscrire" name="submit">
</form>
<a href='index.php?page=login'>Retournez à la page de connexion</a>
Pour la partie ligne 47 :
}else{
inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos);
die('Inscription terminée, vous pouvez vous<a href=\'index.php?page=login\'>connecter</a>');
Je mets quoi à la place ? car il me dit "Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp\www\rs\pages\register.php on line 47" -
-
-
Le voici :
<h1>Inscription</h1> <?php $link = mysqli_connect(); if(isset($_POST['submit'])){ $sexe = mysqli_real_escape_string($link, htmlentities(trim($_POST['sexe']))); $pseudo = mysqli_real_escape_string($link, htmlentities(trim($_POST['pseudo']))); $password = mysqli_real_escape_string($link, htmlentities(trim($_POST['password']))); $repeatpassword = mysqli_real_escape_string($link, htmlentities(trim($_POST['repeatpassword']))); $email = mysqli_real_escape_string($link, htmlentities(trim($_POST['email']))); $apropos = mysqli_real_escape_string($link, htmlentities(trim($_POST['apropos']))); if(empty($pseudo)) { $errors[] ="Veuillez saisir un pseudo"; } if (empty($password)) { $errors[] ="Veuillez saisir un password"; } if($password != $repeatpassword) { $errors[] = "Vos deux password doivent être identiques"; } if(!filter_var($email,FILTER_VALIDATE_EMAIL)) { $errors[] = "Votre adresse email n'est pas correcte"; } if(empty($apropos)) { $errors[] = "Veuillez vous décrire en quelques lignes"; } if(!empty($errors)) { foreach($errors as $error) { echo "<div class='error'>".$error."</div>"; }else{ inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos); die('Inscription terminée, vous pouvez vous<a href=\'index.php?page=login\'>connecter</a>'); } } ?> <form method="POST" action=""> <label for='sexe'>Sexe</label> <select name="sexe"> <?php echo isset($sexe)?'<option value='.$sexe.'>'.$sexe.'</option>':""; ?> <?php echo $sexe != 'Homme' ?'<option value="Homme">Homme</option>':""; ?> <?php echo $sexe != 'Femme' ?'<option value="Femme">Femme</option>':""; ?> </select><br /><br/> <label for="pseudo">Votre pseudo : </label> <input type="text" name ="pseudo" value='<?php echo isset($pseudo) ? $pseudo :""; ?>'><br /> <label for="password">Votre password : </label> <input type="password" name ="password"><br /> <label for="repeatpassword">Repetez votre password : </label> <input type="password" name ="repeatpassword"><br /> <label for="email">Veuillez saisir votre email : </label> <input type="text" name ="email" value='<?php echo isset($email) ? $email :""; ?>'><br /> <label for="apropos">A propos de vous </label> <textarea rows="6" cols="30" name="apropos"><?php echo isset($apropos) ? $apropos : ""; ?></textarea><br /><br /> <input type="submit" value="S'inscrire" name="submit"> </form> <a href='index.php?page=login'>Retournez à la page de connexion</a> <?php }else{ inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos); die('Inscription terminée, vous pouvez vous<a href=\'index.php?page=login\'>connecter</a>'); ?> -
-
-
Bonsoir,
Voici votre code une fois passé en PDO :
<?php try { // On se connecte à MySQL $bdd = new PDO(sprintf('mysql:host=%s;dbname=%s', $host, $dbname), $user, $pass); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } function inscrire_utilisateur($pseudo,$password,$email,$sex e,$sittuation,$apropos) { $password=sha1($password); //On prepare l'insertion $requete=prepare("INSERT INTO utilisateurs(id,pseudo,password,email,sexe,situati on,apropos) VALUES(:pseudo, :password, :email, :sexe, :situation, :apropos)"); $requete->execute(array( ':pseudo'=> $pseudo, ':password'=>$password, ':email'=> $email, ':sexe' => $sexe, ':situation' => $situation, ':apropos' => $apropos)); $requete->CloseCursor() //on ferme la base de donnée } ?>
Après avoir vu quelques exemples sur le web, on se fait vite à la syntaxe en PDO.
Bonne soirée,
Cordialement,
hharchi9.-
-
Oups quelques fautes de frappe ont eu raison de moi ! Voici le script fonctionnel :
<?php try { // On se connecte à MySQL $bdd = new PDO(sprintf('mysql:host=%s;dbname=%s', $host, $dbname), $user, $pass); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } function inscrire_utilisateur($pseudo,$password,$email,$sexe,$situation,$apropos) { $password=sha1($password); //On prepare l'insertion $requete=prepare("INSERT INTO utilisateurs(id,pseudo,password,email,sexe,situati on,apropos) VALUES(:pseudo, :password, :email, :sexe, :situation, :apropos)"); $requete->execute(array( ':pseudo'=> $pseudo, ':password'=>$password, ':email'=> $email, ':sexe' => $sexe, ':situation' => $situation, ':apropos' => $apropos)); $requete->CloseCursor(); //on ferme la base de donnée } ?>- Bonjour hharchi9 ,
Ton code me semble tout à faire correcte.... toutefois je conseillerais la chose suivante :
- Sortir la requête du prépare
- Sortir l'Array des variables du Execute.
- Prévoir le cas où certains paramètres de la fonction ne seraient pas envoyés
- Ne pas oublier l'objet PDO au moment d'appeller le prépare
- Ne pas mettre l'ID dans le INSERT (surtout si il est auto-incrémenté)
- Ne pas hésiter à faire des retours à la ligne pour présenter les requêtes.. ça les rend plus lisibles.
Donc en gros ://---------------------------------------------// // Connexion à la BDD via PDO //---------------------------------------------// $host = "localhost"; $dbname = "nom_de_la_base"; $user = "root"; $pass = ""; try { $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass,array(PDO::ATTR_PERSISTENT => true)); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { print "Erreur !: " . $e->getMessage() . "<br/>"; die(); } function inscrire_utilisateur($pseudo,$password,$email='',$sexe='M',$situation='',$apropos=''){ $password=sha1($password); $sql = "INSERT INTO utilisateurs (pseudo ,password ,email ,sexe ,situation ,apropos) VALUES(:pseudo , :password , :email , :sexe , :situation , :apropos)"; $params = array( ':pseudo'=> $pseudo, ':password'=>$password, ':email'=> $email, ':sexe' => $sexe, ':situation' => $situation, ':apropos' => $apropos ); //On prepare l'insertion $requete= $dbh->prepare($sql); $result = $requete->execute($params); return $result ; } ?>
-
-
-