[RESOLU] liaison d'une publication avec le membre qui publie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] liaison d'une publication avec le membre qui publie

Re: liaison d'une publication avec le membre qui publie

par reverb » 24 sept. 2013, 18:25

Bonjour à tous et à toutes,

J'ai résolu mon erreur :
move_uploaded_file($_FILES['image_oeuvre']['tmp_name'],$destination);
au lieu de
move_uploaded_file($imgpublication['tmp_name'],$destination);

Re: liaison d'une publication avec le membre qui publie

par reverb » 23 sept. 2013, 18:58

Bonjour à vous :),

J'ai avancer dans mon code, et tout fonctionne bien, les informations s'insère bien dans ma table, mais l'image ne s'enregistre plus dans mon dossier oeuvres :(

Voici mon code actuelle mis à jour :
<?php session_start(); ?>
<?php  require_once("connexioninscription.inc.php"); ?>
 <?php
if (empty($_SESSION['membre_id']))
{
	echo '<p class="textewarning">'."vous devez vous connectez pour accéder à la publication oeuvre".'</p>';
}
else
{

echo '<form method="post" action="" enctype="multipart/form-data">

<legend><p class="textesimple"><b>Ajout d\'une oeuvre</b></p></legend>
<div id="encartpubldiv"><div id="encpubldiv"><label for="titre"><p class="textesimple">Titre : </label><input type="text" name="titre_oeuvre" id="oeuvretitre" placeholder="Choisissez un titre"/></p></div>

<legend><p class="textesimple"><b>Sélectionnez une oeuvre</b></p></legend>

<div id="encpubldiv"><label for="oeuvre"><p class="textesimple">Image : </label><input type="file" name="image_oeuvre"/></p></div>

<legend><p class="textesimple"><b>Décrivez votre oeuvre</b></p></legend>

<div id="encpubldiv"><label for="description"><p class="textesimple">Description : </label><textarea name="description_oeuvre" id="description" cols="40" rows="5" placeholder="Ecrivez une description de votre oeuvre ici !"></textarea></p></div>

<legend><p class="textesimple"><b>Classification</b></p></legend>

 <div id="encpubldiv"><label for="categorie"><p class="textesimplesans">Catégorie : </label>
       <select name="oeuvre_categorie" id="categorie">
           <option value="peinture">Peinture</option>
           <option value="croquis">Croquis</option>
           <option value="dessin">Dessin</option>
		   <option value="graphe">Graphe</option>
           <option value="autre">Autre...</option>
       </select></p></div>
	   
	  <div id="encpubldiv"><label for="style"><p class="textesimplesans">Style : </label>
       <select name="oeuvre_style" id="style">
           <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="surréalisme">Surréalisme</option>
		   <option value="symbolisme">Symbolisme</option>
		   
           <option value="autre">Autre...</option>
       </select></p></div>

<legend><p class="textesimple"><b>Date de réalisation</b></p></legend>

<div id="encpubldiv"><label for="datecreaoeuvre"><p class="textesimple">Date de création : </label><input type="text" name="date_crea" id="datecreaoeuvre" placeholder="AAAA-MM-JJ"/></p></div>

<input type="submit" name="envoyer" value="envoyer"/>
</div></form>';

	 if (isset($_POST['envoyer'])) 
{ 
if (!empty($_FILES))
{
$imgpublication=$_FILES['image_oeuvre']['name'];
$ext = strtolower(pathinfo($imgpublication,PATHINFO_EXTENSION));
$allow_ext = array('jpg','png','gif','bmp','jpeg');
if (in_array($ext,$allow_ext))
{
	$destination = ("./images/oeuvres/".$imgpublication);
move_uploaded_file($imgpublication['tmp_name'],$destination);

 $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']);
try
{
 $req = $bdd->prepare('INSERT INTO oeuvre_artiste (artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea, date_edit) VALUES(:artiste_id,:titre_oeuvre,:description_oeuvre,:image_oeuvre,:oeuvre_categorie,:oeuvre_style,:date_crea, NOW())');
 
$req->bindValue(':artiste_id', $id, PDO::PARAM_INT);
$req->bindValue(':titre_oeuvre', $titre, PDO::PARAM_STR);
$req->bindValue(':description_oeuvre', $oeuvre_description, PDO::PARAM_STR);
$req->bindValue(':image_oeuvre', $imgpublication, PDO::PARAM_STR);
$req->bindValue(':oeuvre_categorie', $cat, PDO::PARAM_INT);
$req->bindValue(':oeuvre_style', $styl, PDO::PARAM_INT);
$req->bindValue(':date_crea', $datecreaoeuvre, PDO::PARAM_INT);

$req->execute();
 }
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
}
}
else
{
	$erreurpublication = "Votre fichier contient une mauvaise extension, ou n'est pas une image.";
}

 if (isset($erreurpublication))
 {
	 echo $erreurpublication;
 }

}
}
?>
Merci pour votre attention et votre aide :)

