Importer images dans BDD
Résolu/Fermé
lucanne212274
Messages postés
9
Date d'inscription
samedi 30 octobre 2021
Statut
Membre
Dernière intervention
27 juin 2022
-
25 juin 2022 à 17:28
lucanne212274 Messages postés 9 Date d'inscription samedi 30 octobre 2021 Statut Membre Dernière intervention 27 juin 2022 - 27 juin 2022 à 20:13
lucanne212274 Messages postés 9 Date d'inscription samedi 30 octobre 2021 Statut Membre Dernière intervention 27 juin 2022 - 27 juin 2022 à 20:13
A voir également:
- Importer images dans BDD
- Importer favoris chrome - Guide
- Importer agenda outlook dans google - Guide
- Des images - Guide
- Importer favoris firefox - Guide
- Importer contact carte sim - Guide
4 réponses
jordane45
Messages postés
38397
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 janvier 2025
4 732
25 juin 2022 à 20:22
25 juin 2022 à 20:22
Bonjour,
Déjà, il est fortement déconseillé de stocker des images directement en bdd...
A la place, on les stocke dans un dossier du serveur et on ne met en bdd que le chemin vers le fichier.
(pourquoi ? parce qu'en général, la taille d'une bdd est beaucoup plus limitée que celle du "disque dur" et que cela risque d'impacter le fonctionnement de la bdd en l'alourdissant inutilement..)
Ensuite...
ça ne marche pas... c'est à dire ? tu as ton message d'erreur qui s'affiche ?
Les images s'uploadent bien sur le serveur ? ( tu as vérifié ? )
et puis.. Il faudrait activer l'affichage des erreurs PDO au cas où ça serait un souci de requête
( pour ça, il faut activer cette gestion des erreurs dans la connexion à la bdd ET mettre CHAQUE requête dans un bloc TRY/CATCH : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs)
Déjà, il est fortement déconseillé de stocker des images directement en bdd...
A la place, on les stocke dans un dossier du serveur et on ne met en bdd que le chemin vers le fichier.
(pourquoi ? parce qu'en général, la taille d'une bdd est beaucoup plus limitée que celle du "disque dur" et que cela risque d'impacter le fonctionnement de la bdd en l'alourdissant inutilement..)
Ensuite...
ça ne marche pas... c'est à dire ? tu as ton message d'erreur qui s'affiche ?
Les images s'uploadent bien sur le serveur ? ( tu as vérifié ? )
et puis.. Il faudrait activer l'affichage des erreurs PDO au cas où ça serait un souci de requête
( pour ça, il faut activer cette gestion des erreurs dans la connexion à la bdd ET mettre CHAQUE requête dans un bloc TRY/CATCH : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs)
lucanne212274
Messages postés
9
Date d'inscription
samedi 30 octobre 2021
Statut
Membre
Dernière intervention
27 juin 2022
27 juin 2022 à 16:28
27 juin 2022 à 16:28
Bonjour Jordane,
Tout d'abord merci pour ta réponse.
En effet il était évident que je n'importais pas directement les images dans la base de données mais uniquement les chemins. La colonne "photo" de la BDD contiendra les chemins de l'image, et la colonne "photo_min" contiendra le chemin de la miniature.
Les images s'uploadent correctement sur le serveur (image grandes et miniatures) sans aucun soucis, elles apparaissent bien dans les bons formats dans les dossiers prévus.
Le problème vient pour l'insertion dans la base de données.
L'erreur PDO qui s'affiche est la suivante :
"undefined variable: sql_photos at line 18"
(j'ai adapté le n° de ligne en fonction du code plus haut, dans le deuxième bloc de code).
Pourtant j'ai vérifié plusieurs fois les données dans INSERT INTO, les noms semblent être les bons.
une idée ? Merci beaucoup
Tout d'abord merci pour ta réponse.
En effet il était évident que je n'importais pas directement les images dans la base de données mais uniquement les chemins. La colonne "photo" de la BDD contiendra les chemins de l'image, et la colonne "photo_min" contiendra le chemin de la miniature.
Les images s'uploadent correctement sur le serveur (image grandes et miniatures) sans aucun soucis, elles apparaissent bien dans les bons formats dans les dossiers prévus.
Le problème vient pour l'insertion dans la base de données.
L'erreur PDO qui s'affiche est la suivante :
"undefined variable: sql_photos at line 18"
(j'ai adapté le n° de ligne en fonction du code plus haut, dans le deuxième bloc de code).
$query_photo = $db->prepare($sql_photo);
Pourtant j'ai vérifié plusieurs fois les données dans INSERT INTO, les noms semblent être les bons.
une idée ? Merci beaucoup
jordane45
Messages postés
38397
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 janvier 2025
4 732
27 juin 2022 à 16:46
27 juin 2022 à 16:46
normal .. regarde le nom de ta variable à la ligne d'avant .... il te manque un S
lucanne212274
Messages postés
9
Date d'inscription
samedi 30 octobre 2021
Statut
Membre
Dernière intervention
27 juin 2022
27 juin 2022 à 19:31
27 juin 2022 à 19:31
Que la honte soit sur moi !!
En effet c'est bien ça. Merci beaucoup !
Parfois on cherche des erreurs tellement partout que l'on ne voit pas celle qui est grosse comme le nez au milieu de la figure.
J'ai donc bien rajouté le "s" et je n'ai plus d'erreur PDO.
Par contre, cela m'amène à un nouveau souci, seule la dernière image est insérée dans la base de donnés, les autres n'apparaissent pas sur PhpmyAdmin. Malgré le fait que le INSERT INTO soit dans la boucle foreach.
Alors que toutes sont bien créées sur le serveur.
Si jamais je peux abuser une dernière fois de vos lumières... Encore mille mercis !
En effet c'est bien ça. Merci beaucoup !
Parfois on cherche des erreurs tellement partout que l'on ne voit pas celle qui est grosse comme le nez au milieu de la figure.
J'ai donc bien rajouté le "s" et je n'ai plus d'erreur PDO.
Par contre, cela m'amène à un nouveau souci, seule la dernière image est insérée dans la base de donnés, les autres n'apparaissent pas sur PhpmyAdmin. Malgré le fait que le INSERT INTO soit dans la boucle foreach.
Alors que toutes sont bien créées sur le serveur.
Si jamais je peux abuser une dernière fois de vos lumières... Encore mille mercis !
jordane45
Messages postés
38397
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 janvier 2025
4 732
27 juin 2022 à 20:01
27 juin 2022 à 20:01
Tu ne fais l'eecute qu'une seule fois en dehors de ta boucle... donc il ne prend que la dernière..
Voici le code revu et corrigé
Voici le code revu et corrigé
<?php if (!empty($_POST['ajouter_album'])) { //récupération PROPRE des variables AVANT de les utiliser $nom_album = !empty($_POST['nom_album']) ? htmlspecialchars(strip_tags(trim($_POST['nom_album']))) : null; $date_photos = !empty($_POST['date_photos']) ? trim($_POST['date_photos']) : null; $photos_album = !empty($_FILES['photos_album']) ? $_FILES['photos_album'] : null; if ($nom_album && $date_photos) { // Pas besoin de mettre ça dans la boucle... $date_album = date('Y.m.d', strtotime($date_photos)); $path = 'img/galeries/' . $date_album . '/'; $path_min = $path . 'min/'; if (!is_dir($path)) mkdir($path); if (!is_dir($path_min)) mkdir($path_min); foreach ($photos_album['tmp_name'] as $key => $tmp_name) { postImagesToDimensions('photos_album', str_pad($key, 3, 0, STR_PAD_LEFT) . '.jpg', $path, '1920', '1280', $key); postThumbToDimensions('photos_album', 'min_' . str_pad($key, 3, 0, STR_PAD_LEFT) . '.jpg', $path_min, '300', '200', $key); $photo = postImagesToDimensions('photos_album', str_pad($key, 3, 0, STR_PAD_LEFT) . '.jpg', $path, '1980', '1280', $key); $photo_min = postThumbToDimensions('photos_album', 'min_' . str_pad($key, 3, 0, STR_PAD_LEFT) . '.jpg', $path_min, '300', '200', $key); try { $sql = "INSERT INTO `photos` (`album`, `date_album`, `photo`, `photo_min`) VALUES (:album, :date_album, :photo, :photo_min)"; $query_photo = $db->prepare($sql); $query_photo->bindValue(":album", $nom_album, PDO::PARAM_STR); $query_photo->bindValue(":date_album", $date_album_sql, PDO::PARAM_STR); $query_photo->bindValue(":photo", $photo, PDO::PARAM_STR); $query_photo->bindValue(":photo_min", $photo_min, PDO::PARAM_STR); $query_photo->execute(); } catch (Exception $e) { // echo "Erreur : " . $e->getMessage(); // Pour savoir quelle est l'erreur... echo '<script language="javascript">'; echo 'alert("Erreur d\'insertion dans la base de données !")'; echo '</script>'; exit; } } echo '<script language="javascript">'; echo 'alert("Album photos ajouté !")'; echo '</script>'; } else { echo '<script language="javascript">'; echo 'alert("Le formulaire est incomplet !")'; echo '</script>'; } } ?>
lucanne212274
Messages postés
9
Date d'inscription
samedi 30 octobre 2021
Statut
Membre
Dernière intervention
27 juin 2022
27 juin 2022 à 20:13
27 juin 2022 à 20:13
Un immense merci,
Cela fonctionne désormais !
Merci de votre précieuse aide et de votre précieux temps !
Cela fonctionne désormais !
Merci de votre précieuse aide et de votre précieux temps !