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

  1. #1
    Membre à l'essai
    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
    Points : 15
    Points
    15
    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
    Points : 44 155
    Points
    44 155
    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 à l'essai
    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
    Points : 15
    Points
    15
    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 éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 213
    Points : 15 499
    Points
    15 499
    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 à l'essai
    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
    Points : 15
    Points
    15
    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 à l'essai
    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
    Points : 15
    Points
    15
    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 à l'essai
    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
    Points : 15
    Points
    15
    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";
    			}
     
     
    		}
     
    ?>

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour tes problèmes HTML/CSS il vaudrait mieux poser les questions dans les sections du forum adéquates.

    Ligne 86, tu n'as pas fermé tes href.
    De plus dans ton tableau tu n'as qu'une seule colonne "action" donc un seul <td></td> pour les deux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href='modifierUser.php'>Modifier</a><a href='delete.php'>Supprimer</a></td>
    D'un point de vue programmation, il manque le paramètre dans le lien, à priori l'id que tu veux supprimer/modifier.

    Pour le CSS qui ne fonctionne pas ... il faudrait voir ce CSS.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Merci Sabotage, en ce qui concerne les liens en effet j'avais oubliè l'id. J'ai modifié ça tout à l'heure
    Et pour le css je vais aller poser la question sur le forum dédié, c'est vrai que ces questions n'ont pas trop leur place ici sauf si éventuellement quelqu'un peut répondre à ma question ici.
    Je reviendrai peut être ici si j'ai d'autres soucis au niveau du php du coup je laisse la discussion ouverte pour le moment.

  10. #10
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Bon, je suis de retour.
    J'essaye de permettre à l'utilisateur de modifier un exercice grâce à son id.
    J'arrive à récupérer les différents champs dans mon formulaire mais quand je veux modifier l'un ou l'autre j'ai des messages d'erreur concernant chaque case

    Mon 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
     
    <?php
     
    include_once 'Bmanager.php';
     
    $rep=  new Connection('localhost', 'exo', 'utf8', 'root', '');
    $answer=$rep->dbconnect();
    $user = new Bmanager($answer);
     
    if(isset($_GET['id'])){	
    	$id=$_GET['id'];
    	$res=$user->getUserById($id);
    	$donnees = $res->fetch(PDO::FETCH_OBJ);
    if(isset($_POST['modifier'])){
    	$titre = $_POST['titre'];
    	$auteur = $_POST['auteur'];
    	$date = $_POST['date'];
    	$res=$user->update($id, $titre, $auteur, $date);
    	header('Location:formulaire03.php');
    }
    }
     
    ?>
    <!doctype>
    <html lang="fr">
        <head>
    	<link href="contact.css" type="text/css" rel="stylesheet"/>
    	<meta charset=" ISO-8859-1" />
    <head>
     
    <title>modifexo</title>
    </head>
    <body>
     
    	<form action="modifexo.php" method="post"> 
     
     
    	<fieldset>
    	<legend>
    		<p>Modifier un exercice</p>
    		</legend>
     
    		<table>
     
     
    	<tr>		
    	<td>Titre de l'exercice</td>
    	<td>
    	<input type="text" name="titre" placeholder="" value="<?php echo $donnees->titre; ?> " />	
    	</td>
    	</tr>
     
    	<tr>
    	<td>Auteur de l'exercice</td>
    	<td>
    	<input type="text" name="auteur" placeholder="" value="<?php echo $donnees->auteur; ?>"/> 
    	</td>
    	</tr>
     
    	<tr>
    	<td>Date de création</td>
    	<td>
    	<input type="date" name="date" placeholder="" value="<?php echo $donnees->date; ?>" /> 
    	</td>
    	</tr>
     
    	<tr><td>	<input type="submit"   value="Modifier" name="modifier"/></td></tr>
     
    	</table>
     
    	</fieldset>
    	</form>
    	</body>
    	</html>

    Mes fonctions de écupération et d'update :

    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
     
    	public function getUserById($id){
    		try{
    			$user =  $this->db->prepare("SELECT * FROM exercice WHERE id= ? ");
    			$user->execute(array($id));
    			return $user;
    		}
    		catch(Exception $e){
    			$e->getMessage();
    		}
    	}
     
     
     
    	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();
    		}
     
    	}
    Voilà voilà, je rame à chaque étape

  11. #11
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    pas besoin de faire de multiple update, un seul suffit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $modif = $this->db->prepare("UPDATE exercice SET titre = ?, auteur = ?, `date` = ? WHERE id = ?");
    $modif->execute(array($titre, $auteur, $date, $id));
    return $modif->rowCount() > 0; //la ligne a été modifiée
    Pas besoin de mettre les try/catch à tout bout de champ, Vos méthodes qu'elles récupèrent ou mettent à jour simplement les données.
    Quelles sont les erreurs retournées ?
    Il peut avoir un problème au niveau de la colonne date, si MYSQL ne reconnait pas le format.
    Le bienfait n'est jamais perdu

  12. #12
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Merci Willy_k, c'est vrai que je ne sais pas pouquoi j'ai fait plusieurs update.
    L'erreur retournée est la suivante :
    Notice: Trying to get property of non-object in C:\wamp\www\exercice\modifexo.php on line 48
    elle est également présente sur les lignes 55 et 62, les trois champs en fait.
    Sinon dans ma base j'ai mis DATE pour date, normalement ça ne devrait pas poser de soucis je pense

  13. #13
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Le format DATE, Y-m-d mais si vous rentrez d-m-Y il peut avoir problème. Faudrait retirer le try/catch de dbconnect.
    Où est le fichier en question ?
    Le bienfait n'est jamais perdu

  14. #14
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    L'entrée se fait via le calendrier html défini par type="date" donc il correspond au Y-m-d.
    Sinon le fichier dbconnect est dans Bmanager qui fait un include du fichier connection, enfin j'espère donner la bonne réponse à cette question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    include_once 'connection.php';
     
     
    Class Bmanager{
     
    	private $db;
     
     
    	public function __construct($db){
    		$this->db=$db;
    	}

  15. #15
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Non le fichier où les erreurs surviennent.
    Le bienfait n'est jamais perdu

  16. #16
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Oups, pardon
    c'est celui-ci :

    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
     
    <?php
     
    include_once 'Bmanager.php';
     
    $rep=  new Connection('localhost', 'exo', 'utf8', 'root', '');
    $answer=$rep->dbconnect();
    $user = new Bmanager($answer);
     
    if(isset($_GET['id'])){	
    	$id=$_GET['id'];
    	$res=$user->getUserById($id);
    	$donnees = $res->fetch(PDO::FETCH_OBJ);
    if(isset($_POST['modifier'])){
    	$titre = $_POST['titre'];
    	$auteur = $_POST['auteur'];
    	$date = $_POST['date'];
    	$res=$user->update($id, $titre, $auteur, $date);
    	header('Location:formulaire03.php');
    }
    }
     
    ?>
    <!doctype>
    <html lang="fr">
        <head>
    	<link href="contact.css" type="text/css" rel="stylesheet"/>
    	<meta charset=" ISO-8859-1" />
    <head>
     
    <title>modifexo</title>
    </head>
    <body>
     
    	<form action="modifexo.php" method="post"> 
     
     
    	<fieldset>
    	<legend>
    		<p>Modifier un exercice</p>
    		</legend>
     
    		<table>
     
     
    	<tr>		
    	<td>Titre de l'exercice</td>
    	<td>
    	<input type="text" name="titre" placeholder="" value="<?php echo $donnees->titre; ?> " />	
    	</td>
    	</tr>
     
    	<tr>
    	<td>Auteur de l'exercice</td>
    	<td>
    	<input type="text" name="auteur" placeholder="" value="<?php echo $donnees->auteur; ?>"/> 
    	</td>
    	</tr>
     
    	<tr>
    	<td>Date de création</td>
    	<td>
    	<input type="date" name="date" placeholder="" value="<?php echo $donnees->date; ?>" /> 
    	</td>
    	</tr>
     
    	<tr><td>	<input type="submit"   value="Modifier" name="modifier"/></td></tr>
     
    	</table>
     
    	</fieldset>
    	</form>
    	</body>
    	</html>

  17. #17
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Les erreurs ont été activées comme Sabotage l'a demandé et montré ? Dans ce cas montrez la nouvelle classe Connection. L'erreur montre que la requête de getUserById échoue , faites un var_dump($donnees);
    Le bienfait n'est jamais perdu

  18. #18
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Classe connection :

    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
     
    <?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);
    		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    		} catch(Exception $e){
    			print_r($e);
    		}
     
    	}
     
     
     
    }
     
    ?>

  19. #19
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Faudrait réécrire dbconnect comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function dbconnect() {
       $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);
       return $pdo;
    }
    Et retirer tous les try/catch de ta classe Bmanager.
    Le bienfait n'est jamais perdu

  20. #20
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Hop c'est fait pour connection. Les try catch j'ai mis tout ça en commentaire.
    Par contre quand je fais modifier j'ai toujours les mêmes erreurs.
    Notice: Trying to get property of non-object in C:\wamp\www\exercice\modifexo.php on line 48

Discussions similaires

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

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