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

Signaler
Messages postés
93
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
30 mai 2020
-
Messages postés
28938
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 juillet 2020
-
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);
?>

1 réponse

Messages postés
28938
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 juillet 2020
2 609
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://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61485 internautes nous ont dit merci ce mois-ci

Messages postés
93
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
30 mai 2020
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);
?>
Messages postés
28938
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 juillet 2020
2 609
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.