[PHP] Formulaire modification avec affichage

Fermé
djbenvik
Messages postés
7
Date d'inscription
samedi 27 décembre 2003
Statut
Membre
Dernière intervention
8 août 2006
- 20 juil. 2005 à 11:32
 tipharu - 29 août 2017 à 22:38
Salut,

j'ai créer un formulaire article permettant comme son nom l'indique decréer un article avec quatres champs(numero_article, date_article, text_article, auteur article). Une fois le formulaire validé, l'article est enregistré dans une base de données dans la table article.

Je souhaite créer un formulaire permettant de modifier un article avec update... mais qui affiche dans les champsle texte. Par exemple pour modifier l'article 4, je souhaite que le contenu de l'article 4 apparaisse dans le texte area texte_champ.

Comment peut-on faire car je sais créer un formulaire modifiant un article mais pas un formulaire ou le contenu de l'article a modifier s'affiche à l'écran!!

Merci d'avance si vous trouvez la solution!

5 réponses

donniecent
Messages postés
19
Date d'inscription
lundi 1 mars 2010
Statut
Membre
Dernière intervention
1 juin 2012
27
27 juin 2011 à 08:11
Ici vous avez la solution au problème cela vous prendra peut être 10minutesmax pour comprendre mais vous comprendrez au final :)

Il y a pas longtemps j'ai eu le même problème pour modifier les articles de mon site http://www.ddlparadize.com mais après une bonne soirée de réflexion j'ai réussi à trouver la solution :

Il faut tout d'abord créer 3 pages :

