mes donnes ne rentrent pas dans ma base de donnee

Eléphanteau du PHP | 18 Messages

09 janv. 2016, 13:52

bonjour j'ai créé un formulaire de contact en POO mais mes informations ne rentrent pas dans la base
<?php
require('Formulaire.class.php');
$ville = 'paris';
$aujoudhui = date("Y-m-d");
$demain = date('Y-m-d', strtotime('+1 day'));
$apres_demain = date('Y-m-d', strtotime('+2 day'));
$periodes = array('matin','après-midi','nuit'); 
$resumes = array('nuageux','pluvieux', 'ensoleillé','brumeux');
if(!empty($_POST))
{
  extract($_POST);
  $valid = (empty($date) || empty($periode)  || empty($resume) || empty($tempmin)||(! is_numeric($tempmin))|| empty($tempmax)||(! is_numeric($tempmax))|| empty($commentaires)) ? false : true;
  $erreurdate = (empty($date)) ? 'Indiquez la date' : null;
  $erreurperiode = (empty($periode)) ? 'Indiquez la période' : null;
  $erreuresume = (empty($resume)) ? 'Indiquez le résumé' : null;
  $erreurtempmin = (empty($tempmin) || (! is_numeric($tempmin))) ? 'indiquez une température minimum valide' : null;      $erreurtempmax = (empty($tempmax) || (! is_numeric($tempmax))) ? 'indiquez une température maximum valide' : null;
  $erreurcommentaires = (empty($commentaires)) ? 'Indiquez votre commentaires' : null;
  
  
  if($valid)
  {
    $formulaire = new Formulaire();
    
   $formulaire->insertFormulaire($date,$ville,$periode,$resume,$resume_id,$tempmin,$tempmax,$commentaires);
    
   
    
   
    
    
  }
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="style.css" media="all" />
  <title></title>
</head>
<body>
  
  <div id="content">
    
   
    
    <form action="index.php" method="post">
     <label for="date">Entrez la date :</label>
      <span class="error"><?php if(isset( $erreurdate))   ;?></span>
     <select name="date"/>
<?php
echo '<option value="'.$aujoudhui.'">'.$aujoudhui.'</option>'; 
echo '<option value="'.$demain.'">'.$demain.'</option>';
echo '<option value="'.$apres_demain.'">'.$apres_demain.'</option>';
?>
<?php if(isset($date)) echo $date;?></br>
</select>
<label for="periode">Entrez la période :</label>
      <span class="error"><?php if(isset( $erreurperiode))   ;?></span>
<select name="periode">
       <option value ="">entrez la période</option>
        <option value ="matin">matin</option>
        <option value ="après-midi">après-midi</option>
        <option value ="nuit">nuit</option>
</select>


 <?php if(isset($periode)) ;?></br>
[php]

<label for="resume">Entrez le résumé :</label>
<span class="error"><?php if(isset($erreuresume)) ;?></span>
<select name="resume">

<option value="">entrez la valeur</option>
[/html]
    

<?php
foreach($resumes as $key => $resume):
echo '<option value="'.$key.'">'.$resume.'</option>'; //close your tags!!
endforeach;
?>
</select>
<?php
if (isset($_POST['resume']))
 {
$resume_id = $_POST['resume'];
$resume = $resumes[$_POST['resume']];

}
echo'</br>';
?>
<label for="tempmin">Température Minimum :</label>
      <span class="error"><?php if(isset( $erreurtempmin)) echo  $erreurtempmin;?></span>
      <input type="text" name="tempmin" value="<?php if(isset($tempmin)) ;?>" /></br>
      
      
      <label for="tempmax">Température Maximum :</label>
      <span class="error"><?php if(isset( $erreurtempmax)) echo  $erreurtempmax;?></span>
      <input type="text" name="tempmax" value="<?php if(isset($tempmax)) ;?>" /></br>
     
      <label for="commentaires">Votre commentaire :</label>
      <span class="error"><?php if(isset($erreurcommentaires)) echo $erreurcommentaires;?></span>
      <textarea name="commentaires"><?php if(isset($commentaires)) ;?></textarea>
    
      <input type="submit" class="submit" value="Envoyer" />
      
      
    </form>
<?php echo '<h1>la date est '.$date.'la ville est '.$ville . 'la période est ' .$periode .' le resumé est '.$resume . ' la clef est '.$resume_id .' la température minimum est '.$tempmin .' la température maximum est '.$tempmax .' et le commentaire est '.$commentaires .'</h1>'; ?>
</div>
  
</body>
</html>
voici Formulaire.class.php
 
<?php

class Formulaire
{
  private $date;
  private $ville;
  private $periode;
  private $resume;
  private $resume_id;
  private $tempmin;
  private $tempmax;
  private $commentaires;
  
  public function insertFormulaire($date,$ville,$periode,$resume,$resume_id,$tempmin,$tempmax,$commentaires)
  {
	  $this->date = strip_tags($date);
	  $this->ville = strip_tags($ville);
    $this->periode = strip_tags($periode);
    $this->resume = strip_tags($resume);
    $this->resume_id = strip_tags($resume_id);
	$this->tempmin = strip_tags($tempmin);
	$this->tempmax = strip_tags($tempmax);
	$this->commentaires = strip_tags($commentaires);
	 
 
 require('connexion.php');

 $req = $bdd->prepare('INSERT INTO formulaire(date,ville,periode,resume,resume_id,tempin,tempmax,commentaires) VALUES (:date,:ville,:periode,:resume,:resume_id,:tempmin,:tempmax,:commentaires)');
     $req->execute(array(':date' => $this->date,
                        ':ville' =>  $this->ville,
                        ':periode' => $this->periode,
                        ':resume' => $this->periode,
                        ':resume_id' => $this->periode,
						':tempmin' => $this->periode,
						':tempmax' => $this->periode,
						':commentaires' =>$this->periode,
						
                        ));
  }

}
?>
et enfin mon connexion.php
<?php

    try{
    $bdd = new PDO('mysql:host=localhost;dbname=meteo', 'root', 'root') or die(print_r($bdd->errorInfo()));
    $bdd->exec('SET NAMES utf8');
    }
    
    catch(Exeption $e){
    die('Erreur:'.$e->getMessage());
    }

?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 janv. 2016, 16:18

Bonjour,

As-tu essayé de débuguer ton script ?
Que se passe-t-il ? Quels sont les messages d'erreurs ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 18 Messages

09 janv. 2016, 16:31

si je fais un "echo" tous les données sont correctes c'est juste qu'ils ne rentrent pas dans la base ,serais tu éventuellement comment débuguer un script

Mammouth du PHP | 2703 Messages

09 janv. 2016, 17:24

':resume' => $this->periode,
':resume_id' => $this->periode,
':tempmin' => $this->periode,
':tempmax' => $this->periode,
':commentaires' =>$this->periode,

));

