Se connecter avec
S'enregistrer | Connectez-vous

Upload de photos

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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]."')" );

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. }

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!

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 :) 
Lassé par la pub ? Créez un compte
Tom's guide dans le monde