index.php (ce sera la page qui affiche les articles avec un lien modifier l'article a coté)

modifier.php
(cette page sera celle sur laquelle on va arriver avec tout les champ déjà rempli avec leur valeurs actuelles)

modifier_post.php (quand vous cliquerez sur modifier en bas à droite c'est cette page qui modifiera les données à l'intérieur de votre base de donnée.

La page INDEX.PHP

<p>Dernier message reçu<br/><br/>

<?php
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=NOM-BASE-DE-DONNEES', 'NOM-D'UTILISATEUR', 'MOT-DE-PASSE', $pdo_options');
	
    /* On récupère tes 10 derniers article (mais après tu peux en mettre autant que tu veux 3, 10, 100, ou même 200 000 ;)) */

    $req = $bdd->query('SELECT numero_article, date_article, text_article, auteur article FROM articles ORDER BY date_article DESC LIMIT 0, 10');
    while ($infos = $req->fetch())
    {
    ?>
        <p>
		<?php echo $infos['text_article']; ?><br/> <a href="modifier.php?number=<?php echo $infos['numero_article']; ?>">modifier l'article</a>

	
<?php
} 
// Fin de la boucle qui affiche les articles avec le lien modifier 
    $req->closeCursor();
    
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

?>


La page MODIFIER.PHP

<?php
// Connexion à la base de données
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=NOM-BASE-DE-DONNEES', 'NOM-D'UTILISATEUR', 'MOT-DE-PASSE', $pdo_options');
	
    /* On récupère les donnée de l'article séléctioné*/
    $req = $bdd->prepare('SELECT numero_article, date_article, text_article, auteur article FROM publications WHERE numero_article = ?');
    $req->execute(array($_GET['number']));
		
	while ($infos = $req->fetch())
    {
    ?>

<!--Formulaire avec les champs préremplis-->

<p>	
<form action="modifier_post.php" method="post" id="modif_article">


<label for="numero_article">Numéro de l'article</label><br/>

	<input type="text" name="numero_article" value="<?php echo $infos['numero_article'];?>" tabindex="20"/><br/>

<label for="date_article">Date du post</label><br/>

	<input type="text" name="date_article" title="<?php echo $infos['date_article'];?>" tabindex="20"/><br/>

<label for="text_article">Contenu de l'Article</label><br/>
	
	<textarea type="text" name="text_article" rows="10" cols="140" tabindex="20" title="<?php echo $infos['text_article'];?>"></textarea><br/>

<label for="auteur article">Auteur de l'article</label><br/>

	<input type="text" name="auteur article" value="<?php echo $infos['auteur article'];?>" tabindex="20"/><br/>	
	  
    <?php
    } 

// Fin de la boucle pour l'affichage des donnée dans la base de donnée
    $req->closeCursor();

}

catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

?>
</form>
</p>




Enfin la page MOFIFIER_POST.PHP


<?php

/*Si le champ "numero_article" est rempli*/
  
if (isset($_POST['numero_article']) AND $_POST['numero_article'] !== "")
    {  
  
/*Ensuite si le champ "date_article" est rempli*/

     if (isset($_POST['date_article']) AND $_POST['date_article'] !== "") 

       {
/*Puis si le champ "text_article" est rempli*/

         if (isset($_POST['text_article']) AND $_POST['text_article'] !== "")
            {    
	         
/* Enfin si le champ "auteur article"est rempli*/

             if (isset($_POST['auteur article']) AND $_POST['auteur article'] !== "")
                {
				   			   
/*Au final on a comme ordre de modifier l'article seulement si les champs numero_article, date_article, text_article et auteur article ne sont pas vide*/

	
	try
		{
			$bdd=new PDO('mysql:host=localhost;NOM-BASE-DE-DONNEES', 'NOM-D'UTILISATEUR', 'MOT-DE-PASSE', $pdo_options');
		
		
	$bdd -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

/*cette requètte préparée sert à modifier les données j'ai rajouté "nouveau" et "nouvelle" au nom des variables mais vous n'êtes pas obligé des faire pareil, c'est juste pour mieux me repérer et comprendre ce que je fais.*/
	
	$req = $bdd->prepare('UPDATE articles SET numero_article = :nouveau_numero_article, date_article = :nouvelle_date_article, text_article = :nouveau_text_article, auteur article = :nouvel_auteur_article WHERE numero_article = :numero_article ');
		
	$req->execute(array( 
			'nouveau_numero_article' => $_POST['numero_article'],
			'nouvelle_date_article' => $_POST['date_article'],
			'nouveau_text_article' => $_POST['text_article'],
			'nouvel_auteur_article' => $_POST['auteur_article']
			));			
	    }
	catch(Exception $e)
		{
			die('Erreur:'.$e->getMessage());
		}
	$req->closeCursor();
	        
			    }
            }
          
	    }  
	
	echo'<p> votre article a bien été modifié</p>';
    }
 
 else
    {  	
	echo '<p>Vous n\'avez pas remplis touts les champs demandés</p>';
	}
?>
24
c'est parfait mais je signale simplement: dans ton modifier.php au lieu d'aller chercher la table articles tu as écrit "publications"

et dans modifier_post.php tu as oublié de définir $pdo_options ($pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;)
et de remettre 'numero_article' => $_POST['numero_article'] dans le tableau array
0
LCV
Messages postés
15
Date d'inscription
mardi 30 juin 2009
Statut
Membre
Dernière intervention
30 juillet 2009
5
30 juin 2009 à 17:40
Oui mais si tu as un tableau, comment tu fais pour retrouver ton num_art?!
2
Fada09
Messages postés
1699
Date d'inscription
lundi 15 septembre 2003
Statut
Contributeur
Dernière intervention
4 septembre 2010
537
20 juil. 2005 à 18:04
Salut,

Ben si j'ai bien compris tu veux que ton formulaire soit pré-rempli et que l'on puisse le modifier.

Donc dans ton code php il te faut faire une requete pour récupérer les informations de ton article (ex : select date_art,text_art, auteur_art from articles where num_art = 4)
Ensuite tu lorsque tu écris ton formulaire tu peux mettre dans l'attribut value de ton champ input la valeur récupérée en base.

J'espere que j'ai été clair pour toi

bonne chance ++
;-)
~ ~ Fada ~ ~ : Member of #Star!alco
0
bojour je me demandais si tu avais trouvé une solution a t-on probleme car j'ai un peu le memme genre de soucis ,si oui je suis preneur car je pattinne un peu .Merçi de partager votre savoir
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
de nombreux tutoriaux ici :

http://www.asp-php.net/tutorial/asp-php/index.php?page=2

pour apprende pas à pas la gestion d'une base de données Mysql

ce qui devrait résoudre vos problèmes

ec
-1