Création et mise à jour d'albums photo
Les photos sont redimensionnées en deux formats et enregistrées dans des dossiers/albums que l'utilisateur peut créer et compléter depuis ce formulaire. Le nom de l'album est utilisé comme nom de dossier après avoir remplacé ou supprimé les caractères spéciaux.
Côté client
L'intérêt de cet exemple côté javascript est de permettre de compléter un album dernièrement créé sans avoir besoin d'utiliser le sélecteur de dossier, tout en affichant un message d'erreur si le visiteur saisi le nom d'un album existant pour créer un nouvel album. On se servira des retours serveurs pour mettre à jour le tableau de comparaison des albums existants,
ainsi que pour la mise à jour des options du select.
- Interception de l'événement onSubmit et contrôles avant l'envoi du formulaire.
- Gestion des messages d'erreurs.
- Mise à jour du tableau de comparaison des dossiers et du sélecteur d'album en fonction des albums nouvellement créés en retour d'information serveur.
Côté serveur
(voir le fichier "Php_Upload/UploadAjaxABCI_Upload_Redimensions_Album.php")
Cet exemple montre l'utilisation de variables de sessions dépendantes du formulaire, qui seront définies pour la session entière, ou pour plusieurs téléchargements successifs tant que l'utilisateur n'a pas rafraichi la page du formulaire, ou pour le téléchargement en cours.
- Elles sont utilisées pour envoyer en temps voulu des messages appropriés avec la méthode "addInfosServer()" en fonction de la création ou de la mise à jour d'album, ainsi que pour faire des log.
- La méthode "addMixteServer()" est utilisée conjointement pour retourner (entre autre) un tableau contenant l'album dernièrement créé, récupérable dans le troisième paramètre de la méthode javascript événementielle "config.func_FormEnd", et qui sera utilisé pour mettre à jour les options du selecteur d'album.
- Une fonction "stopFormExit()" est créée pour annuler le traitement du formulaire en cas d'erreur de dossier et retourner un message correspondant.
- Le code php fait les mêmes contrôles que javascript pour sécuriser le script.
Toujours côté serveur, notez qu'il convient de ne pas faire de log ou d'enregistrements importants à l'intérieur de la condition "if(count($up->UpAbci_formEnd) > 0)" car le tableau retourné n'est renseigné que par la requête additionelle envoyée à la fin du traitement du formulaire (uniquement si l'option javascript "config.queryFormEnd" = true).
En cas de panne internet, le script pourrait être stoppé avant l'envoi de cette dernière requête et dans cette hytpothèse certains fichiers pourraient être traités sans que l'on puisse les loger. L'endroit le plus sécurisé pour faire des log se situe après l'export des fichiers comme indiqué dans les commentaires du script d'upload.
Index