Nesil
-
21 sept. 2022 à 10:18
jordane45
Messages postés38328Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 5 décembre 2024
-
21 sept. 2022 à 16:42
Bonjour,
J'ai une application qui permet d'enregistrer et d'afficher une image. Je redéfinis la taille dans mon php pour ne pas avoir beaucoup de données dans ma bdd. Mais lorsque l'image est verticale, elle ne s'enregistre pas. Et quand je lis mon code, je ne comprends pas pourquoi? Je pense que cela viens surement de mon redimensionnement.
voici ma fonction PHP :
function sauvegarderPrioOngletFenetre()
{
$response[0] = "erreur1";
$response[1] = "erreur2";
if (isset($_POST['id_prio']) && isset($_POST['texte'])) {
$response[0] = "erreur3";
$response[1] = "erreur4";
$id_prio = $_POST['id_prio'];
$id_onglet = $_POST['id_onglet'];
$texte = $_POST['texte'];
$position = $_POST['position'];
$dateid = $_POST['dateid'];
$image_aide = "";
$modifimg = "false";
// ajout de l'image au formulaire
if(isset($_FILES['photoAideDetail'])){
//var de l'image
$img = $_FILES['photoAideDetail']['name'];
$tmp = $_FILES['photoAideDetail']['tmp_name'];
// Définition de la largeur et de la hauteur maximale
$width_max = 50000;
$height_max = 50000;
// Content type
if (exif_imagetype($tmp) == IMAGETYPE_JPEG) {
header('Content-Type: image/jpeg');
} else if (exif_imagetype($tmp) == IMAGETYPE_PNG) {
header('Content-Type: image/png');
}
else if (exif_imagetype($tmp) == IMAGETYPE_JPG) {
header('Content-Type: image/jpg');
}
// Cacul des nouvelles dimensions
list($width_orig, $height_orig) = getimagesize($tmp);
$ratio_orig = $width_orig/$height_orig;
if ($width_max/$height_max > $ratio_orig) {
$width_max = $height_max*$ratio_orig;
} else {
$height_max = $width_max/$ratio_orig;
}
// Redimensionnement
if (exif_imagetype($tmp) == IMAGETYPE_JPEG) {
$image = imagecreatefromjpeg($tmp);
} else if (exif_imagetype($tmp) == IMAGETYPE_PNG) {
$image = imagecreatefrompng($tmp);
} else if (exif_imagetype($tmp) == IMAGETYPE_JPG) {
$image = imagecreatefromjpg($tmp);
}
$img = imagescale($image, 750);
imagejpeg($img, "../ImagesPrio/" . $img, 80);
$image_aide = file_get_contents("../ImagesPrio/" . $img);
$modifimg = "true";
}
$dbcontroller = new DBController();
//si l'id prio est 0 donc c'est une nouvelle prio on fait un insert
if ($id_prio == 0) {
$remonte = 1;
$stmt = mysqli_prepare($dbcontroller->getConn(), "INSERT INTO prio(dateid, texte, image_aide, position, id_onglet, remonte) VALUES (?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssiii', $dateid, $texte, $image_aide, $position, $id_onglet, $remonte);
$data = $dbcontroller->executeQueryMSQL($stmt);
$id_prio_origin = $stmt->insert_id;
if ($data) {
$response[0] = "Priorité sauvegardée !";
//on remonte une prio dans un autre onglet si necessaire
$stmt2 = mysqli_prepare($dbcontroller->getConn(), "SELECT * FROM onglet WHERE id_onglet = ?");
mysqli_stmt_bind_param($stmt2, 'i', $id_onglet);
$data2 = $dbcontroller->executeSelectQueryMSQL($stmt2);
if($modifimg == "true"){
if ($data2) {
$ongletremonte = $data2[0]['id_remonte_onglet'];
$stmt3 = mysqli_prepare($dbcontroller->getConn(), "INSERT INTO prio(dateid, texte, image_aide, position, id_onglet, id_prio_origin, remonte) VALUES (?, ?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt3, 'sssiiii', $dateid, $texte, $image_aide, $position, $ongletremonte, $id_prio_origin, $remonte);
$data3 = $dbcontroller->executeQueryMSQL($stmt3);
if ($data3) {
$response[0] = "Priorité sauvegardée et remontée dans un autre onglet 1!";
}
}
}elseif($modifimg == "false"){
if ($data2) {
$ongletremonte = $data2[0]['id_remonte_onglet'];
$stmt3 = mysqli_prepare($dbcontroller->getConn(), "INSERT INTO prio(dateid, texte, image_aide, position, id_onglet, id_prio_origin, remonte) VALUES (?, ?, NULL, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt3, 'ssiiii', $dateid, $texte, $position, $ongletremonte, $id_prio_origin, $remonte);
$data3 = $dbcontroller->executeQueryMSQL($stmt3);
if ($data3) {
$response[0] = "Priorité sauvegardée et remontée dans un autre onglet 2!";
}
}
}
} else {
$response[1] = "Priorité non sauvegardée";
}
}
//ob_clean();
return json_encode($response);
}
Et voici mon JavaScript associé :
function sauvegarderPrioOngletFenetre(){
//pour charque prio on recupere l'id et le text à inserer en bdd
$("#priorite").find('.prioDiv').each(function() {
var id_prio = $(this).data("id-prio");
var id_onglet = $(this).data("id-onglet");
if(id_onglet == ""){
id_onglet = document.getElementById("idOG").value;
}
var position = $(this).data("position");
var week = $("#semainePrio").text();
var jour = $("#selectJourPrio").val();
var dateid = week + "-D" + jour;
//A changer pour le pilote
var texte = "";
//recupere le texte de la prio
$(this).find("textarea").each(function() {
texte = $(this).val();
});
//si la prio est vide on la sauvegarde pas
vide = texte.replace(/\s/g, "");
if(vide == ""){
}else{
// Methode ajout dans tableau
var l = new FormData();
l.append('id_prio',id_prio);
l.append('texte',texte);
l.append('position',position);
l.append('id_onglet',id_onglet);
l.append('dateid',dateid);
if (document.getElementById(`photoAideDetail${position}`).files.length > 0) {
l.append('photoAideDetail', jQuery(`#photoAideDetail${position}`)[0].files[0]);
// jQuery.each(jQuery(`#photoAideDetail${position}`)[0].files, function (i, file) {
// l.append('photoAideDetail', file);
// });
}
$.ajax({
cache:false,
url: "data/sauvegarderPrioOngletFenetre",
type: "POST",
async: false,
data: l,
processData: false,
contentType: false,
success:function(response, status){
console.log(65, response);
console.log(66, l.append('photoAideDetail',jQuery(`#photoAideDetail${position}`)));
response = JSON.parse(response);
if(response[0] == "erreur1" && response[1] == "erreur2"){
erreur('Une erreur est survenu lors de la sauvegarde!');
}else{
if(response[0] == "erreur1"){
erreur(response[1]);
}else{
reussite(response[0]);
}
}
},
error: function(response, status){
}
});
}
});
et dans ma console, cela me montre:
65 '["erreur3","Priorit\u00e9 non sauvegard\u00e9e"]'
Mon problème est resolue. Cela venait de ma bdd, j'ai juste changé le type blob de ma variable en longblob
jordane45
Messages postés38328Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 5 décembre 20244 713
>
Nesil
21 sept. 2022 à 16:42
A noter qu'il est fortement déconseillé de stocker des fichiers directement dans une BDD.
A la place, on la met dans un dossier du serveur, et en bdd, on ne stocke que son chemin.
SInon tu vas vite remplir ta bdd et la ralentir ..
21 sept. 2022 à 16:35
merci beaucoup.
Mon problème est resolue. Cela venait de ma bdd, j'ai juste changé le type blob de ma variable en longblob
21 sept. 2022 à 16:42
A noter qu'il est fortement déconseillé de stocker des fichiers directement dans une BDD.
A la place, on la met dans un dossier du serveur, et en bdd, on ne stocke que son chemin.
SInon tu vas vite remplir ta bdd et la ralentir ..