Formulaire de modification d'une publication

Eléphant du PHP | 79 Messages

01 nov. 2013, 17:37

Bonjour à tous et à toutes,

Je suis actuellement sur la création d'une galerie d'art, j'ai précédemment réalisé un espace de publication pour les œuvres, avec un titre, une description, une catégorie, un style, une image, une date de création etc...
Le système fonctionne parfaitement.

Je souhaiterai maintenant réaliser un espace permettant la modification d'une oeuvre publier, par tel artiste, sachant qu'il peut en publier autant qu'il veux ( 10, 20 , 40 "articles")

J'avoue avoir pas mal de soucis sur la réalisation de cette programmation, pour la sélection d'une des œuvres, ( par exemple, je souhaite modifier ma 2 ème sur les 10 que j'ai faite ( les informations change par rapport a l'oeuvre sélectionné ) )

Pour l'affichage des catégories, et styles précédemment sélectionné.

Voici mon code actuelle :
$id=($_SESSION['membre_id']);
$id_oeuvre=($_SESSION['oeuvre_id']);	 
$query = $bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE artiste_id=:id, oeuvre_id=:oeuvre_id');
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->bindValue(':id_oeuvre', $id_oeuvre, PDO::PARAM_INT);
        $query->execute();
        $data = $query->fetch();
		
		echo '<form method="post" action="publication.php?action=modifier" enctype="multipart/form-data">';
		
		echo '<p class="textesimple"><label for="imageoeuvre">Changer votre avatar : </label><input type="file" name="imageoeuvre" id="imageoeuvre"/>
(max : 10 Mo)<br /><br /><label><input type="checkbox" name="delete" value="Delete"/>Supprimer l\'oeuvre</label> actuel : <img src="./images/oeuvres/'.$data['image_oeuvre'].'" class="imageoeuvre" alt="image"/></p>';
		
		echo '<p class="textesimple"><label for="titreoeuvre">Titre : </label><input type="text" name="titreoeuvre" id="titreoeuvre" value="'.$data['titre_oeuvre'].'"/></p>';
		
		echo '<p class="textesimple"><label for="titreoeuvre">Description : </label><input type="text" name="descriptionoeuvre" id="descriptionoeuvre" value="'.$data['description_oeuvre'].'"/></p>';
		
		echo '<div id="encpubldiv"><label for="categorie"><p class="textesimplesans">Catégorie : </label>
       <select name="oeuvre_categorie" id="categorie" value="'.$data['oeuvre_categorie'].'">
       <option value="autre">Autre...</option>
           <option value="bandedessine">Bande dessinée</option>
           <option value="peinture">Peinture</option>
           <option value="croquis">Croquis</option>
           <option value="dessin">Dessin</option>
		   <option value="graphe">Graphe</option>
           
       </select></p></div>';
	   
	   echo '<div id="encpubldiv"><label for="style"><p class="textesimplesans">Style : </label>
       <select name="oeuvre_style" id="style" value="'.$data['oeuvre_style'].'">
		   <option value="autre">Autre...</option>
           <option value="abstrait">Abstrait</option>
		   <option value="arturbain">Art urbain</option>
		   <option value="baroc">Baroc</option>
		   <option value="cubisme">Cubisme</option>
		   <option value="dadaisme">Dadaisme</option>
		   <option value="expressionnisme">Expressionnisme</option>
		   <option value="fauvisme">Fauvisme</option>
		   <option value="futurisme">Futurisme</option>
		   <option value="gothisme">Gothisme</option>
		   <option value="hyperrealisme">Hyperrealisme</option>
		   <option value="impressionnisme">Impressionnisme</option>
		   <option value="rococo">Rococo</option>
		   <option value="romantisme">Romantisme</option>
		   <option value="lettrisme">Lettrisme</option>
		   <option value="modernisme">Modernisme</option>
		   <option value="naturalisme">Naturalisme</option>
		   <option value="neoclassicisme">Néoclassicisme</option>
		   <option value="neogothique">Néogothique</option>
           <option value="pointillisme">Pointillisme</option>
		   <option value="popart">Popart</option>
		   <option value="photorealisme">Photoréalisme</option>
		   <option value="postimpressionnisme">Postimpressionnisme</option>
		   <option value="punk">Punk</option>
		   <option value="surrealisme">Surréalisme</option>
		   <option value="symbolisme">Symbolisme</option>
       </select></p></div>';
	   
	   echo '<p class="textesimple"><label for="datecreaoeuvre">Date de  création : </label><input type="text" name="datecreaoeuvre" id="descriptionoeuvre" value="'.$data['date_crea'].'"/></p>';
		
		echo '<p class="classinscr"><input type="submit" value="Modifier une publication" />';
        echo '<input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';
		
		$query->CloseCursor();
	 
	 echo 'La page de modification de publication est indisponible actuellement';
