IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Multiples problèmes sur un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Par défaut Multiples problèmes sur un formulaire
    Bonjour,
    Voilà pas mal de temps que je m'échine sur un formulaire très simple. Pourtant j'arrive à faire un qformulaire utilisateur, récupérer les données et envoyer ce dernier vers un autre formulaire de login.
    Bref, ici j'ai de multiples soucis, je n'arrive pas à faire entrer les données dans la base de donnée.
    En outre je voudrais qu'une fois les données entrées et validées celà me retourne le même formulaire avec un écho de réussite et que s'affiche sous ce formulaire le tableau de tous les exercices.
    D'ailleurs à ce niveau j'ai deux autres soucis, mettre deux colonnes sur la dernière ligne nommée Actions et donner des couleurs différentes entre le "menu" et les colonnes.

    Je vous pose les fichiers en espèrant avoir un tout petit peu d'aide car là je m'arrache les cheveux pour des choses certainements très simples

    Formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
     
    <!doctype>
    <html lang="fr">
        <head>
    	<link href="contact.css" type="text/css" rel="stylesheet"/>
    	<meta charset="UTF-8" />
    <head>
     
    <title>Formulaire03</title>
    </head>
    <body>
     
     <!--     <form name="form1" action="submit.php" method="onsubit=return check();"> --> 
     
     
    	<fieldset>
    	<legend>
    		<p>Ajouter un exercice</p>
    		</legend>
     
    		<table>
     
     
    	<tr>		
    	<td>Titre de l'exercice</td>
    	<td>
    	<input type="text" name="titre" placeholder="" required />
    	</td>
    	</tr>
     
    	<tr>
    	<td>Auteur de l'exercice</td>
    	<td>
    	<input type="text" name="Auteur" placeholder="" required/> 
    	</td>
    	</tr>
     
    	<tr>
    	<td>Date de création</td>
    	<td>
    	<input type="date" name="date" placeholder="" required/> 
    	</td>
    	</tr>
     
    	<tr><td>	<input type="submit"   value="Envoyer" name="submit"/></td></tr>
     
    	</table>
    	</fieldset>
    	</form>
    	</body>
    	</html>
    <?php
     
     
    //  PREMIERE SOLUTION
     
    /*if(isset($_POST['submit'])){
    	
    	
    	if (!empty($_POST['titre']) AND !empty($_POST['auteur']) AND !empty($_POST['date'])){
    		
    //					if ((isset($_POST['titre']) && !empty($_POST['titre']))
    //					&& (isset($_POST['auteur']) && !empty($_POST['auteur']))
    //					&& (isset($_POST['date']) && !empty($_POST['date']))){
    	
    					extract($_POST);
    		try{
    			$bdd=new PDO ('mysql:host=localhost;dbname=exo','root','');
    			$req=$bdd->prepare("select * from exercice where titre =:titre");
    			$req->execute(array('titre'=>$titre));
    			if($req->rowCount() !=0 ){
    				return false;
    				echo"<div class='couleur'> l'exercice existe dans la base </div>";
    	//			echo "l'exercice existe dans la base";
    			}else {				
    				$reponse = $bdd->prepare("INSERT INTO exercice VALUES(DEFAULT,?,?,?)");
    				$reponse->execute(array($titre,$auteur,$date));
    				echo"<div class='couleur'> Exercice enregistré avec succès </div>";
    		//		echo " Exercice enregistré avec succès";
    				$reponse->closeCursor();
    				header('Location:getall.php');
    				
    			}
    				
    
    		}catch (PDOException $e){
    			die ('Erreur' .$e->getMessage());
    		}
    	}
     }else echo "Il faut remplir tous les champs";
    */
     
    // DEUXIEME SOLIUTION, CELLE QUE JE VOUDRAIS UTILISER
     
     if(isset($_POST['submit'])){
     
     	extract($_POST);
     	$rep=  new Connection('localhost', 'exo', 'utf8', 'root', '');
     	$answer=$rep->dbconnect();
     	$user = new Bmanager ($answer);
     	$retour= $user->addUser ($titre, $auteur, $date);
     	echo $retour;
     	if($retour){
     		header('Location:getall.php');
     }
    }
    ?>
    Fichier de connection à la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?php
     
    class Connection{
     
    		private $hote;
    		private $bd;
    		private $charset;
    		private $user;
    		private $password;
     
     
    	public function __construct($hote, $bd, $charset, $user, $password){
    		$this->hote=$hote;
    		$this->bd= $bd;
    		$this->charset=$charset;
    		$this->user=$user;
    		$this->password=$password;
    	}
     
    	public function dbconnect(){
    	  try{
    			return new PDO('mysql:host='.$this->hote.';dbname='.$this->bd.';charset='.$this->charset, $this->user, $this->password);
    		} catch(Exception $e){
    			print_r($e);
    		}
     
    	}
     
     
     
    }
     
    ?>
    Fichier Bmanager qui regroupe mes fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    <?php
    session_start();
    include_once 'connection.php';
     
    Class Bmanager{
     
    	private $db;
     
     
    	public function __construct($db){
    		$this->db=$db;
    	}
     
     
     
    	public function addUser($titre, $auteur, $date) {
    		try {
    			if (!empty($_POST['titre']) AND !empty($_POST['auteur']) AND !empty($_POST['date'])){
     
     
    //				if ((isset($_POST['titre']) && !empty($_POST['titre']))
    //				&& (isset($_POST['auteur']) && !empty($_POST['auteur']))
    //				&& (isset($_POST['date']) && !empty($_POST['date']))){
     
     
    				$req=$this->db->prepare("select * from exercice where titre=? ");
    				$req->execute(array('titre'=>$titre));
    				if($req->rowCount() !=0){					
    				return false;
     
    				}else {
    				$reponse = $this->db->prepare("INSERT INTO exercice VALUES (Default,?,?,?)");
    				$reponse->execute(array($titre, $auteur, $date));
    				echo"<div class='couleur'> Exercice enregistré avec succès </div>";
    				return true;
     
    			}
    			}
     
    		}catch (PDOException $e){
    			echo $e->getMessage();
    		}
    	}
     
     
    	public function getAll(){
    		try{
    			$alluser =  $this->db->prepare("SELECT * FROM exercice");
    			$alluser->execute(); 
    			return $alluser;
     
    		}
    		catch(Exception $e){
     
    		}
    	}
     
     
     
     
     
    	public function update($id, $titre, $auteur, $date) {
    		try{
    			if(!empty($titre) && !empty($auteur) && !empty($date)){
    				$modif = $this->db->prepare("update exercice set titre=? where id =?");
    				$modif->execute(array($titre,$id));
    				$modif = $this->db->prepare("update exercice set auteur=? where id =?");
    				$modif->execute(array($auteur,$id));
    				$modif = $this->db->prepare("update exercice set date=? where id =?");
    				$modif->execute(array($date,$id));
     
    				echo"<div class='couleur'> Modification enregistrée avec succès </div>";
    			}
    		}
    		catch(Exception $e){
    			$e->getMessage();
    		}
     
    	}
    	public function delete($id){
     
    				$st=$this->db->prepare("DELETE FROM exercice");
    				$st->execute(array($id));
    				echo "Exercice  supprimé avec  Succés";
    			}
     
     
    		}
     
    ?>
    Fichier concernant le tableau du contenu de la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
    include_once 'Bmanager.php';
    $rep=  new Connection('localhost', 'exo', 'utf8', 'root', '');
    $answer=$rep->dbconnect();
    $user= new Bmanager($answer);
    $sql = $user->getAll();
    echo "<table border=\"1\">";
    echo "<tr> <th> Id  </th><th> Titre </th><th> Auteur </th><th> Date </th><th> Action </th> </tr> ";
    while ($lignes = $sql -> fetch(PDO::FETCH_OBJ))
    {
    	echo "<tr><td>".$lignes->id."</td><td>".$lignes->titre."</td><td>".$lignes->auteur."</td><td>".$lignes->date."</td><td><a href='modifierUser.php?>Modifier</a></td><td><a href='delete.php?>Modifier</a></td></tr>";
    }
    echo "</table>";
    header('Location:formulaire03.php');
    ?>
    Petit fichier css en extra :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    @CHARSET "ISO-8859-1";
     
     
     
    .couleur
    {
    	color = red;
    }
     
    fieldset{
     
    	margin:10px;
    	width :400px;
    	height :110px;
    	background-color : white;
    }
     
     
    table{
    /*border: 1px solid black;*/
    border-collapse: collapse;

    oilà, je sais que ça fait beaucoup de code mais si vous avez 5 non plutôt 30 mn pour regarder tout ça je vous en serai très reconnaissant.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La première à faire est d'activer les erreurs PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $pdo = new PDO('mysql:host='.$this->hote.';dbname='.$this->bd.';charset='.$this->charset, $this->user, $this->password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Ensuite n'utilise pas extract() c'est une mauvaise pratique.
    Et ne combine pas !empty() avec isset(), c'est redondant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Par défaut
    Merci de ta réponse,
    Je ne ferai plus l'erreur du isset !empty
    Pour l'extract($_POST); c'est un prof qui nous a dit que c'était plus rapide que de faire $titre=$_POST['titre']; ...
    Par contre je ne comprends pas la ligne que tu m'as donné, enfin je ne vois pas vraiment laquelle elle doit remplaçer si tel est le cas, sinon je ne vois pas où la placer
    D'ailleurs, elle vient au niveau du formulaire ou dans un autre fichier ?
    Dans le formulaire j'avais proposé deux solutions, j'imagine qu'elle s'adresse à la première et j'aurais préféré utiliser la seconde ou alors je suis complétement à coté de la plaque

    Ps : Autant pour moi, la modif est à placer dans connection, c'est bien ça ?

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 696
    Par défaut
    Citation Envoyé par mroudy Voir le message
    Ps : Autant pour moi, la modif est à placer dans connection, c'est bien ça ?
    oui c'est ça, dans la méthode "dbconnect"

    Citation Envoyé par mroudy Voir le message
    je n'arrive pas à faire entrer les données dans la base de donnée.
    à quel endroit appelez-vous les méthodes qui créent ou modifient les enregistrements de la base de données ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Par défaut
    Maintenant j'ai un problème avec éclipse.
    Je m'explique, je ne peux plus choisir mon workspace au démarrage du programme et je me suis rendu compte que les nouveaux projets que je créais ne l'étaient plus sous c/wamp/www où sont tout mes autres projets. Du coup je pense que pas mal de mes problèmes viennent en partie de là
    Si quelqu'un pouvais m'aiguiller.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Par défaut
    J'ai résolu mon problème d'entrée dans la base... un A au lieu d'un a sur le mot auteur dans le formulaire
    Maintenant je vais essayer d'afficher le tableau récapitulatif des entrées dans la base et d'afficher ce dernier en dessous du formulaire.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Par défaut
    J'avance pas trop mal, après l'entrée dans la base j'arrive à afficher mon tableau.
    Par contre j'ai deux autres soucis, forcèment.

    Le premier concerne le tableau, dans ce dernier j'ai une colonne Actions qui comporte deux liens mais seule une de ces dernières apparraît (ligne 86).

    Deuxième chose, je n'arrive pas à gérer la couleur des textes et des fonds de mes échos. J'ai cherché un peu partout mais je n'ai pas trouvé une solution adéquate (ligne 72). Mon soucis est le même pour afficher une couleur pour la première ligne du tableau (menu) puis une seconde pour toutes celles qui suivent.

    Je me pose d'ailleurs une question idiote, comment faire un lien vers une page css depuis une page php qui ne contient pas d'html ?

    Le code modifié

    formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    <!doctype>
    <html lang="fr">
        <head>
    	<link href="contact.css" type="text/css" rel="stylesheet"/>
    	<meta charset=" ISO-8859-1" />
    <head>
     
    <title>Formulaire03</title>
    </head>
    <body>
     
    	<form action="formulaire03.php" method="post"> 
     
     
    	<fieldset>
    	<legend>
    		<p>Ajouter un exercice</p>
    		</legend>
     
    		<table>
     
     
    	<tr>		
    	<td>Titre de l'exercice</td>
    	<td>
    	<input type="text" name="titre" placeholder="" required />
    	</td>
    	</tr>
     
    	<tr>
    	<td>Auteur de l'exercice</td>
    	<td>
    	<input type="text" name="auteur" placeholder="" required/> 
    	</td>
    	</tr>
     
    	<tr>
    	<td>Date de création</td>
    	<td>
    	<input type="date" name="date" placeholder="" required/> 
    	</td>
    	</tr>
     
    	<tr><td>	<input type="submit"   value="Envoyer" name="submit"/></td></tr>
     
    	</table>
     
    	</fieldset>
    	</form>
    	</body>
    	</html>
    <?php
     
    include_once 'Bmanager.php';
     if(isset($_POST['submit'])){
     
    // 	if (!empty($_POST['titre']) AND !empty($_POST['auteur']) AND !empty($_POST['date'])){
     
     	$titre=$_POST['titre'];
     	$auteur=$_POST['auteur'];
     	$date=$_POST['date'];
     
     
     	$rep =  new Connection('localhost', 'exo', 'utf8', 'root', '');
     	$answer=$rep->dbconnect();
     	$user = new Bmanager ($answer);
     	$retour = $user->addUser ($titre, $auteur, $date);
     	echo $retour;
     	if($retour){
     
     	}else	echo '<p class="couleur_texte">L\'exercice existe déjà </p>';
     
    }
     
     
    include_once 'Bmanager.php';
    $rep=  new Connection('localhost', 'exo', 'utf8', 'root', '');
    $answer=$rep->dbconnect();
    $user= new Bmanager($answer);
    $sql = $user->getAll();
    echo "<table border=\"1\">";
    echo "<tr> <th> Id  </th><th> Titre </th><th> Auteur </th><th> Date </th><th> Action </th> </tr> ";
    while ($lignes = $sql -> fetch(PDO::FETCH_OBJ))
    {
    	echo "<tr><td>".$lignes->id."</td><td>".$lignes->titre."</td><td>".$lignes->auteur."</td><td>".$lignes->date."</td><td><a href='modifierUser.php?>Modifier</a></td><td><a href='delete.php?>Modifier</a></td></tr>";
    }
    echo "</table>";
     
    ?>
    Fichier qui contient les fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <?php
    session_start();
    include_once 'connection.php';
     
    Class Bmanager{
     
    	private $db;
     
     
    	public function __construct($db){
    		$this->db=$db;
    	}
     
     
     
    	public function addUser($titre, $auteur, $date) {
    		try {
    //			if (!empty($_POST['titre']) AND !empty($_POST['auteur']) AND !empty($_POST['date'])){
     
     
    				$req=$this->db->prepare("select * from exercice where titre=?");
    				$req->execute(array($titre));
    				if($req->rowCount() !=0){	
    //				echo "Le pseudo est déjà pris ! ";
    //				echo"<div class='couleur'> L'exercice existe déjà </div>";
    				return false;
     
    				}else {
    				$reponse = $this->db->prepare("INSERT INTO exercice VALUES (Default,?,?,?)");
    				$reponse->execute(array($titre, $auteur, $date));
    				echo"<div class='couleur'> Exercice enregistré avec succès </div>";
    				return true;
     
    			}
    //			}
     
    		}catch (PDOException $e){
    			echo $e->getMessage();
    //		} echo "il faut remplir tous les champs";
    	}
    	}
     
    	public function getAll(){
    		try{
    			$alluser =  $this->db->prepare("SELECT * FROM exercice");
    			$alluser->execute(); 
    			return $alluser;
     
    		}
    		catch(Exception $e){
     
    		}
    	}
     
     
     
     
     
    	public function update($id, $titre, $auteur, $date) {
    		try{
    			if(!empty($titre) && !empty($auteur) && !empty($date)){
    				$modif = $this->db->prepare("update exercice set titre=? where id =?");
    				$modif->execute(array($titre,$id));
    				$modif = $this->db->prepare("update exercice set auteur=? where id =?");
    				$modif->execute(array($auteur,$id));
    				$modif = $this->db->prepare("update exercice set date=? where id =?");
    				$modif->execute(array($date,$id));
     
    				echo"<div class='couleur'> Modification enregistrée avec succès </div>";
    			}
    		}
    		catch(Exception $e){
    			$e->getMessage();
    		}
     
    	}
    	public function delete($id){
     
    				$st=$this->db->prepare("DELETE FROM exercice");
    				$st->execute(array($id));
    				echo "Exercice  supprimé avec  Succés";
    			}
     
     
    		}
     
    ?>

Discussions similaires

  1. Probléme sur un formulaire
    Par grizlie dans le forum Modélisation
    Réponses: 2
    Dernier message: 19/05/2007, 07h59
  2. Probléme sur un formulaire
    Par jojo57 dans le forum Access
    Réponses: 6
    Dernier message: 31/05/2006, 16h55
  3. Problème sur un formulaire
    Par flo64 dans le forum Access
    Réponses: 5
    Dernier message: 31/05/2006, 13h35
  4. [DatasheetBackColor ] problème sur un formulaire
    Par herendel dans le forum Access
    Réponses: 3
    Dernier message: 23/05/2006, 10h31
  5. problème sur un formulaire de modification
    Par puppusse79 dans le forum Access
    Réponses: 13
    Dernier message: 14/04/2006, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo