Insertion dans une base de donnée en php

Résolu/Fermé
aure2015 Messages postés 93 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 30 mai 2020 - 8 mai 2018 à 15:14
jordane45 Messages postés 38469 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 avril 2025 - 8 mai 2018 à 17:25
Bonjour à tous!

Je essaie simplement d'insérer des donnée dans une base de donnée mysql mais ça ne fonctionne pas et je ne comprends pas pourquoi! J'espère que vous pourrez m'aider!

<?php

$Nom = $_GET['Nom'];
$Prenom = $_GET['Prenom'];
$DateNaissance = $_GET['DateNaissance'];
$Email = $_GET['Mail'];
$Telephonne = $_GET['Telephonne'];
$HashPass = $_GET['HashPass'];

$time = strtotime($DateNaissance);
$DateNaissance = date('d/m/Y',$time);



$con = mysqli_connect('localhost','root','','test');
if (!$con) 
    die('Erreur de connection:' . mysqli_error($con));
else
	echo "Connection!";

mysqli_select_db($con,"test");
$sql="INSERT INTO users (Nom, Prenom, DateNaissance, Email, Telephonne, HashPass) VALUES ('".$Nom."','".$Prenom."','".$DateNaissance."','".$Email."','".$Telephonne."','".$HashPass."')";
if($con->query($sql)===FALSE)
	echo "Erreur d'insertion";

mysqli_close($con);
?>
A voir également:

1 réponse

jordane45 Messages postés 38469 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 avril 2025 4 741
8 mai 2018 à 17:06
Bonjour,

Déjà.... tu mélanges du mysqli style procédurale.. et du style objet.
Il faut l'un ou l'autre.

Voici ton code un peu amélioré... et corrigé
<?php
//Affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//connexion à la bdd
$con = mysqli_connect('localhost','root','','test');
if (!$con) 
  die('Erreur de connection:' . mysqli_error($con));
}
//mysqli_select_db($con,"test"); // pas utile vu que tu la selectionne déjà dans la connexion




//récupération PROPRE des variables AVANT de les utiliser
$Nom = !empty($_GET['Nom']) ? $_GET['Nom']: NULL;
$Prenom = !empty($_GET['Prenom']) ? $_GET['Prenom']: NULL;
$Email = !empty($_GET['Email']) ? $_GET['Email']: NULL;
$Telephonne = !empty($_GET['Telephonne']) ? $_GET['Telephonne']: NULL;
$HashPass = !empty($_GET['HashPass']) ? $_GET['HashPass']: NULL;
$DateNaissance = !empty($_GET['DateNaissance']) ? $_GET['DateNaissance']: NULL;
$time = strtotime($DateNaissance);
$DateNaissance = date('d/m/Y',$time);

if($Nom && $Prenom){
  $sql="INSERT INTO users 
                (Nom, Prenom, DateNaissance, Email, Telephonne, HashPass) 
        VALUES ('".$Nom."','".$Prenom."','".$DateNaissance."','".$Email."','".$Telephonne."','".$HashPass."')";
  if (!mysqli_query($con,$sql)){
    echo("Error description: " . mysqli_error($con));
  }
}
mysqli_close($con);


Je t'invite fortement à lire ceci avant de poursuivre dans ton développement....
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
1
aure2015 Messages postés 93 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 30 mai 2020 5
Modifié le 8 mai 2018 à 17:20
Oui j'ai pas republier ma réponse, mais j'avais fait du copier coller de deux codes différents en cherchant à régler le problème qui n'était qu'en faite un problème de nom de table...
J'ai posé ma question trop vite!
Si non, je récupère des données d'un xmlhttp.open , du coup pas besoin! de vérifier si les données sont vides!

Mais merci quand même pour ton aide!


Je poste quand même ma solution:

<?php

$Nom = $_GET['Nom'];
$Prenom = $_GET['Prenom'];
$DateNaissance = $_GET['DateNaissance'];
$Email = $_GET['Mail'];
$Telephonne = $_GET['Telephonne'];
$HashPass = $_GET['HashPass'];


$DateNai = DateTime::createFromFormat('d/m/Y', $DateNaissance)->format('Y-m-d');
echo $DateNai;

$con = mysqli_connect('localhost','root','','test');
if (!$con) 
    die('Could not connect: ' . mysqli_error($con));
else
 echo "Connection!";

mysqli_select_db($con,"test");
$sql="INSERT INTO users (Nom, Prenom, DateNaissance, Email, Telephonne, Password) VALUES ('".$Nom."','".$Prenom."','".$DateNai."','".$Email."','".$Telephonne."','".$HashPass."')";
if($con->query($sql)===FALSE)
 echo "Error: " . $sql . "<br>" . $con->error;

mysqli_close($con);
?>
0
jordane45 Messages postés 38469 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 avril 2025 4 741
8 mai 2018 à 17:25
Le lien que je t'ai donné contient des "bonnes pratiques".
Récupérer "proprement" les variables AVANT de les utiliser en est une..... peu importe la source des données.
Cela évite de nombreux souci.

Sans compter que tu n'as pas lu le code que je t'ai donné.... pour preuve..; ta ligne
mysqli_select_db($con,"test");

qui ne sert strictement à rien..... vu qu'avec mysqli tu selectionne déjà la bdd lors de la connexion.
$con = mysqli_connect('localhost','root','','test');


Idem sur le fait de mélanger du procédural et de l'objet mysqli ...


... copier du code c'est un début. La suite c'est de chercher à le comprendre et à l'améliorer lorsque c'est possible.....
Bonne continuation.
0