Merci pour votre attention et votre aide.
Créateur du site www.crobara2bal.com.

Mammouth du PHP | 504 Messages

02 nov. 2013, 11:30

Slt,
<form method="post" action="publication.php?action=modifier" enctype="multipart/form-data">
Si tu ne mets pas l'id de l'oeuvre que tu veux modifier, ça ne risque pas de marcher.

Tu passes en variables l'id de l'oeuvre à modifier, tu le récuperes les infos dans ta page de modif avec l'id de l'oeuvre et tu pupdate ta base avec un clause where qui contient l'id de l'oeuvre modifiée.

Eléphant du PHP | 79 Messages

19 nov. 2013, 14:32

Salut à toi,

Merci pour ton aide, n'étant pas encore vraiment sur des actions que j'effectue xD,

Pour passer en variable l'id de l'oeuvre,

Sachant que dans ma bdd le nom du champs de l'id de la table oeuvre_artiste est oeuvre_id

-
 $oeuvre_id=[oeuvre_id]
Pour mon formulaire de sélection de l'oeuvre je peux insérer un switch dans un switch ? ou y a t'il une solution plus simple ?
switch ($_GET['action']) {
	 
	 case "SelectionDeOeuvreAmodifier":

switch ($_GET['selection']) {
	 
	 case "modifier":

break;

break;
Puis pour la modification générale de l'oeuvre une fois choisie :
<form id="oeuvre_id" method="post" action="publication.php?action=modifier" enctype="multipart/form-data">

Merci encore pour ton attention et ton aide Damien_55 =)
Créateur du site www.crobara2bal.com.

Eléphant du PHP | 79 Messages

29 nov. 2013, 17:25

Re,

J'ai donc opté pour la solution du rajout case dans switch ^^

j'ai réussi a créer la partie permettant au membre de sélectionner une de ses œuvres pour y modifier des informations
case "selection":
	 
	 $artiste_id = $_SESSION['membre_id'];
	 echo '<h3 class="textesimple">'."Séléctionnez une oeuvres".'</h3>';
$reponse=$bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE artiste_id= :artiste_id');
$reponse->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
$reponse->execute();
 while ($data=$reponse->fetch()) { 
 
 echo '<div id="ficheartistegal"><a href="./publication.php?s='.stripslashes(htmlspecialchars($data['oeuvre_id'])).'&action=modifier"><figure><img src="./images/oeuvres/'.$data['image_oeuvre'].'" class="imgavatargal" alt="oeuvres artiste" /><figcaption><p class="boutonlien">'.htmlspecialchars($data['titre_oeuvre']).'</p></figcaption></figure></a></div>';
 }
 $reponse->closeCursor();
	 
	 break;
J'envoie donc l'id dans l'url, ce qui m'envoie au formulaire de modification avec la sélection de l'œuvres souhaité,

J'ai maintenant quelques soucis pour la réalisation du système de validation de modification de l'oeuvre .

Voici le code de "case : modifier : "

Code : Tout sélectionner

case "modifier": $oeuvre_id = isset($_GET['s'])?(int) $_GET['s']:''; $query = $bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE oeuvre_id=:oeuvre_id'); $query->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT); $query->execute(); $data = $query->fetch(); ?> <form id="oeuvre_id" method="post" action="publication.php?action=modifier" enctype="multipart/form-data">'; <p class="textesimple"><label for="imageoeuvre">Changer l'image : </label><input type="file" name="imageoeuvre" id="imageoeuvre"/> (max : 10 Mo)<br /><br /><label><input type="checkbox" name="delete" value="Delete"/>Supprimer l'oeuvre</label> actuel : <img src="./images/oeuvres/<?php echo $data['image_oeuvre'] ?>" class="imageoeuvre" alt="image"/></p> <p class="textesimple"><label for="titreoeuvre">Titre de l'oeuvre : </label><input type="text" name="titreoeuvre" id="titreoeuvre" value="<?php echo $data['titre_oeuvre'] ?>" /></p> <p class="textesimple"><label for="titreoeuvre">Description : </label><input type="text" name="descriptionoeuvre" id="descriptionoeuvre" value="<?php echo $data['description_oeuvre']?>"/></p> <div id="encpubldiv"><label for="categorie"><p class="textesimplesans">Catégorie : </label> <select name="oeuvre_categorie" id="categorie" value="<?php echo $data['oeuvre_categorie'] ?>"> <option value="autre" <?php if("autre"==$data['oeuvre_categorie']){?> selected <?php } ?>>Autre...</option> <option value="bandedessine" <?php if("bandedessine"==$data['oeuvre_categorie']){?> selected <?php } ?>>Bande dessinée</option> <option value="peinture" <?php if("peinture"==$data['oeuvre_categorie']){?> selected <?php } ?>>Peinture</option> <option value="croquis" <?php if("croquis"==$data['oeuvre_categorie']){?> selected <?php } ?>>Croquis</option> <option value="dessin" <?php if("dessin"==$data['oeuvre_categorie']){?> selected <?php } ?>>Dessin</option> <option value="graphe" <?php if("graphe"==$data['oeuvre_categorie']){?> selected <?php } ?>>Graphe</option> </select></p></div> <div id="encpubldiv"><label for="style"><p class="textesimplesans">Style : </label> <select name="oeuvre_style" id="style" value="<?php echo $data['oeuvre_style'] ?>"> <option value="autre" <?php if("autre"==$data['oeuvre_style']){?> selected <?php } ?>>Autre...</option> <option value="abstrait" <?php if("abstrait"==$data['oeuvre_style']){?> selected <?php } ?>>Abstrait</option> <option value="arturbain" <?php if("arturbain"==$data['oeuvre_style']){?> selected <?php } ?>>Art urbain</option> <option value="baroc" <?php if("baroc"==$data['oeuvre_style']){?> selected <?php } ?>>Baroc</option> <option value="cubisme" <?php if("cubisme"==$data['oeuvre_style']){?> selected <?php } ?>>Cubisme</option> <option value="dadaisme" <?php if("dadaisme"==$data['oeuvre_style']){?> selected <?php } ?>>Dadaisme</option> <option value="expressionnisme" <?php if("expressionnisme"==$data['oeuvre_style']){?> selected <?php } ?>>Expressionnisme</option> <option value="fauvisme" <?php if("fauvisme"==$data['oeuvre_style']){?> selected <?php } ?>>Fauvisme</option> <option value="futurisme" <?php if("futurisme"==$data['oeuvre_style']){?> selected <?php } ?>>Futurisme</option> <option value="gothisme" <?php if("gothique"==$data['oeuvre_style']){?> selected <?php } ?>>Gothisme</option> <option value="hyperrealisme" <?php if("hyperrealisme"==$data['oeuvre_style']){?> selected <?php } ?>>Hyperrealisme</option> <option value="impressionnisme" <?php if("impressionnisme"==$data['oeuvre_style']){?> selected <?php } ?>>Impressionnisme</option> <option value="rococo" <?php if("rococo"==$data['oeuvre_style']){?> selected <?php } ?>>Rococo</option> <option value="romantisme" <?php if("romantisme"==$data['oeuvre_style']){?> selected <?php } ?>>Romantisme</option> <option value="lettrisme" <?php if("lettrisme"==$data['oeuvre_style']){?> selected <?php } ?>>Lettrisme</option> <option value="modernisme" <?php if("modernisme"==$data['oeuvre_style']){?> selected <?php } ?>>Modernisme</option> <option value="naturalisme" <?php if("naturalisme"==$data['oeuvre_style']){?> selected <?php } ?>>Naturalisme</option> <option value="neoclassicisme" <?php if("neoclassicisme"==$data['oeuvre_style']){?> selected <?php } ?>>Néoclassicisme</option> <option value="neogothique" <?php if("neogothique"==$data['oeuvre_style']){?> selected <?php } ?>>Néogothique</option> <option value="pointillisme" <?php if("pointillisme"==$data['oeuvre_style']){?> selected <?php } ?>>Pointillisme</option> <option value="popart" <?php if("popart"==$data['oeuvre_style']){?> selected <?php } ?>>Popart</option> <option value="photorealisme" <?php if("photorealisme"==$data['oeuvre_style']){?> selected <?php } ?>>Photoréalisme</option> <option value="postimpressionnisme" <?php if("postimpressionnisme"==$data['oeuvre_style']){?> selected <?php } ?>>Postimpressionnisme</option> <option value="punk" <?php if("punk"==$data['oeuvre_style']){?> selected <?php } ?>>Punk</option> <option value="surrealisme" <?php if("surrealisme"==$data['oeuvre_style']){?> selected <?php } ?>>Surréalisme</option> <option value="symbolisme" <?php if("symbolisme"==$data['oeuvre_style']){?> selected <?php } ?>>Symbolisme</option> </select></p></div> <p class="textesimple"><label for="datecreaoeuvre">Date de création : </label><input type="text" name="datecreaoeuvre" id="descriptionoeuvre" value="<?php echo $data['date_crea'] ?>"/></p> <p class="classinscr"><input type="submit" value="Modifier une publication" /> <input type="hidden" id="sent" name="sent" value="1" /> </p></form> <?php $query->CloseCursor(); break;
Merci encore pour votre attention et votre aide,
Sincèrement :).
Créateur du site www.crobara2bal.com.

