Création d'un système galerie image [Résolu/Fermé]

Signaler
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014
-
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014
-
Bonjour à tous et à toutes,

Je créer actuellement une sorte de réseau social permettant au artiste de publier leur dessin, avec un titre, image etc.., bref une galerie d'image.

J'ai commencer par suivre un tuto, est lors d'un test je m'aperçois que d'entré de jeu, les erreurs sont là ^^'.

Voici ma page publication.php :

<?php session_start(); ?>
<?php  require_once("connexioninscription.inc.php"); ?>

<!DOCTYPE HTML>
<html>
<head>
<link rel="shortcut icon" title="titre" type="image/png" href="mafavicon.png" />
<link href="css1.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="blablabla." />
<meta name="keywords" content="blablabla" />
<title>
Galerie d'art / Crobara2bal</title>
</head>

<body>
<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">
 <h3 class="textesimple">Publier une oeuvre</h3>
 <?php
 if (isset($erreurpublication))
 {
	 echo $erreurpublication;
 }
 ?>
<form method="post" action="publication.php" enctype="multipart/form-data">
<input type="file" name="imgpublication"/>
<input type="submit" name="Envoyer"/>
<?php

if (!empty($_FILES))
{
$imgpublication=$_FILES['img'];
$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.";
}

?>
 </div>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>


Lorsque je fait un upload d'un fichier qui n'est pas une image ( jpg, png, gif ) l'infos erreur de non correspondance ne s'affiche pas ( $erreurpublication = "Votre fichier contient une mauvaise extension, ou n'est pas une image."; )

et lorsque j'essaye d'uploader une image avec un vrai format, l'upload ne fonctionne pas, l'image n'est pas envoyer :/

Merci pour votre attention et votre aide à tous :)

5 réponses

Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
Bonjour,

Ne vous embêtez pas la vie

http://www.igalerie.org/

Cordialement
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
uops désolé

<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="imgpublication"/>
<input type="submit" name="Envoyer" />
</form>
<?php
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
{
echo "Votre fichier contient une mauvaise extension, ou n'est pas une image.";
}
}
}
?>
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

une parenthèse est en trop dans cet exemple ^^, l'autre est bon mais la fonction n'as pas l'air de fonctionner :/
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
heu laquelle ?
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

re,

La condition if (isset($_POST['Envoyer'])) n'as pas l'air de fonctionner ^^',
une fois l'envoie effectué d'un fichier ne contenant pas une extension comprise dans $allow_ext = array('jpg','png','gif'); l'erreur de format ne s'affiche toujours pas :/.

Merci encore pour ta patience et ton aide ^^.
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
tu peux re-poster l'ensemble du code ? merci
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

Voici mon code actuelle de ma page publication.php

 <?php
if (empty($_SESSION['membre_id']))
{
	echo '<p class="textewarning">'."vous devez vous connectez pour accéder à la publication oeuvre".'</p>';
}
else
{
 ?>
<form method="post" action="publication.php" enctype="multipart/form-data">
<input type="file" name="imgpublication"/>
<input type="submit" name="envoyer"/>
<?php
	 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;
 }
}
}
?>
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
il manque le </form> et l'action "publication.php" ca va pas
le but c que sur le bouton le script revienne sur la même pas pour le traitement donc action=""

voici le code remanié

<?php
session_start();
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">
<input type="file" name="imgpublication"/>
<input type="submit" name="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;
}
}
}
?>

désolé pour l'indentation mais si je met le code en tag "Code", CCM ajout de \ devant les "
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
notez le session_start() au début. important pour récupéré les variables sessions.
aussi le </form>
j'ai aussi mi le formulaire à lintérieur d'un ECHO
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

re,

ça ne fonctionne toujours pas :/

voici le code :

<?php session_start(); ?>
<?php  require_once("connexioninscription.inc.php"); ?>

<!DOCTYPE HTML>
<html>
<head>
<link rel="shortcut icon" title="log" type="image/png" href="mafavicon.png" />
<link href="css1.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="desc." />desc" />
<title>
Galerie d'art </title>
</head>

<body>
<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
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">
<input type="file" name="imgpublication"/>
<input type="submit" name="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;
 }
}
}
?>
 </div>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
qu'est qui ne marche pas ? qu'est-ce qui s'affiche ? re-décrivez moi car avec ces modif je ne sais plus ce qui marche ou pas
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
Je viens de faire quelques modifications pour être plus juste dans les test.
Chez moi ca marche bien

voici un lien avec le fichier modifier. https://www.cjoint.com/?3IfqE6zNLVW
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

Salut à toi,

Merci encore pour ton aide apporté =),

Je pense changer le système de publication car il ne semble pas convenir à ce que je souhaite faire :/,

J'ai précédemment créé un espace membre, ( avec inscription, connexion, déconnexion, gestion du profil etc... )

