[PHP] Formulaire modification avec affichage

djbenvik Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
 tipharu -
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   Statut Membre Dernière intervention   27
 
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
tipharu
 
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   Statut Membre Dernière intervention   5
 
Oui mais si tu as un tableau, comment tu fais pour retrouver ton num_art?!
2
Fada09 Messages postés 1701 Date d'inscription   Statut Contributeur Dernière intervention   545
 
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
ggbest
 
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
multicite
 
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