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!
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:
$_POST[$i] correspond à un input de type file et de type text
vaut mieux definir tes input de cette facon:
ainsi tu pourras y acceder en php comme des tableau
en plus tu pourras les afficher en te servant d'une boucle.
j'ai pas lu tout le code mais le probleme de description vide doit venir de:
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:
<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.
mysql_query("INSERT INTO description_photos VALUES('".$numero."', '".$i."', '".$extension[$i]."', '".$_POST['description'][$i]."')" );
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/faq.html.php#faq.html....
si tu donnais l'erreur ca serait mieux
http://php.benscom.com/manual/fr/faq.html.php#faq.html....
si tu donnais l'erreur ca serait mieux
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!
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!
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
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
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
- Contenus similaires :
- SolutionsCompteur de Download/Upload ?
- SolutionsAmélioration de l'upload
- SolutionsMac PHP Apache et upload : pbl
- SolutionsUpload et Download
- SolutionsMettre des photos de mon pc sur mon iphone
- SolutionsMettre des photos dans mon sony ericsson w150i
- SolutionsMettre des photos sur une ps3
- ForumComment récupérer mes photos mise en ligne sur facebook
- SolutionsTransfert photos d'un Ipod à un pc
- Voir plus