Mammouth du PHP | 504 Messages

29 nov. 2013, 17:42

Hello,

Et c'est quoi le probleme ?

" J'ai maintenant quelques soucis pour la réalisation du système de validation de modification de l'oeuvre . " Tu nous donnes le code mais tu ne nous dis pas ce qui coinces , te pose probléme.

Eléphant du PHP | 79 Messages

02 déc. 2013, 13:17

Salut à toi damien_55 et merci encore pour ton attention,

J'ai beaucoup de mal à réaliser le système de modification d'une oeuvre,

par exemple, le membre x, à poster une oeuvre qu'il souhaiterai modifier,

Jusqu'à là, le système de modification permet de sélectionner une des œuvres précédemment publier pour l'envoyer dans le formulaire de modification,

une fois que le membre se retrouve dans le formulaire de modification de son oeuvre sélectionné, et qu'il souhaite y effectué des modification pour y changer le titre, la description, l'image ou la catégorie etc.. (c'est donc ce système qui me pose problème ^^ )

Pour débuter dans ce système, je voudrais commencer par une condition : - Si, aucune oeuvre n'as été sélectionner alors la page de modification n'est pas accessible, et pour une question de sécurité, si l'id de l'artiste, n'est pas égale a l'id de la session membre connecté, alors, l'accès est impossible a la page modif ^^ )
if (id_oeuvre =['0'] || artiste_id (n'est pas égale à) $_SESSION['membre_id']) {
echo "Vous devez sélectionner une de vos oeuvres.";
}
Ensuite si je ne me trompe pas, je dois déclarer les variable du formulaire
 $id=($_SESSION['membre_id']);
 $titre = ($_POST['titre_oeuvre']);
 $oeuvre_description = ($_POST['description_oeuvre']);
 $cat = ($_POST['oeuvre_categorie']);
 $styl = ($_POST['oeuvre_style']);
 $datecreaoeuvre = ($_POST['date_crea']);
Merci encore pour ton temps et ton aide ^^.
Créateur du site www.crobara2bal.com.

Eléphant du PHP | 79 Messages

04 déc. 2013, 13:50

Salut à tous,

J'ai donc été aider pour trouver cette solutions :
$query = $bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE oeuvre_id=:oeuvre_id AND artiste_id=:artiste_id');
$query->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
$query->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
Grâce à ça, lorsqu'un membre cherche à modifier l'id d'oeuvre dans l'url avec de mauvaise attention pour modifier l'oeuvre d'une autre personne, une page avec le formulaire vide, s'affiche.

Maintenant j'aurais voulu savoir comment insérer une condition, pour interdire définitivement l'accès à ceux formulaire, si l'id oeuvre n'appartient pas à l'id artiste ^^.

Merci pour votre attention et votre aide.
Créateur du site www.crobara2bal.com.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 déc. 2013, 22:15

salut,

il faut que ton $id_artiste corresponde à l'id de la personne connectée ou a un valeur en session que place à la connexion.

si l'oeuvre n'appartient pas à l'artiste connecté tu n'auras pas de résultat donc rien a afficher.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 79 Messages

06 déc. 2013, 19:02

Re,

voici mon code actuelle :
 if ($oeuvre_id=0) {
		 echo ''."Vous devez sélectionner une de vos oeuvres pour accéder à sa modification.".'';
	 }

$artiste_id = $_SESSION['membre_id'];
$oeuvre_id = isset($_GET['s'])?(int) $_GET['s']:'';
$query = $bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE oeuvre_id=:oeuvre_id AND artiste_id=:artiste_id');
$query->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
$query->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
        $query->execute();
        $data = $query->fetch();
Pour pouvoir comparer l'id artiste, est l'id membre qui sont censé être identique pour accéder à la page j'ai donc tenté :
$reponse=$bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE artiste_id= :artiste_id');
$reponse->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
$reponse->execute();
$data=$reponse->fetch())  
if ($data['artiste_id']!=$_SESSION['membre_id'])
{
 echo '<p>'."Vous n'avez pas accès à cette session.".'</p>';
}
mais soit il y a une erreur ^^' soit cette solutions ne fonctionne pas :/

Merci encore pour ton aide Moogli,
Sincèrement.
Créateur du site www.crobara2bal.com.