et je souhaiterai liée le système de publication d'oeuvre, au membre, cet à dire que si le membre 'Thora' publie un dessin, une oeuvre etc.. dans ma base de donnée je pourrais voir l'id du membre qui a publier tel oeuvre, etc..

J'ai commencé par créé une table dans ma base de donnée "membres" qui regroupent toutes les tables ayant une liaison avec le membre ^^ :

-- 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_id' int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY ('oeuvre_id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stockage oeuvre' AUTO_INCREMENT=1 ;
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
oui intéressant.

Ne pas oublier de créer des indexes sur les champs souvent utiliser pour les recherches (comme titre_oeuvre). Cela augmente les performances de recherche, surtout si vous développez ensuite un système de recherche d'oeuvre.
un champ date (date d'ajout) serait peut être intéressant à ajouter
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

re,

voici mon code SQL mis à jour :
-- 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 ;

Est-ce possible de récupérer le précédent code php pour l'adapter ? ou faut-il que je commence avec une autre base ^^

merci pour ton attention et ton aide :) sincèrement.
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
Je pense que tu peux reprendre ton code précédent en l'adaptant.
Il faudra bien sur adapter le formulaire en ajoutant les zones supplémentaire (titre oeuvre, catégorie..) D'ailleurs il serait interessant de faire une table oeuvre_style et oeuvre_categorie afin de faire des listes déroulantes dynamiques.
Chose aussi important, faire attention à bien tester chaque champ afin qu'ils correspondent a vos critères (Null interdit, doublon ...) dans les tests de validation
Ca avance dans le bon sens
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

Re,

Effectivement :D merci, j'ai créer 2 autres tables.

-- Structure de la table 'oeuvre_categorie'
--

CREATE TABLE IF NOT EXISTS 'oeuvre_categorie' (
'id_oeuvre_id' int(11) NOT NULL,
'oeuvre_categorie' int(11) NOT NULL,
'oeuvre_nom_cat' varchar(50) NOT NULL,
'cat_ordre' int(11) NOT NULL,
PRIMARY KEY ('id_oeuvre_id'),
KEY 'oeuvre_nom_cat' ('oeuvre_nom_cat')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Categorie des oeuvres';

et

-- Structure de la table 'oeuvre_style'
--

CREATE TABLE IF NOT EXISTS 'oeuvre_style' (
'id_oeuvre' int(11) NOT NULL,
'oeuvre_style' int(11) NOT NULL,
'oeuvre_nom_style' varchar(50) NOT NULL,
'oeuvre_style_ordre' int(11) NOT NULL,
KEY 'oeuvre_nom_style' ('oeuvre_nom_style')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Oeuvre style';

j'ai commencer également à modifier mon code php de ma page publication.php :

<?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">

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

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

<label for="categorie">Catégorie</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">Style</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="description">Description :</label><input type="text" name="titre" id="oeuvredescription" />

<label for="datecreaoeuvre">Date de création :</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;
}
}
}
?>

Merci encore pour tes conseilles et ton aide :), sincèrement.
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
pour la table oeuvre_categorie le champ id_oeuvre_id est confus. plutot id_oeuvre_cat

Attention aux nom de champ, dès que les tables vont augmenter avec en plus les relations, plus tu seras perdu. Petit conseil (même si ca doit tout révolutionner mais ca t'évitera des problèmes futurs) et de mettre un préfixe à tes champs ex:
pour la table oeuvre_categorie:
catov_id
catov_style
catov_nom_style
catov_style_ordre
ou autre préfixe (pas trop long)
pour la table oeuvre_style:
styoe_id
styoe_style
styoe_nom_style
styoe_style_ordre
enfin tu vois le principe
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

Re,
Merci :D il est vrai que par la suite cela pourra m'être utile :), j'ai appliqué ton conseil :

-- 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';

-- 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';
Messages postés
1064
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
126
c bien mais tu as vu que j'avais fait une petite erreur dans 'oeuvre_categorie' le préfix est catov_ et dans 'oeuvre_style' c styoe_
styoe_
catoe_

sinon ca avance bien
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014

Salut à toi,

Je suis actuellement sur mon code php, j'ai créer mes variables post du formulairen mais je ne vois pas comment envoyer le nom de l'avatar dans la base de donnée avec l'id du membre qui la post.

voici mon code actuelle :

<?php session_start(); ?>
<?php require_once("connexioninscription.inc.php"); ?>

<!DOCTYPE HTML>
<html>
<head>
<link rel="shortcut icon" title="montitre" type="image/png" href="mafavicon.png" />
<link href="css1.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="desc." />
<meta name="keywords" content="motclef" />
<title>
Galerie d'art</title>
</head>

<body>
<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>
</body>
</html>

Merci encore une fois pour ton aide ^^.