Re: liaison d'une publication avec le membre qui publie

par sirakawa » 20 sept. 2013, 16:35

Rappel:
mysql est obsolete. Il faut passer à mysqli ou PDO...
Rapidement, quand tu crées un enregistrement dans lequel il y a un champ autoincrement,
mysqli_insert_id de php donne cette valeur qu'on peut utiliser pour d'autres mises à jour ou LAST_INSERT_ID() de mysql

Re: liaison d'une publication avec le membre qui publie

par reverb » 20 sept. 2013, 15:24

Re,

Concernant ma bdd, j'ai corrigé 'image_oeuvre' en supprimant : tel que definit : defaut.jpg ^^'.

Voici ma premiere table
-- Structure de la table `oeuvre_artiste`
--

CREATE TABLE IF NOT EXISTS `oeuvre_artiste` (
  `artiste_id` int(11) NOT NULL,
  `titre_oeuvre` varchar(100) NOT NULL,
  `description_oeuvre` text NOT NULL,
  `image_oeuvre` varchar(100) NOT NULL,
  `oeuvre_categorie` int(11) NOT NULL,
  `oeuvre_style` int(11) NOT NULL,
  `oeuvre_id` int(11) NOT NULL AUTO_INCREMENT,
  `date_crea` date NOT NULL,
  `date_edit` date NOT NULL,
  PRIMARY KEY (`oeuvre_id`),
  KEY `titre_oeuvre` (`titre_oeuvre`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stockage oeuvre' AUTO_INCREMENT=1 ;
ma deuxième table :
-- Structure de la table `oeuvre_style`
--

CREATE TABLE IF NOT EXISTS `oeuvre_style` (
  `styoe_id` int(11) NOT NULL,
  `styoe_style` int(11) NOT NULL,
  `styoe_nomstyle` varchar(50) NOT NULL,
  `styoe_ordre` int(11) NOT NULL,
  KEY `styoe_nomstyle` (`styoe_nomstyle`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Oeuvre style';
et ma troisième table :
-- Structure de la table `oeuvre_categorie`
--

CREATE TABLE IF NOT EXISTS `oeuvre_categorie` (
  `catov_id` int(11) NOT NULL,
  `catov_categorie` int(11) NOT NULL,
  `catov_nomcat` varchar(50) NOT NULL,
  `catov_ordre` int(11) NOT NULL,
  PRIMARY KEY (`catov_id`),
  KEY `catov_nomcat` (`catov_nomcat`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Categorie des oeuvres';
c'est trois table seront utilisé pour classer chaque image ajouté par tel membre etc...

La difficulté que j'ai est par rapport au code php :/ mettre en place toutes les liaisons etc :/

voici mon code php mis à jour :
<?php session_start(); ?>
<?php  require_once("connexioninscription.inc.php"); ?>
 <?php
 $query=$bdd->prepare('SELECT artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, oeuvre_id, date_crea, date_edit FROM oeuvre_artiste');
if (empty($_SESSION['membre_id']))
{
	echo '<p class="textewarning">'."vous devez vous connectez pour accéder à la publication oeuvre".'</p>';
}
else
{

echo '<form method="post" action="" enctype="multipart/form-data">

<legend><p class="textesimple"><b>Ajout d\'une oeuvre</b></p></legend>
<div id="encartpubldiv"><div id="encpubldiv"><label for="titre"><p class="textesimple">Titre : </label><input type="text" name="titre" id="oeuvretitre" placeholder="Choisissez un titre"/></p></div>

<legend><p class="textesimple"><b>Sélectionnez une oeuvre</b></p></legend>

<div id="encpubldiv"><label for="oeuvre"><p class="textesimple">Image : </label><input type="file" name="image_oeuvre"/></p></div>

<legend><p class="textesimple"><b>Décrivez votre oeuvre</b></p></legend>

<div id="encpubldiv"><label for="description"><p class="textesimple">Description : </label><textarea name="oeuvredescription" id="description" cols="40" rows="5" placeholder="Ecrivez une description de votre oeuvre ici !"></textarea></p></div>

<legend><p class="textesimple"><b>Classification</b></p></legend>

 <div id="encpubldiv"><label for="categorie"><p class="textesimplesans">Catégorie : </label>
       <select name="categorie" id="categorie">
           <option value="peinture">Peinture</option>
           <option value="croquis">Croquis</option>
           <option value="dessin">Dessin</option>
		   <option value="graphe">Graphe</option>
           <option value="autre">Autre...</option>
       </select></p></div>
	   
	  <div id="encpubldiv"><label for="style"><p class="textesimplesans">Style : </label>
       <select name="style" id="style">
           <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="surréalisme">Surréalisme</option>
		   <option value="symbolisme">Symbolisme</option>
		   
           <option value="autre">Autre...</option>
       </select></p></div>

<legend><p class="textesimple"><b>Date de réalisation</b></p></legend>

<div id="encpubldiv"><label for="datecreaoeuvre"><p class="textesimple">Date de création : </label><input type="text" name="datecreaoeuvre" id="datecreaoeuvre" placeholder="AAAA-MM-JJ"/></p></div>

<input type="submit" name="envoyer" value="envoyer"/>
</div></form>';

	 if (isset($_POST['envoyer'])) 
{ 
if (!empty($_FILES))
{
$imgpublication=$_FILES['image_oeuvre'];
$ext = strtolower(pathinfo($imgpublication['image_oeuvre']['name'],PATHINFO_EXTENSION));
$allow_ext = array('jpg','png','gif','bmp','jpeg');
if (in_array($ext,$allow_ext))
{
move_uploaded_file($imgpublication['image_oeuvre']['tmp_name'],"images/oeuvres/".$imgpublication['image_oeuvre']['name']);

$id=($_SESSION['membre_id']);
    $query1 = $bdd->prepare('UPDATE membres SET image_oeuvre=:oeuvre, oeuvre_id=:oid WHERE artiste_id=:id');
	$query1->bindValue(':oeuvre',$imgpublication,PDO::PARAM_STR);
	$query1->bindValue(':id',$id,PDO::PARAM_INT);
	$query1->execute();
	$query1->CloseCursor();
}
}
else
{
	$erreurpublication = "Votre fichier contient une mauvaise extension, ou n'est pas une image.";
}

 if (isset($erreurpublication))
 {
	 echo $erreurpublication;
 }
 $titre = ($_POST['titre']);
 $oeuvredescription = ($_POST['oeuvredescription']);
 $style = ($_POST['style']);
 $datecreaoeuvre = ($_POST['datecreaoeuvre']);
}
}
?>
Merci pour votre attention et votre aide ^^,
Sincèrement.

Re: liaison d'une publication avec le membre qui publie

par sirakawa » 20 sept. 2013, 10:54

Il faudrait au minimum structurer ta bdd:
oeuvres:
id_opus : int unique autoincrement clef primaire
titre text
description text
//autres
nom_sur_disque: text ou char(20) ou du genre
auteurs
id_auteur: int unique autoincrement clef primaire
nom
etc

opus_auteurs
id_liaison : int unique autoincrement clef primaire
id_auteur: pris dans auteurs
id_opus : pris dans oeuvres

On pourrait faire de même pour les catégories...

Re: liaison d'une publication avec le membre qui publie

par reverb » 19 sept. 2013, 16:27

Salut à toi, et merci pour ton attention :),

j'ai commencer ma requête UPDATE, aucune erreur ne s'affiche, et le fichier ne s'insère ni dans le dossier d'image, ni le nom qui s'insère dans la table :/,

voici la structure de ma table 'oeuvre_artiste' Qui contient les informations d'une image posté :
-- Structure de la table `oeuvre_artiste`
--

CREATE TABLE IF NOT EXISTS `oeuvre_artiste` (
  `artiste_id` int(11) NOT NULL,
  `titre_oeuvre` varchar(100) NOT NULL,
  `description_oeuvre` text NOT NULL,
  `image_oeuvre` varchar(100) NOT NULL DEFAULT 'défaut.jpg',
  `oeuvre_categorie` int(11) NOT NULL,
  `oeuvre_style` int(11) NOT NULL,
  `oeuvre_id` int(11) NOT NULL AUTO_INCREMENT,
  `date_crea` date NOT NULL,
  `date_edit` date NOT NULL,
  PRIMARY KEY (`oeuvre_id`),
  KEY `titre_oeuvre` (`titre_oeuvre`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stockage oeuvre' AUTO_INCREMENT=1 ;
et voici mon code php avec la requête : ( je coupe le formulaire etc. pour diminuer la taille du code ^^ )
$imgpublication=$_FILES['image_oeuvre']['imgpublication'];
$ext = strtolower(pathinfo($imgpublication['image_oeuvre']['name'],PATHINFO_EXTENSION));
$allow_ext = array('jpg','png','gif');
if (in_array($ext,$allow_ext))
{
move_uploaded_file($imgpublication['image_oeuvre']['tmp_name'],"images/oeuvres/".$imgpublication['image_oeuvre']['name']);

$id=($_SESSION['membre_id']);
    $query1 = $bdd->prepare('UPDATE membres SET image_oeuvre=:oeuvre, oeuvre_id=:oid WHERE artiste_id=:id');
	$query1->bindValue(':oeuvre',$imgpublication,PDO::PARAM_STR);
	$query1->bindValue(':id',$id,PDO::PARAM_INT);
	$query1->execute();
	$query1->CloseCursor();
merci encore pour ton aide :).

Re: liaison d'une publication avec le membre qui publie

par juliette » 19 sept. 2013, 15:41

Salut, tu peux tester ici:
if (in_array($ext, $allow_ext)) {
    move_uploaded_file($imgpublication['tmp_name'], "images/oeuvres/" . $imgpublication['name']);
    // Tape ta requete d'insection ici !!!
    // A ce moment la normalement tu as vérifier les infos, tu déplace l'image vers le bon dossier c'est donc aussi le bon moment pour enregistrer son nom en BDD
}

liaison d'une publication avec le membre qui publie

par reverb » 19 sept. 2013, 14:11

Bonjour à tous et à toutes,

Je suis actuellement entrain de confectionner un système de publication pour une galerie d'oeuvre.
J'ai précédemment réussi à enregistrer une image dans un dossier ( oeuvre ) via le formulaire de publication, mais je souhaiterai également que le nom de l'image aille s'insérer ma base de donnée, pour, par la suite réaliser une liaison entre l'image poster et le membre qui l'as posté ( avec le titre de l'image, la description, etc.. )^^.

voici mon code actuelle :
<?php session_start(); ?>
<?php  require_once("connexioninscription.inc.php"); ?>

<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
<div id="corpspublication">
<div id="retourselect">
<a href="publication.php" title="recharger la page"><h1 class="titre1">Publication</h1></a>
</div>
 <div id="souscorpspublication">
 <div id="encartpubl"><h3 class="textesimple">Publier une oeuvre</h3></div>
 <?php
 $query=$bdd->prepare('SELECT artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, oeuvre_id, date_crea, date_edit FROM oeuvre_artiste');
if (empty($_SESSION['membre_id']))
{
	echo '<p class="textewarning">'."vous devez vous connectez pour accéder à la publication oeuvre".'</p>';
}
else
{

echo '<form method="post" action="" enctype="multipart/form-data">

<label for="titre"><p class="textesimple">Titre : </p></label><input type="text" name="titre" id="oeuvretitre" />

<label for="oeuvre"><p class="textesimple">Oeuvre : </p></label><input type="file" name="imgpublication"/>

<label for="description"><p class="textesimple">Description : </p></label><input type="text" name="oeuvredescription" id="oeuvredescription" />

 <label for="categorie"><p class="textesimplesans">Catégorie</p></label><br />
       <select name="categorie" id="categorie">
           <option value="peinture">Peinture</option>
           <option value="croquis">Croquis</option>
           <option value="dessin">Dessin</option>
           <option value="autre">Autre...</option>
       </select>
	   
	   <label for="style"><p class="textesimplesans">Style</p></label><br />
       <select name="style" id="style">
           <option value="abstrait">Abstrait</option>
           <option value="pointillisme">Pointillisme</option>
           <option value="cubisme">Cubisme</option>
           <option value="autre">Autre...</option>
       </select>

<label for="datecreaoeuvre"><p class="textesimple">Date de création : </p></label><input type="text" name="datecreaoeuvre" id="datecreaoeuvre" />

<input type="submit" name="envoyer" value="envoyer"/>
</form>';

	 if (isset($_POST['envoyer'])) 
{ 
if (!empty($_FILES))
{
$imgpublication=$_FILES['imgpublication'];
$ext = strtolower(substr($imgpublication['name'],-3));
$allow_ext = array('jpg','png','gif');
if (in_array($ext,$allow_ext))
{
move_uploaded_file($imgpublication['tmp_name'],"images/oeuvres/".$imgpublication['name']);
}
}
else
{
	$erreurpublication = "Votre fichier contient une mauvaise extension, ou n'est pas une image.";
}

 if (isset($erreurpublication))
 {
	 echo $erreurpublication;
 }
 $titre = ($_POST['titre']);
 $oeuvredescription = ($_POST['oeuvredescription']);
 $style = ($_POST['style']);
 $datecreaoeuvre = ($_POST['datecreaoeuvre']);
}
}
?>
 </div>
</div>
<?php include("footer.inc.php"); ?>
</div>
Je sais qu'il faut utiliser ['image_oeuvre'] ( qui correspond au champs du nom de l'image ) pour inséré le nom dans la table, mais je ne suis pas sur ou il faut le placer :/
$imgpublication=$_FILES['image_oeuvre']['imgpublication'];
?

Merci pour votre attention et votre aide.