form complet avec multi-upload: tout est enregistré sauf les photos??

ViPHP
AB
ViPHP | 5818 Messages

15 oct. 2008, 04:15

Bon c'est bon signe si tu arrives à en uploader une...

Quand tu fais des essais prends des images légères, tout au moins qui ne dépassent pas 2mo par fichier et 8mo pour l'ensemble des fichiers (réglages par défaut de la plupart des serveurs).

Ensuite pour être complet, si tu as encore du temps et du courage il te restera la gestion des erreurs d'upload... c'est facultatif car ça fait encore pas mal de boulot si tu ne connais pas (et ce n'est pas parfait puisque ça ne retourne les erreurs qu'une fois les fichiers uploadés, ce qui fait que le visiteur peut attendre un moment avant de voir s'afficher le message d'erreur... m'enfin il est averti au final du type d'erreur rencontré).

PS Sépare tes modules pour faire des tests. Par exemple commences par tester ton multi upload isolément sans l'enregistrement des noms en bdd.

Eléphant du PHP | 250 Messages

16 oct. 2008, 14:13

Bonjour
Bon c'est bon signe si tu arrives à en uploader une...
Hé bien c'était vrai (1 seule fois en fait....) et depuis plus rien, ou presque, ne va...
Mais je pense avoir trouvé la source de l'absence d'upload..
J'explique:
Puisque le nom de la photo "nouvelle mouture" est bien enregistré dans la bdd, j'ai d'abord pensé à un probléme "physique"; j'ai donc incorporé ceci pour essayer de "voir" le problème (merci à Flood et son tuto !):
                 switch ($_FILES['fichier']['error']){
           case UPLOAD_ERR_INI_SIZE:
              echo 'Le fichier uploadé dépasse la valeur spécifiée 
                       pour upload_max_filesize dans php.ini.';
              break;
           case UPLOAD_ERR_FORM_SIZE:
              echo 'Le fichier uploadé dépasse la valeur spécifiée
                       pour MAX_FILE_SIZE dans le formulaire d\'upload.';
              break;
           case UPLOAD_ERR_PARTIAL:
              echo 'Le fichier n\'a été que partiellement uploadé.';
              break;                            
           default:
              echo 'Aucun fichier n\'a été uploadé.';
         } // switch 
Résultat: Aucune erreur! ...bon on avance! :P
Puis, j'ai fait divers echo, pour finalement tester:
                    $nom_final=time()."_".preg_replace("#([^a-zA-Z0-9]+)#", "", $fichier).".".substr($fichier, -3);
                    //on déplace l'image dans le répertoire final
                echo $nom_final;
et là....SURPRISE! :twisted:
J'affiche un nom de photo différent de celui enregistré dans la base......... :shock:
Exemple: Nom de la photo dans la base ($nom_final) = 1224157085_IMG1668jpg.jpg
Nom affiché avec le echo $nom_final dans le script: 1224157857_IMG1668jpg.jpg
.....??????......
J'ai aussi supprimé la redirection de fin de traitement; il y a une
session_start();
au début de ma page qui, apparemment, générait un conflit avec ma re-direction sur la même page...
Voilà; toujours pas d'upload donc, encore une fois...
Une fois de plus, si vous avez une idée, une piste....bhé, encore merci!
P.S: petite précision, mes test d'upload sont réalisés avec des fichiers .jpg de 45Ko à 1,8Mo...
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

ViPHP
AB
ViPHP | 5818 Messages

16 oct. 2008, 22:46

Encore une fois essaye de séparer les pb. Testes des bouts de codes séparément. A ta place j'essaierai de faire fonctionner le tuto et ensuite de faire ce que tu souhaites à partir du code fonctionnel.

Eléphant du PHP | 250 Messages

16 oct. 2008, 23:08

Bonsoir AB (et les autres!)
C'est exactement ce que je suis en train de faire, j'avais suivi tes (bons) conseils, et....L'upload (quelques soit le nombre de fichier) se passe très très bien !
Bon, sauf que maintenant, à force de tout reprendre...ben c'est le reste du form qui n'est plus enregistré! :lol:
Bon, je vais bien finir par y arriver..mais parfois le tricot n'est pas loin, je l'avoue! :wink:
Allez, une pose café/cigarette, et j'y retourne!
Merci vraiment pour tes conseils!
EDIT du 23/10, 11h20... :lol:
Merci à toutes et ceux qui m'ont conseillés et guidés, et pour cette fois en particulier à AB :agenouille: dont le conseil:
Encore une fois essaye de séparer les pb. Testes des bouts de codes séparément. A ta place j'essaierai de faire fonctionner le tuto et ensuite de faire ce que tu souhaites à partir du code fonctionnel.
J'avais une erreur ici:

Code : Tout sélectionner

else { if (empty($_POST['description']) || ($_POST['titre']) || ($_POST['prix'])) { echo ("Le champs description, titre ou prix est vide."); }
...et donc le message d'erreur s'affichait systématiquement alors que tous les champs étaient renseignés... :twisted:
Cette ligne devient donc:
    else {
          if (empty($_POST['description']) || empty($_POST['titre']) || empty($_POST['prix'])) 
          {
            echo ("Le champs description, titre ou prix est vide.");
          }
Voili, voilou, voilà...c'est (très) certainement améliorable, mais ça fonctionne très bien.!
Merci encore!
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."