Bonsoir à tous,
En croyant que j'avais trouvé mon problème, j'ai mis mon ancien poste en résolu, j'ai voulu changer la taille de l'image en modifiant dans mon code et rebolote le même problème !
Voici un récapitulatif : j'upload une image nom.png avec une fonction resizedImage il en créer une deuxième en l'appellant nom_230x135.png, jusque là pas de soucis mon fichier existe bien dans img/works/nom_230x135.png.
Le soucis c'est que l'image ne s'affiche pas sur le site, en inspectant mes éléments, il met img/works/_230x135. il manque donc le nom et l'extension. Voici mon code :
La fonction resizedName, ici apparemment il n'y à pas d'erreur :
function resizedName($file, $width, $height){
$info = pathinfo($file);
$return = '';
if($info['dirname'] != '.'){
$return .= $info['dirname'] . '';
}
$return .= $info['filename'] . "_$width". "x$height." . $info['extension'];
return $return;
var_dump($info['dirname']);
}
l'envoie de l'image :
$work_id = $db->quote($_GET['id']);
$files = $_FILES['images'];
$images = array();
require '../lib/image.php';
foreach($files['tmp_name'] as $k => $v){
$image = array(
'name' => $files['name'][$k],
'tmp_name' => $files['tmp_name'][$k]
);
$extension = pathinfo($image['name'], PATHINFO_EXTENSION);
if(in_array($extension, array('jpg','png'))){
$db->query("INSERT INTO images SET work_id=$work_id");
$image_id = $db->lastInsertId();
$image_name = $image_id . '.' . $extension;
move_uploaded_file($image['tmp_name'], '../img/works/' . $image_name);
resizeImage('../img/works/' . $image_name, 220,135);
$image_name = $db->quote($image_name);
$db->query("UPDATE images SET name=$image_name WHERE id=$image_id");
}
}
index.php :
<div class="row">
<?php foreach ($works as $k => $work): ?>
<div class="col-sm-3">
<a href="<?= WEBROOT; ?>realisation/<?= $work['slug']; ?>">
<img src="img/works/<?= resizedName($work['image_name'], 220, 135); ?>" alt="">
<?php var_dump($work['image_name']);?>
<h2><?= $work['name']; ?></h2>
</a>
<em><?php echo "{$work['category_name']}"; ?></em>
</div>
<?php endforeach ?>
Comme vos m'aviez conseillé je fait un var_dump($work['image_name']); et il me dit qu'il est vide. Le fichier existe bien à l'endroit souhaité.
Désolé pour le double sujet et je vous remercie de votre aide qui m'aide toujours autant !
J'ai trouvé le véritable soucis, c'est la base de donnée qui n'avait pas mis à jour l'id de l'image dans la table works. Je penses que c'est dû d'un beug de mysql parce que j'ai modifier une autre image, il a bien pris en compte. Il fallait le trouvé, moi qui m'acharnait sur mon code ! :)
Pour information, avant que vous me le demandez, dans index.php il y a ce code php :
$works = $db->query("
SELECT works.name, works.id, works.slug, categories.name as category_name, images.name as image_name
FROM works
LEFT JOIN images ON images.id = works.image_id
LEFT JOIN categories ON categories.id = works.category_id
")->fetchAll();
Pour simplifier un peu, pour prendre en compte seulement ceux qui nous intéresse :
$works = $db->query(" SELECT images.name as image_name FROM works LEFT JOIN images ON images.id = works.image_id")->fetchAll();
C'est pourquoi je lis dans $work['image_name'];