je doute qu'il faille insérer si souvent $this->periode, et il y a un , en trop avant )

Eléphanteau du PHP | 18 Messages

10 janv. 2016, 17:13

j'ai corrigé le problème de connexion mais maintenant dans ma base de donnée le formulaire "resume" et "resume_id "ne rentre pas dans la base ,et mes données s'inscrive en double dans la base

index.php
<?php
require('Formulaire.class.php');

$ville = 'paris';
$aujoudhui = date("Y-m-d");
$demain = date('Y-m-d', strtotime('+1 day'));
$apres_demain = date('Y-m-d', strtotime('+2 day'));
$periodes = array('matin','après-midi','nuit'); 
$resumes = array('nuageux','pluvieux', 'ensoleillé','brumeux');
if(!empty($_POST))
{
  extract($_POST);
  $valid = (empty($date) || empty($periode)  ||empty($tempmin)||(! is_numeric($tempmin))|| empty($tempmax)||(! is_numeric($tempmax))|| empty($commentaires)) ? false : true;
  $erreurdate = (empty($date)) ? 'Indiquez la date' : null;
  $erreurperiode = (empty($periode)) ? 'Indiquez la période' : null;
  
  $erreurtempmin = (empty($tempmin) || (! is_numeric($tempmin))) ? 'indiquez une température minimum valide' : null;      $erreurtempmax = (empty($tempmax) || (! is_numeric($tempmax))) ? 'indiquez une température maximum valide' : null;
  $erreurcommentaires = (empty($commentaires)) ? 'Indiquez votre commentaires' : null;
  
  
  if($valid)
  {
    $formulaire = new Formulaire();
    
   $formulaire->insertFormulaire($date,$ville,$periode,$resume,$resume_id,$tempmin,$tempmax,$commentaires);
    
   
    
   
    
    
  }
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="style.css" media="all" />
  <title></title>
</head>
<body>
  
  <div id="content">
    
   
    
    <form action="index.php" method="post">
     <label for="date">Entrez la date :</label>
      
     <select name="date"/>
<span class="error"><?php if(isset( $erreurdate))   ;?></span>
<?php
echo '<option value="">entrez la date</option>';
echo '<option value="'.$aujoudhui.'">'.$aujoudhui.'</option>'; 
echo '<option value="'.$demain.'">'.$demain.'</option>';
echo '<option value="'.$apres_demain.'">'.$apres_demain.'</option>';
?>
</select>
<?php if(isset($date));?></br>


      <?php print_r($date);?>
<label for="periode">Entrez la période :</label>
      <span class="error"><?php if(isset( $erreurperiode))   ;?></span>
<select name="periode">
       <option value ="">entrez la période</option>
        <option value ="matin">matin</option>
        <option value ="après-midi">après-midi</option>
        <option value ="nuit">nuit</option>
</select>
<?php if(isset($periode)) ;?></br>
    <?php print_r($periode);?>
<label for="resume">Entrez le résumé :</label>
   <select name="resume">
   
<option value="">entrez la valeur</option>
<?php
foreach($resumes as $key => $resume):
echo '<option value="'.$key.'">'.$resume.'</option>'; //close your tags!!
endforeach;
?>
</select>
<?php
if (isset($_POST['resume']))
 {
$resume_id = $_POST['resume'];
$resume = $resumes[$_POST['resume']];

}
echo $resume;
echo $resume_id;
?>


</br>
<label for="tempmin">Température Minimum :</label>
      <span class="error"><?php if(isset( $erreurtempmin)) echo  $erreurtempmin;?></span>
      <input type="text" name="tempmin" value="<?php if(isset($tempmin)) ;?>" /></br>
     
      
      <label for="tempmax">Température Maximum :</label>
      <span class="error"><?php if(isset( $erreurtempmax)) echo  $erreurtempmax;?></span>
      <input type="text" name="tempmax" value="<?php if(isset($tempmax)) ;?>" /></br>
     
      <label for="commentaires">Votre commentaire :</label>
      <span class="error"><?php if(isset($erreurcommentaires)) echo $erreurcommentaires;?></span>
      <textarea name="commentaires"><?php if(isset($commentaires)) ;?></textarea>
      <?php print_r($commentaires);?>
      <input type="submit" class="submit" value="Envoyer" />
      
      
    </form>
   
    
  </div>
  
</body>
</html>
mon Formulaire.class.php
  <?php

class Formulaire
{
  private $date;
  private $ville;
  private $periode;
  private $resume;
  private $resume_id;
  private $tempmin;
  private $tempmax;
  private $commentaires;
  
  public function insertFormulaire($date,$ville,$periode,$resume,$resume_id,$tempmin,$tempmax,$commentaires)
  {
	
	 
 
 $mysqli = new mysqli('localhost','root','root','meteo');
$mysqli->set_charset("utf8"); // encodage utf8
/* vérification de la connexion */
if($mysqli->connect_errno) {
	
printf("echec de la connexion : %s\n" ,$mysqli->connect_error);
exit();
}

if (!$mysqli->query('INSERT INTO formulaire(date,ville,periode,resume,resume_id,tempmin,tempmax,commentaires)VALUES("'. $date .'","' . $ville .'", "' . $periode .'","' . $resume .'","' . $resume_id .'","' . $tempmin .'","' . $tempmax .'","' . $commentaires .'")'))
	
{
	
	echo 'une erreur est survenue lors de l\'insertion des données dans la base. Message d\'erreur : '. $mysqli->error;
	
	return false ;
	
}	
	
	else{
	return true;
	$mysqli->close();
	
	}
	
	
  }

	



				
 

}
?>