Php enregistr plusieurs photos (champs vide)
teler
Messages postés
86
Date d'inscription
Statut
Membre
Dernière intervention
-
giheller Messages postés 1882 Date d'inscription Statut Membre Dernière intervention -
giheller Messages postés 1882 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voilà, je débute en php,
et je rencontre un problème à partir d'un formulaire, voilà l'idée c'est de trouver dans ce formulaire 10 champs <input de type files> les uns en dessous des autres. La personne ajoute une photo dans chaques champs tant qu'elle en a besoin, c'est à dire que si elle n'a que 7 photos elle laisse vide les autres champs.
ensuite elle enregistre et ça bascule sur une seconde page de traitement.php
qui va créer un nom précis pour chaque photo avec une numérotation différente ( photo1.jpg, photo2.jpg, ...)
et qui va l'enregistrer dans la bdd, mais aussi dans un répertoire du site.
et donc si ya 7 photos, (photo1.jpg, photo2.jpg,photo3.jpg,photo4.jpg,photo5.jpg,photo6.jpg,photo7.jpg).
Voilà les 2 soucis que je rencontre c'est que je veux :
- que même si tout les input ne sont pas remplis, l'enregistrement se fasse quand même avec les input remplis,
- que à l'aide d'une boucle, mes photos se numérote en fonction du nombre d'input remplis.
J'imagine qu'il faut utiliser un système de boucle et isset empty ou null mais je ne maîtrise pas encore tres bien tout ça. Alors si quelqu'un se sent de m'aider...
Merci
voilà, je débute en php,
et je rencontre un problème à partir d'un formulaire, voilà l'idée c'est de trouver dans ce formulaire 10 champs <input de type files> les uns en dessous des autres. La personne ajoute une photo dans chaques champs tant qu'elle en a besoin, c'est à dire que si elle n'a que 7 photos elle laisse vide les autres champs.
ensuite elle enregistre et ça bascule sur une seconde page de traitement.php
qui va créer un nom précis pour chaque photo avec une numérotation différente ( photo1.jpg, photo2.jpg, ...)
et qui va l'enregistrer dans la bdd, mais aussi dans un répertoire du site.
et donc si ya 7 photos, (photo1.jpg, photo2.jpg,photo3.jpg,photo4.jpg,photo5.jpg,photo6.jpg,photo7.jpg).
Voilà les 2 soucis que je rencontre c'est que je veux :
- que même si tout les input ne sont pas remplis, l'enregistrement se fasse quand même avec les input remplis,
- que à l'aide d'une boucle, mes photos se numérote en fonction du nombre d'input remplis.
J'imagine qu'il faut utiliser un système de boucle et isset empty ou null mais je ne maîtrise pas encore tres bien tout ça. Alors si quelqu'un se sent de m'aider...
Merci
A voir également:
- Php enregistr plusieurs photos (champs vide)
- Partager des photos - Guide
- Supprimer page word vide - Guide
- Toutes mes photos - Guide
- Google photos - Télécharger - Albums photo
- Caractere vide - Guide
3 réponses
bonsoir
attention : il faut adapter ce que je mets en fonction de votre vos paramètres et de votre problématique.
C'est pour vous aiguiller.
si input type file name=file1, input type file name=file2, input type file name=file3, etc ...
for ($i=0;$i<10;$i++) {
//si les paramètres reçus sont aussi numérotés on a alors
$f = "file."$i";
if ($_POST[sf] <> '') {
$nom_photo$i = "photo".$i.".jpg";
}
}
attention : il faut adapter ce que je mets en fonction de votre vos paramètres et de votre problématique.
C'est pour vous aiguiller.
si input type file name=file1, input type file name=file2, input type file name=file3, etc ...
for ($i=0;$i<10;$i++) {
//si les paramètres reçus sont aussi numérotés on a alors
$f = "file."$i";
if ($_POST[sf] <> '') {
$nom_photo$i = "photo".$i.".jpg";
}
}
Bonsoir, j'ai essayé d'intégrer votre code mais sans succès dailleur à quoi correspond le signe <> ???
voici mon code :
page 1 :
<form enctype="multipart/form-data" action="finish2.php" method="post">
Photo1<br />
<input name="fichier1" type="file" /><br>
Photo2<br />
<input name="fichier2" type="file" /><br>
<input type="submit" value="enregistrer"/><br>
</form>';
page 2 :
$poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets)
$repertoire = 'upload/'; // Repertoire d'upload
if (isset($_FILES['fichier1']) && isset($_FILES['fichier2']))
{
for ($i=0;$i<10;$i++) {
//si les paramètres reçus sont aussi numérotés on a alors
$f = "fichier."$i"'";
if ($_FILES [$f] <> '') {
// On vérifit le type du fichier
if ($_FILES[$f]['type'] != 'image/png' && $_FILES[$f]['type'] != 'image/jpeg' && $_FILES[$f]['type'] != 'image/jpg' && $_FILES[$f]['type'] != 'image/gif')
{
$erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
}
// On vérifit le poids de l'image
elseif ($_FILES[$f]['size'] > $poids_max)
{
$erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
}
// On vérifit si le répertoire d'upload existe
elseif (!file_exists($repertoire))
{
$erreur = 'Erreur, le dossier d\'upload n\'existe pas.';
}
// Si il y a une erreur on l'affiche sinon on peut uploader
if(isset($erreur))
{
echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>';
}
else
{ // On définit l'extention du fichier puis on le nomme par le timestamp actuel
if ($_FILES[$f]['type'] == 'image/jpeg') { $extention = 'img_'.$_SESSION['id'].'_'$i.jpg'; }
// on écrit la requête sql
$sql = "INSERT INTO media (id, jpg, idgroupe)
VALUES('','$extention','".$_SESSION['id']."')";
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$extention))
{
echo 'Votre image à été uploadée sur le serveur avec succes!';
}
else
{
echo 'L\'image n\'a pas pu être uploadée sur le serveur.';
}
}
}
?>
voici mon code :
page 1 :
<form enctype="multipart/form-data" action="finish2.php" method="post">
Photo1<br />
<input name="fichier1" type="file" /><br>
Photo2<br />
<input name="fichier2" type="file" /><br>
<input type="submit" value="enregistrer"/><br>
</form>';
page 2 :
$poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets)
$repertoire = 'upload/'; // Repertoire d'upload
if (isset($_FILES['fichier1']) && isset($_FILES['fichier2']))
{
for ($i=0;$i<10;$i++) {
//si les paramètres reçus sont aussi numérotés on a alors
$f = "fichier."$i"'";
if ($_FILES [$f] <> '') {
// On vérifit le type du fichier
if ($_FILES[$f]['type'] != 'image/png' && $_FILES[$f]['type'] != 'image/jpeg' && $_FILES[$f]['type'] != 'image/jpg' && $_FILES[$f]['type'] != 'image/gif')
{
$erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
}
// On vérifit le poids de l'image
elseif ($_FILES[$f]['size'] > $poids_max)
{
$erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
}
// On vérifit si le répertoire d'upload existe
elseif (!file_exists($repertoire))
{
$erreur = 'Erreur, le dossier d\'upload n\'existe pas.';
}
// Si il y a une erreur on l'affiche sinon on peut uploader
if(isset($erreur))
{
echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>';
}
else
{ // On définit l'extention du fichier puis on le nomme par le timestamp actuel
if ($_FILES[$f]['type'] == 'image/jpeg') { $extention = 'img_'.$_SESSION['id'].'_'$i.jpg'; }
// on écrit la requête sql
$sql = "INSERT INTO media (id, jpg, idgroupe)
VALUES('','$extention','".$_SESSION['id']."')";
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$extention))
{
echo 'Votre image à été uploadée sur le serveur avec succes!';
}
else
{
echo 'L\'image n\'a pas pu être uploadée sur le serveur.';
}
}
}
?>