Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PHP-MySQL] Erreur d'insertion

Sujet résolu
    6 janvier 2020 à 1:54:41

    Salut les amis , j'arrive pas à insérer plusieurs entrés dans la table 'agenda' seul la première insertion passe , si je veut insérer une nouvelle fois ça passe pas alors que je pense qu'il n'y a pas d’erreur sur mon code.

    Merci de m'aider je galère ....

    <?php 
    session_start();
    include '../bd/bd.php';
    $err="";
    $suc=""; 
    
    if(!isset($_SESSION['login']))
      {
        header('location:index.php');
    
      }else{
        
        $bienv="Bienvenu ".$_SESSION['login'];
      }
    
      if(isset($_POST['submit']))
      {
      	$jour=$_POST['jour'];
      	$mois=$_POST['mois'];
      	$titre_agenda=$_POST['titre_agenda'];
    
      	if($jour && $mois && $titre_agenda)
      	{
      		$insert=$db->query("INSERT INTO agenda(id_agenda,jour,mois,titre_agenda) 
      			VALUES('',$jour','$mois','$titre_agenda')");
    
      		$suc="Agenda enregistré avec succes";
    
      	}else{
      		$err="Veuillez saisir tous les champs";
      		}
       }
    
    
     ?>
     <!DOCTYPE html>
     <html>
     <head>
     	<meta charset="utf-8">
     	<title>Editer un agenda</title>
     	<style type="text/css">
     		.contenu{width: 800px; margin: auto;}
     		label {
    		display:block;
    		width:125px;
    		float:left;
    		}
    		
    		.agenda{width: 800px;display: inline-block;}
    		.agenda form{border: 1px solid #ccc; padding: 12px;}
    		select{width: 175px;}
    
     	</style>
     </head>
     <body>
     	<div class="contenu">
     		<h3>Page super administrateur</h3>
     		<p><?php echo $bienv; ?> <a href="logout.php">Se Deconnecter</a></p>
    
     		<div class="agenda">
     			<h3>Publier un Agenda</h3>
     			<form method="POST" action="">
     				<label>Jour :</label>
     				<input type="number" name="jour"><br><br>
     				<label>Mois :</label>
     				<select name="mois">
     					<option>----- Choisir le mois -----</option>
     					<option value="Janvier">Janvier</option>
     					<option value="Fevrier">Fevrier</option>
     					<option value="Mars">Mars</option>
     					<option value="Avril">Avril</option>
     					<option value="Mai">Mai</option>
     					<option value="Juin">Juin</option>
     				</select><br><br>
     				<label>Titre Agenda</label>
     				<input type="text" name="titre_agenda"><br><br>
     				<input type="submit" name="submit" value="Valider">
     				
     			</form>
     		</div><br><br>
     		<span style="color: red;"><?php echo $err; ?></span>
     		<span style="color: green;"><?php echo $suc; ?></span>
     	</div>
     
     </body>
     </html>



    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2020 à 9:26:45

      Bonjour,

      Première chose, active l'affichage des erreurs PHP et PDO.

      MaridiooHack a écrit:

      ça passe pas

      Cela ne veut pas dire grand chose ... une fois les erreurs activées y en a-t-il d'affichées ? Si oui lesquelles exactement, si non, quel est le résultat obtenu ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        6 janvier 2020 à 11:39:50

        Et prépares ta requête pour éviter les injections SQL et tout problème de quotes.

        Il y en a notamment une (') après $jour mais pas avant ... Pour passer inaperçu, à moins d'un if pas satisfait, les erreurs PDO/SQL ne sont de toute évidence pas activées.

        On évitera aussi '' en valeur d'un entier (qu'il soit auto-incrémenté ou non), avec un sql_mode strict, ça ne passera pas. Carrément omettre la colonne sinon utiliser NULL ou DEFAULT.

        • après header on met un exit;
        • le code est mal indenté
        • quand on fait un echo on met un htmlspecialchars pour les XSS

        -
        Edité par julp 6 janvier 2020 à 11:45:35

        • Partager sur Facebook
        • Partager sur Twitter
          7 janvier 2020 à 2:15:41

          Merci les amis j'ai utilisé les requête préparé et ça marche..

          ...

           if(isset($_POST['submit']))
            {
            	$jour=$_POST['jour'];
            	$mois=$_POST['mois'];
            	$titre_agenda=$_POST['titre_agenda'];
          
            	if($jour && $mois && $titre_agenda)
            	{
            		$pdoStat=$db->prepare('INSERT INTO agenda VALUES(NULL,:jour,:mois,:titre_agenda)');
          
                $pdoStat->bindValue(':jour', $_POST['jour'], PDO::PARAM_INT);
                $pdoStat->bindValue(':mois', $_POST['mois'], PDO::PARAM_STR);
                $pdoStat->bindValue(':titre_agenda', $_POST['titre_agenda'], PDO::PARAM_STR);
                $pdoStat->execute();
          
            		$suc="Agenda enregistré avec succes";
          
            	}else{
            		$err="Veuillez saisir tous les champs";
            		}
             }
          



          • Partager sur Facebook
          • Partager sur Twitter

          [PHP-MySQL] Erreur d'insertion

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown