Insertion dans une base de donnée en php [Résolu/Fermé]

Messages postés
91
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
24 septembre 2019
- - Dernière réponse : jordane45
Messages postés
26437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 octobre 2019
- 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);
?>
Afficher la suite 

1 réponse

Messages postés
26437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 octobre 2019
1817
0
Merci
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....
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
aure2015
Messages postés
91
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
24 septembre 2019
4 -
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);
?>
jordane45
Messages postés
26437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 octobre 2019
1817 -
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.