Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

Hors ligne

#3 Le 13/06/2021, à 15:53

bruno

Re : Erreur de connexion à une base mysql

+1 l'erreur est tout à fait explicite wink

Sujet déplacé dans la section idoine.

Hors ligne