Affichage image redimensionnée (non résolu)

Par humanoid89, il y a 11 ans


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 !

2 réponses

humanoid89, il y a 11 ans

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'];

humanoid89, il y a 11 ans

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 ! :)