Je n'arrive pas à inserrer les données dans la bd

varley Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   -  
Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,

je suis entrain de m'exercer avec PDO et j'ai un problème car je n'arrive pas à inserrer les données dans la bd j'ai déclaré une variable global dans la bd pour pour pouvoir se connecter mais toujours rien
quelque peut dire m'aider
je vous remercie en avance
plus bas mon fichier de connexion a la bd
et un fichier qui englobe tout le code

bdd.php
<?php

try{
$connect=new PDO('mysql:host=localhost;dbname=test','root','');
}catch(Exception $e){
die('Erreur:'.$e->getMessage());
}

?>





login.php

<html>
<body>
<form method="post" action="">
<input type="text" name="titre"/>
<input type="text" name="auteur"/>
<input type="text" name="contenu"/>
<input type="submit" name="submit" value="connexion"/>
</form>
</body>
</html>

<?php
include('bdd.php');
$connect=new PDO('mysql:host=localhost;dbname=test','root','');
if(isset($_POST['submit'])){
$titre=htmlentities(trim($_POST['titre']));
$auteur=htmlentities(trim($_POST['auteur']));
$contenu=htmlentities(trim($_POST['contenu']));

if(empty($_POST['titre'])){
echo "entrez le titre";
}
if(empty($_POST['auteur'])){
echo "entrez auteur";
}
if(empty($_POST['contenu'])){
echo "entrez le contenu";
}
else{


function connexion($titre,$auteur,$contenu){
//on prepare la reque puis on exécute
global $connect;
$query="INSERT INTO news(titre,auteur,contenu)
VALUES(:titre,:auteur,:contenu)";
$res=$connect->prepare($query);
$verification=$res->execute(array(":titre" =>$titre,":auteur" =>$auteur,":contenu" =>$contenu));
//fonction qui verifie si le pseudo existe deja
if($verification){
echo "data insere";
}else{
echo "data non inserre";
}

}
}


}


?>

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Pleins d'erreurs dans ton code......

Par exemple... : Tu as créé un fichier bdd.php .... pourquoi ne l'utilises tu pas dans tes codes au lieu de recopier le code de connexion un peu partout dans ton code ??
Tu as créés une fonction ... mais tu ne l'appelles pas !

Bref :

Voici ton code remanié :
<?php 
//bdd.php 
try{ 
  $connect=new PDO('mysql:host=localhost;dbname=test','root',''); 
}catch(Exception $e){ 
  die('Erreur:'.$e->getMessage()); 
} 
?> 




nb : On place le PHP AVANT le html en général !
<?php
//login.php 

//connexion à la BDD
require_once 'bdd.php';

//------------------------------------------//
// FONCTIONS
//------------------------------------------//
 function createLigne($titre,$auteur,$contenu){ 
   //on prepare la reque puis et les variables
    global $connect; 
    $sql="INSERT INTO news(titre,auteur,contenu) 
                VALUES(:titre,:auteur,:contenu)"; 
					
	$a_datas = array(":titre" =>$titre,":auteur" =>$auteur,":contenu" =>$contenu);	
    
	//Exécution de la requete :
	try{	
      $res=$connect->prepare($sql); 
      $resultat=$res->execute($a_datas); 
	}catch(Exception $e){
	  echo "<br>Erreur : ".$e->getMessage();
	  $resultat = false;
	}
   return $resultat;
 } 
 
 //-------------------------------------------//
 // Traitemetnt du submit
 //-------------------------------------------//
 
 //récupération "propre" des variables
 $titre   = !empty($_POST['titre']) ? htmlentities(trim($_POST['titre'])) : null; 
 $auteur  = !empty($_POST['auteur']) ? htmlentities(trim($_POST['auteur'])) : null; 
 $contenu = !empty($_POST['contenu']) ? htmlentities(trim($_POST['contenu'])) :null; 
 

if(isset($_POST['submit'])){ 
  $msg = array();
 
  //si tous les champs sont remplis :
  if($titre && $auteur && $contenu){
    //appel de la fonction :
    $insertion = createLigne($titre,$auteur,$contenu);
	if(!$insertion){
	  echo "Erreur lors de l'insertion dans la BDD !";
	}
  }else{
	//sinon on vérifie chaque champ :
	if(!$titre){ $msg[] = 'entrez le titre';}
    if(!$auteur){ $msg[] = 'entrez un auteur';}
	if(!$contenu){ $msg[] = 'entrez le contenu';}
  } 
} 

?>
<html> 
 <body> 
	<div id="zone_formulaire">
		<form method="post" action=""> 
			<input type="text" name="titre"/> 
			<input type="text" name="auteur"/> 
			<input type="text" name="contenu"/> 
			<input type="submit" name="submit" value="connexion"/> 
		</form> 
	</div>
	<div id="zone_message">
	<?php
	  //si il y a des messages à afficher :
	  if(!empty($msg)){
		foreach($msg as $M){
		  echo "<br>".$M;
		}
	  }
	?>
	</div>
 </body> 
</html> 




PS: Merci d'utiliser les balises de code lorsque tu postes du code sur le forum. Merci de lire ceci : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

0
Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   21
 
Bonjour,

si cela peut t'aider j'ai rédiger un mini manuel pour PDO sur mon blog :

http://ww12.xrecasens.info

Cdlt.
0