#1 Le 12/06/2021, à 09:37
- zigroful1
Erreur de connexion à une base mysql
Bonjour à tous,
Je travaille sous ubuntu 20.10 et j'ai essayé de mettre au point un script me permettant de me connecter à une base mysql (Annuaire) pour alimenter cette base à partir d'un formulaire en html et d'un script PHP me permettant de lire ce formulaire et d'insérer l'enregistrement dans la base.
Il s'agit d'un annuaire téléphonique comportant, en plus de l'id autoincrémenté, les champs civilite, nom, prenom, profession,adresse_postale, code_postal, ville, téléphone1, telephone2, email, fax, commentaires. (13 champs en tout y compris l'id )
Le formulaire est sous fichier nommé annuaire_form.php que voici:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ANNUAIRE TELEPHONIQUE</title>
</head>
<body>
<form action="annuaire.php" method="POST">
<p><label> Civilité</label></p>
<select name="civilite">
<option value="Mme">Mme</option>
<option value="M." >M.</option>
</select>
</p>
<p><label> Nom:<input type="text" name ="nom" /></label></p>
<p><label> Prenom:<input type="text" name ="prenom" /></label></p>
<p><label> Profession:<input type="text" name ="profession" /></label></p>
<p><label> Adresse_postale:<input type="text" name ="adresse_postale" /></label></p>
<p><label> Code_postal:<input type="text" name ="code_postal" /></label></p>
<p><label> Ville:<input type="text" name ="ville" /></label></p>
<p><label> Telephone1:<input type="text" name ="telephone1" /></label></p>
<p><label> Telephone2:<input type="text" name ="telephone2" /></label></p>
<p><label> Email:<input type="text" name ="email" /></label></p>
<p><label> Fax:<input type="text" name ="fax" /></label></p>
<p><label> Commentaires:<input type="text" name ="commentaires" /></label></p>
<p><input type="submit" name="Envoyer" /></p>
</form>
</body>
</html>
Le fichier php permettant de me connecter à la base et d'insérer un enregistrement, le voici:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Base de donnees</title>
</head>
<body>
<?php
// j'importe les valeurs des champs
$id=$_POST['id'];
$civilite=$_POST['civilite'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$profession=$_POST['profession'];
$adresse_postale=$_POST['adresse_postale'];
$code_postal=$_POST['code_postal'];
$ville=$_POST['ville'];
$telephone1=$_POST['telephone1'];
$telephone2=$_POST['telephone2'];
$email=$_POST['email'];
$fax=$_POST['fax'];
$commentaires=$_POST['commentaires'];
//je me connecte à la base de données
// echo "$civilite";
try
{$bdd=new PDO('mysql:host=localhost;dbname=Annuaire; charset=utf8','root','',array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{die ('Erreur de connexion à la base de données : '.$e->getMessage());
}
// var_dump($_POST);
// j'insère les données
$req=$bdd->prepare('INSERT INTO T_Annuaire(id,civilite,nom,prenom,profession,adresse_postale,code_postal,ville,telephone1,telephone2,email,fax,commentaires) VALUES(:id,
:civilite, :nom, :prenom, :profession, :adresse_postale, :code_postal, :ville, :telephone1, :telephone2, :email, :fax, :commentaires)');
$req->execute(array('id'=>$id,'civilite'=>$civilite,'nom'=>$nom,'prenom'=>$prenom,'profession'=>$profession,'adresse_postale'=>$adresse_postale,'code_postal'=>$code_postal,'ville'=>$ville,'telephone1'=>$telephone1,'telephone2'=>$telephone2,'email'=>$email,'fax'=>$fax,'commentaires'=>$commentaires));
?>
<p> <br />echo "La ligne a été insérée dans la base de données" ;<br /></p>
</body>
</html>
J'ai vérifié avec phpmyadmin: tous mes champs ont bien été déclarés, sans faute d'orthographe) et l'id est bien smallint, unsigned, non null, auto_incrémenté.
Quand je lance le formulaire et que je fais un var_dump, je me suis assuré que les variables sont bien transmises, mais PHP me signale l'erreur fatale suivante:
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'telephone1' cannot be null in /var/www/html/annuaire.php:42 Stack trace: #0 /var/www/html/annuaire.php(42): PDOStatement->execute(Array) #1 {main} thrown in /var/www/html/annuaire.php on line 42
Auriez-vous une idée de l'erreur ? J'ai beau chercher et je ne trouve pas. Merci de votre retour
Hors ligne
#2 Le 12/06/2021, à 12:23
- Vobul
Re : Erreur de connexion à une base mysql
Es-tu bien sûr que $telephone1 n'est pas null ?
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#3 Le 13/06/2021, à 15:53
- bruno
Re : Erreur de connexion à une base mysql
+1 l'erreur est tout à fait explicite
Sujet déplacé dans la section idoine.