Bonsoir,
J'ai un souci avec l'insertion des liens (d'images) en BDD.
Faut savoir que je gère un site de petites annonces. Lorsque l'utilisateur upload une image, je compresse celle-ci pour l'affichage sur la page d'accueil et j'enregistre la version non compressée, pour l'affichage au clic.
J'ai fais en sorte que le lien d'une image par défaut soit enregistrée en BDD, lorsque l'utilisateur n'upload aucune image. Mais parfois, lorsqu'on upload une image, on se rend compte que c'est l'image par défaut qui est enregistrée en BDD. J'ai constaté que ce problème survient parfois, lorsque l'image fais une certaine taille (compression qui échoue?). En effets, je n'ai jamais constaté ce problème lors de l'upload d'images faisant une trentaine de kilos. Parfois, lors de l'upload de x images, x-1 sont enregistrées en BDD.
Voici mon formulaire d'upload (j'utilise mini ajax upload form):
mon script php d'upload:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 <?php session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Ajoutez des photos</title> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"> <!-- Google web fonts --> <link href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700" rel='stylesheet' /> <!-- The main CSS file --> <link href="assets/css/style.css" rel="stylesheet" /> </head> <body> <div id="conteneur"> <form id="upload" method="post" action="upload.php" enctype="multipart/form-data"> <div id="drop"> Ajoutez des photos <a>ICI</a> <input type="file" name="upl" multiple /> </div> <ul> <!-- The file uploads will be shown here --> </ul> </form> <style type="text/css"> a{ text-decoration: none; } input[type="button"]{ width: 150px; height: 40px; position:relative; left: 50%; right: 50%.; } </style> <a href="traitement_chemin.php"><input type="button" value="Terminer" /></a> <!-- JavaScript Includes --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="assets/js/jquery.knob.js"></script> <!-- jQuery File Upload Dependencies --> <script src="assets/js/jquery.ui.widget.js"></script> <script src="assets/js/jquery.iframe-transport.js"></script> <script src="assets/js/jquery.fileupload.js"></script> <!-- Our main JS file --> <script src="assets/js/script.js"></script> </div> </body> </html>
Et si besoin, ma page d'insertion en BDD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <?php session_start(); // A list of permitted file extensions $allowed = array('png', 'jpg', 'gif'); if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){ $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION); if(!in_array(strtolower($extension), $allowed)){ echo '{"status":"error"}'; }else{ if($_FILES['upl']['size']<=8097152){ $upl_name = $_FILES['upl']['size']; $image_choisie = imagecreatefromjpeg($_FILES['upl']['tmp_name']); $taille_image_choisie = getimagesize($_FILES['upl']['tmp_name']); $nouvelle_largeur = 200; $reduction = (($nouvelle_largeur * 100)/$taille_image_choisie[0]); $nouvelle_hauteur = (($taille_image_choisie[1] * $reduction)/100); $nouvelle_image = imagecreatetruecolor($nouvelle_largeur,$nouvelle_hauteur) or die ("Erreur"); imagecopyresampled($nouvelle_image, $image_choisie, 0, 0, 0, 0, $nouvelle_largeur, $nouvelle_hauteur, $taille_image_choisie[0],$taille_image_choisie[1]); $name = time(); imagejpeg($nouvelle_image,"upload_pics/$name.{$extension}",100); $nom = uniqid(); move_uploaded_file($_FILES['upl']['tmp_name'], "pics/$nom.{$extension}"); $_SESSION['compteur'] = $_SESSION['compteur'] + 1; $_SESSION['chemin'][$_SESSION['compteur']-1] = "pics/$nom.{$extension}"; $_SESSION['chemin_tumb'][$_SESSION['compteur']-1] = "upload_pics/$name.{$extension}"; }else{ echo 'Votre photos doit faire moins de 8Mo'; exit(); } } } echo '{"status":"error"}';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <?php session_start(); try{ $bdd = new PDO('mysql:host=localhost;dbname=bddName;charset=utf8','blabla','password',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e){ die('Erreur : '.$e ->getMessage()); } if(!empty($_SESSION['chemin']) AND !empty($_SESSION['chemin_tumb'])){//Si l'on a choisit d'upload une image if(isset($_SESSION['psd'])){//Si l'on est un membre du site $req = $bdd->prepare('UPDATE nomTable SET annoncePubliee = :mon_annonce ,miniatures = :tumb WHERE (titre = :titre AND description = :description AND categorie = :cat AND possesseur = :moi)'); $req->execute(array(':ma_vente'=>implode("$", $_SESSION['chemin']),':tumb'=>implode("$", $_SESSION['chemin_tumb']),':titre'=>$_SESSION['titre'],':description'=>$_SESSION['com'],':cat'=>$_SESSION['cat'],':moi'=>$_SESSION['psd'])); }else{ $req = $bdd->prepare('UPDATE nomTable SET annoncePubliee = :mon_annonce, miniatures = :tumb WHERE (titre = :titre AND description = :description AND categorie = :cat AND possesseur = :moi)'); $req->execute(array(':mon_annonce'=>implode("$", $_SESSION['chemin']),':tumb'=>implode("$", $_SESSION['chemin_tumb']),':titre'=>$_SESSION['titre'],':description'=>$_SESSION['com'],':cat'=>$_SESSION['cat'],':moi'=>$_SESSION['pseudo'])); } }else{ $req = $bdd->prepare('UPDATE nomTable SET annoncePubliee = :mon_annonce ,miniatures = :tumb WHERE (titre = :titre AND description = :description)'); $req->execute(array(':ma_vente'=>"images/tools.png",':tumb'=>"images/tools.png",':titre'=>$_SESSION['titre'],':description'=>$_SESSION['com'])); } //On supprime toutes les variables qu'on a utilisé pour l'annonce unset($_SESSION['cat']); unset($_SESSION['titre']); unset($_SESSION['com']); unset($_SESSION['prix']); unset($_SESSION['campus']); unset($_SESSION['numero']); unset($_SESSION['numeroDeux']); unset($_SESSION['ad_mail']); /*unset($_SESSION['mail']);*/ unset($_SESSION['pseudo']); unset($_SESSION['chemin']); unset($_SESSION['chemin_tumb']); unset($_SESSION['compteur']); $_SESSION['post_ok']=1; header('location:redirection_annonce_publiee.php'); ?>
Partager