Votre question

Upload de photos

Tags :
  • Upload
  • Programmation
Dernière réponse : dans Programmation
22 Janvier 2007 02:46:43

Bonjour!

J'ai récemment décidé de créer une section admin dans mon site pour simplifier un peu les choses. Entre autres, un formulaire d'upload de photos, car sinon pour ajouter des photos je dois passer par tout plein d'étapes chiantes, et puisque je rentre souvent des photos, j'ai décidé d'automatiser ça un peu.

Mais voila, le formulaire fonctionne à merveille quand je le teste en local, mais quand je l'envoie sur le site, plus rien :( 

Ce qui marche: Les informations de chaque photos sont envoyées dans la base de données, excepté le champs "description" qui reste mystérieusement vide... Et puis, quand je veux créer une nouvelle catégorie, ça fonctionne, et les photos sont bien numérotées.

Le bémol? Aucune photo n'est uploadée!! Bah en fait, ça a fonctionné une fois, mais j'ai re-testé tout de suite après (sans rien modifier au code) et puis là ça marchait pu :( 

Voici mon code:

<?php
if(ISSET($_COOKIE['pseudo']))
{
if($_COOKIE['pseudo'] != "julie" && $_COOKIE['pseudo'] != "guillaume" && $_COOKIE['pseudo'] != "amelie" && $_COOKIE['pseudo'] != "michael")
{
?>
Réservé aux voyageurs! <a href="../../index.php">Retour à l'accueil</a>
<?php
}
else
{
if(!ISSET($_GET['cat']) && !ISSET($_GET['send']))
{
?>
<a href="ajouter_photos.php?cat=1">Campagnes de financement</a>
<br />
<a href="ajouter_photos.php?cat=2">Au Burkina Faso</a>
<?php
}
elseif(ISSET($_GET['cat']))
{
include "mysql_infos.php";
mysql_connect($mysql_host, $mysql_name, $mysql_pass);
mysql_select_db($mysql_database);

$req = mysql_query("SELECT * FROM categories");
$req2 = mysql_query("SELECT * FROM categories WHERE categorie='".$_GET['cat']."'");
$nb_categories = mysql_num_rows($req);
mysql_close();


?>

<br />
<form method="post" action="ajouter_photos.php?send=yes" enctype="multipart/form-data">
<input type="radio" name="categorie" value="nouvelle" checked="checked" /> Nouvelle catégorie
<br />
<input type="radio" name="categorie" value="existante" /> Catégorie existante
<br />
Si catégorie existante, choisir dans la liste:
<br />
<select name="choixcat">
<?php
for($i = 0; $i < $nb_categories; $i++)
{
$categorie = mysql_fetch_array($req2);
?>
<option value="<?php echo $categorie['numero']; ?>"><?php echo $categorie['nom']." ".$categorie['date']; ?></option>
<?php
}
?>
</select>
<br />
Si nouvelle catégorie, écrire le titre et la date (ex.: "26 janvier 2007" OU "Du 26 janvier au 12 février 2007"):
<br />
<input type="text" name="titre" value="Titre" />
<br />
<input type="text" name="date" value="Date" />
<br />
---------------------------------
<br />
Format JPG, JPEG et PNG seulement
<br />
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<input type="hidden" name="cat" value="<?php echo $_GET['cat']; ?>" />
<input type="file" name="0" /><input type="text" name="0" value= "description" />
<br />
<input type="file" name="1" /><input type="text" name="1" value= "description" />
<br />
<input type="file" name="2" /><input type="text" name="2" value= "description" />
<br />
<input type="file" name="3" /><input type="text" name="3" value= "description" />
<br />
<input type="file" name="4" /><input type="text" name="4" value= "description" />
<br />
<input type="file" name="5" /><input type="text" name="5" value= "description" />
<br />
<br />
<input type="submit" value="Envoyer" />
</form>
<?php
}
elseif(ISSET($_GET['send']))
{
$ok = 0;

if($_POST['categorie'] == "nouvelle" && ($_POST['titre'] == "Titre" || $_POST['titre'] == NULL || $_POST['date'] == "Date" || $_POST['date'] == NULL))
{
$ok = 1;
echo "ERREUR: Titre et/ou date de la catégorie non-mentionnée<br />";
}
for($i = 0, $nb_photos = 0; $i < 10; $i++)
{
if($_FILES[$i]['name'] != NULL)
{
$nb_photos++;
}
else
{
$i = 10;
}
}

if($nb_photos == 0)
{
$ok = 1;
?>
ERREUR: Aucune photo envoyée
<?php
}

for($i = 0; $i < $nb_photos; $i++)
{
$extension[$i] = strrchr($_FILES[$i]['name'], '.');
$extension[$i] = substr($extension[$i], 1);
if($extension[$i] != "jpg" && $extension[$i] != "png" && $extension[$i] != "jpeg" && $extension[$i] != "JPG" && $extention[$i] != "PNG" && $extension[$i] != "JPEG")
{
echo "ERREUR: Photo ".($i+1).": Mauvais format (JPG, JPEG et PNG seulement). Les photos n'ont donc pas été uploadées.<br />";
$ok = 1;
}
}
if($ok == 0)
{
include "mysql_infos.php";
mysql_connect($mysql_host, $mysql_name, $mysql_pass);
mysql_select_db($mysql_database);

if($_POST['categorie'] == "existante")
{
$req = mysql_query("SELECT * FROM categories WHERE numero='".$_POST['choixcat']."'");
$infos_cat = mysql_fetch_array($req);
$nb_total_photos = $infos_cat['nb_photos'] + $nb_photos;
mysql_query("UPDATE categories SET nb_photos='".$nb_total_photos."' WHERE numero='".$_POST['choixcat']."'");
}
else
{
$req = mysql_query("SELECT * FROM categories");
$numero = mysql_num_rows($req);
mysql_query("INSERT INTO categories VALUES('".$numero."', '".$_POST['cat']."', '".$_POST['titre']."', '".$_POST['date']."', '".$nb_photos."')");
}

for($i = 0; $i < $nb_photos; $i++)
{

$dest_dossier = "/usr/home/users/31/myself789/www/www.afrikaburkina.org/photos/";
if($_POST['categorie'] == "existante")
{
$nom = basename($_POST['choixcat']."_".$i.".".$extension[$i]);
}
else
{
$nom = basename($numero."_".$i.".".$extension[$i]);
}
move_uploaded_file($_FILES[$i]['tmp_name'], $dest_dossier.$nom);

mysql_query("INSERT INTO description_photos VALUES('".$numero."', '".$i."', '".$extension[$i]."', '".$_POST[$i]."')");
}
?>
Les photos ont été uploadées. <a href="index.php">Accueil</a>
<?php
}

}
}
}
else
{
?>
Réservé aux voyageurs! <a href="../../index.php">Retour à l'accueil</a>
<?php
}
?>


Merci à l'avance pour votre aide!

Autres pages sur : upload photos

22 Janvier 2007 08:30:04

bonjour,
j'ai pas lu tout le code mais le probleme de description vide doit venir de:
  1. mysql_query("INSERT INTO description_photos VALUES('".$numero."', '".$i."', '".$extension[$i]."', '".$_POST[$i]."')" );

$_POST[$i] correspond à un input de type file et de type text
vaut mieux definir tes input de cette facon:
  1. <input type="file" name="fichier[]" /><input type="text" name="description[]" value= "description" />

ainsi tu pourras y acceder en php comme des tableau
en plus tu pourras les afficher en te servant d'une boucle.
  1. mysql_query("INSERT INTO description_photos VALUES('".$numero."', '".$i."', '".$extension[$i]."', '".$_POST['description'][$i]."')" );
22 Janvier 2007 18:06:51

...Merci pour ta réponse, j'ai essayé mais ça me donne une erreur, parce que je ne crois pas que des tableaux en HTML ça fonctionne...
Contenus similaires
23 Janvier 2007 00:03:47

En fait ça me met le message "ERREUR: Aucune photo envoyée", comme si je n'avais juste pas envoyé de photo...
23 Janvier 2007 08:43:15

c'est sur que si tu changes ce que je t'ai indiqué mais que tu ne changes pas le reste du script, ca ne marchera pas mieux
exemple:
  1. for($nb_photos = 0; $nb_photos < 10; $nb_photos++)
  2. {
  3. if(empty ($_FILES['fichier']['name'][$i]))
  4. break;
  5. }
23 Janvier 2007 19:40:52

Lol, je l'avais changé mais j'avais écrit $_FILES['fichier'][$i]['name'] à la place...

Merci, maintenant tout fonctionne! Mais il reste un tout petit problème... Quand la photo est uploadée, les permissions de la photo se mettent à 600 tout seul :(  Donc la photo ne s'affiche pas... Y a t'il un moyen de regler ça??

Merci encore!
26 Janvier 2007 22:06:54

Citation :
Re-salut!

Ya aucun message d'erreur, c'est là le problème :S La photo ne s'upload pas tout simplement...

Pour ce qui est du CHMOD c'est que quand ça marche (ce qui est plutôt rare), bah la photo se met automatiquement a 655 comme permission, donc impossible d'afficher la photo sur le site!

Merci


c'est un peu louche, 655 veut dire:
lecture/ecriture pour le propriétaire
lecture/execution pour les autres

pour ce qui est de l'upload qui ne marche pas, comme je n'ai pas acces au site, ce que tu peux faire, c'est t'aider par des messages pour t'indiquer la progression du script (de simples echo)

et repostes le programme modifié, une erreur apparaitra peut etre :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS