Tom's Guide > Forum > Programmation > Upload de photos

Upload de photos

Forum Programmation : Upload de photos

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

bonjour,
j'ai pas lu tout le code mais le probleme de description vide doit venir de:

Code :
  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:

Code :
  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.

Code :
  1. mysql_query("INSERT INTO description_photos VALUES('".$numero."', '".$i."', '".$extension[$i]."', '".$_POST['description'][$i]."')" );


Message édité par coca25 le 22-01-2007 à 08:30:44
Répondre à coca25

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

Répondre à myself789

les tableaux ne sont pas en HTML mais c'est PHP qui prend les input finissant par [] pour les transformer en tableaux et ca marche parfaitement.
http://php.benscom.com/manual/fr/f [...] tml.arrays


si tu donnais l'erreur ca serait mieux


Message édité par coca25 le 22-01-2007 à 20:54:03
Répondre à coca25

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

Répondre à myself789

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:

Code :
  1. for($nb_photos = 0; $nb_photos < 10; $nb_photos++)
  2. {
  3.     if(empty ($_FILES['fichier']['name'][$i]))
  4.       break;
  5. }


Message édité par coca25 le 23-01-2007 à 08:46:02
Répondre à coca25

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!

Répondre à myself789

chmod ($fiche, $permission)
mets un manuel php dans tes favoris, c'est un bon moyen pour resoudre les problemes.
une exemple: http://php.benscom.com/manual/fr/index.php
il a une fonction de recherche ;)

Répondre à coca25

myself789 a écrit :

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 :)

Répondre à coca25
Tom's Guide > Forum > Programmation > Upload de photos
Aller à :

Il y a 2031 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens