Php enregistr plusieurs photos (champs vide)

Fermé
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 - 24 janv. 2010 à 18:01
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 - 25 janv. 2010 à 13:33
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
A voir également:

3 réponses

giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
24 janv. 2010 à 19:14
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";
}

}
0
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
24 janv. 2010 à 22:19
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.';
}

}

}
?>
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 janv. 2010 à 13:33
Bonjour,

oups <> veut dire différent c'est la mêm chose que !=
êtes vous sûr que la variable $repertopire est initialisée, c'est dans ce répertoire qu'on va enregistrer l'image.

0