Partage
  • Partager sur Facebook
  • Partager sur Twitter

Inserer dans la bdd avec un formulaire

    21 mars 2019 à 17:05:33

    Bonjour à tous !

    Alors voilà j'aimerais simplement pouvoir insérer des données d'un formulaire dans une table.

    fichier index.php

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="utf-8">
    		<link rel="stylesheet" href="style.css">
            <title>Gestion</title>
        </head>
        <body>
    
            <?php
    		include 'controlleur.php';
    		ini_set('display_errors', 'on');
    		echo 'hello ';
    		var_dump($_GET['action']);
    		if (isset($_GET['action']))
                {
                    switch ($_GET['action'])
                    {
                        case 'cours':
                            getCours();
                        break;
                        case 'addCours':
                            addCours();
                        break;
                        case 'delCours':
                            delCours();
                        break;
                        default:
                            getCours();
                        break;
                    }
                }
                else
                {
                    getCours();
                }
    		?>
    				
        </body>
    
        <footer>
    		
        </footer>
    </html>

    fichier controlleur.php

    <?php
    include 'model.php';
    function getCours(){
    	$model       = new Model();
        $rows        = $model->getCours();
    
        $lescours = array();
        if (count($rows) > 0)
        {
            foreach ($rows as $row)
            {
                $lescours[] = array(
                    'ref'       => $row['reference'],
                    'lib'      	=> $row['libellé'],
                    'desc'      => $row['description'],
                    'prix'      => $row['prix_30min'],
                    'note' 		=> $row['note_cours']
                );
            }
        }
        include ('cours.php');
    }
    
    function addCours()
    			{
    				$addref = null;
    				$addlib = null;
    				$adddesc = null;
    				$addprix = null;
    				$addnote = null;
    				
    				if(isset($_POST['addref']))
    				{
    					$addref = ($_POST['addref'] != '') ? $_POST['addref'] : null;
    				}
    				if($addref === null)
    				{
    					$addref = 'null';
    				}
    				if(isset($_POST['addlib']))
    				{
    					$addlib = ($_POST['addlib'] != '') ? $_POST['addlib'] : null;
    				}
    				if($addlib === null)
    				{
    					$addlib = 'null';
    				}
    				if(isset($_POST['adddesc']))
    				{
    					$adddesc = ($_POST['adddesc'] != '') ? $_POST['adddesc'] : null;
    				}
    				if($adddesc === null)
    				{
    					$adddesc = 'null';
    				}
    				if(isset($_POST['addprix']))
    				{
    					$addprix = ($_POST['addprix'] != '') ? $_POST['addprix'] : null;
    				}
    				if($addprix === null)
    				{
    					$addprix = 'null';
    				}
    				if(isset($_POST['addnote']))
    				{
    					$addnote = ($_POST['addnote'] != '') ? $_POST['addnote'] : null;
    				}
    				if($addnote === null)
    				{
    					$addnote = 'null';
    				}
    				
    				$model = new Model();
    				$res = $model->addCours($addref,$addlib,$adddesc,$addprix,$addnote);
    				
    				
    				header('Location: index.php?action=cours');
    				exit;
    			}


    fichier model.php

    <?php
    include_once ('connect.php');
    
    class Model
    {
        private $_dbh;
    
        function __construct()
        {
            try
            {
                $this->_dbh = new PDO(DRIVER.':host='.HOSTNAME.';port='.PORT.';dbname='.DBNAME, USER, PASS);
                $this->_dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            }
            catch (PDOException $e)
            {
    			echo $e->getMessage();
                $this->_dbh = null;
            }
        }
    	
    	public function getCours()
    		{
    			$rows = null;
    			if ($this->_dbh !== null)
    			{
    				$query = 'SELECT * FROM gestion.cours order by reference asc';
    			
    				if ($this->_dbh !== null)
    				{
    					$prep = $this->_dbh->prepare($query);
    					$prep->execute();
    					$rows = $prep->fetchAll();
    				}
    			}
            return $rows;
    	}
    
    		
    	public function addCours(
    			$addref,
    			$addlib,
    			$adddesc,
    			$addprix,
    			$addnote
    		)
    	{
    	echo 'model';
    			$queryAddCours = '
    			INSERT INTO 
    				gestion.cours (reference,libellé,description,prix_30min,note_cours) 
    			SELECT
    				\''.$addref.'\',
    				\''.$addlib.'\',
    				\''.$adddesc.'\',
    				\''.$addprix.'\',
    				\''.$addnote.'\'
    			FROM
    				gestion.cours';
    
    			if ($this->_dbh !== null)
    			{
    				$res = $this->_dbh->query($queryAddCours);
    			}
    	}
    
    }

    fichier cours.php qui sert de vue

    <table class='table'>
    	<thead>
    		<tr>
    			<th>Référence</th>
    			<th>Libelle</th>
    			<th>Description</th>
    			<th>Prix (30min)</th>
    			<th>Note</th>
    		</tr>
    	</thead>
    	<tbody>
    		<?php
    			foreach ($lescours as $cours)
    			{
    				echo '<tr>';
    				echo '<td>'.$cours['ref'].'</td>';
    				echo '<td>'.$cours['lib'].'</td>';
    				echo '<td>'.$cours['desc'].'</td>';
    				echo '<td>'.$cours['prix'].'</td>';
    				echo '<td>'.$cours['note'].'</td>';
    				echo '</tr>';
    			}
    		?>
    	
    	</tbody>
    	<tfoot>
    		<form method="post" action="index.php?action=addCours" id="form">
    		<tr>
    			<td>
    			<!--<label>Référence:</label>-->
    			<input class="form-control" type="text" name="addref"/>
    			</td>
    
    			<td>
    			<!--<label>Libelle:</label>-->
    			<input class="form-control" type="text" name="addlib"/>
    			</td>
    
    			<td>
    			<!--<label>Description :</label>-->
    			<input class="form-control" type="text" name="adddesc"/>
    			</td>
    
    			<td>
    			<!--<label>prix:</label>-->
    			<input class="form-control" type="text" name="addprix"/>
    			</td>
    
    			<td>
    			<!--<label>note :</label>-->
    			<input class="form-control" type="text" name="addnote"/>
    			</td>
    			
    			<td>
    			<input form="form" type="submit" value="OK" name='action'"/>
    			</td>
    		</tr>
    		</form>
    	
    	</tfoot>
    </table>
    	
    
    

    un cours a 6 attributs, dont 1 seul obligatoire, l'id qui est généré automatiquement par la base

    lorsqu'on clique pour valider le formulaire, les données sont envoyées dans l'index qui entre dans le switch avec la valeur "addcours" puis va dans le controlleur. a la fin de la fonction addcours je redirige vers index avec la valeur "cours" afin d'afficher la table actualisée

    visiblement j'ai loupé quelque chose :

    -lorsque je remplis un seul champs, rien ne se passe

    -lorsque je remplis tous les champs, 2 lignes sont insérées dans la table, si je recommence à la suite 4 lignes sont insérées, puis 8 ...

    a l'aiiiide haha merci d'avance




    • Partager sur Facebook
    • Partager sur Twitter

    Musaly

    Inserer dans la bdd avec un formulaire

    × 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