Bonjours!
Sur l'un de mes sites, j'ai ajouté quelques pages pour la mise en ligne de photo.
Tout s'est plutôt bien déroulé: upload sans problème, les photos s'affichait bien quand on cliquait sur leur titre dans une liste.
Seulement voilà: quand on veut regarder l'album photo en entier, c'est assez lassant de revenir à chaque fois à la liste pour sélectionner la photo suivante.
Du coup, j'ai rajouté un petit bouton, permettant de passer directement à la photo d'après, qui marchait lui aussi à la perfection: les photos étant numérotées d'un id, il suffisait d'incrémenter l'id et ça marchais.
Cependant, faille insidieuse, il arrive que des photos ait été supprimées. Du coup, il y as un "trou" dans la liste des id (ex: la photo 4 supprimée, la liste d'id est: [1,2,3,5,6...]).
Bien sûr, quand on clique sur "photo suivante" depuis la photo 3, on obtiens une page blanche pour la photo 4 (logique!).
J'ai ainsi écrit un petit scrit qui vérifiais si la photo existais ou pas (en vérifiant si par exemple son nom étais différent de "") et qui, en fonction, renvoyais l'id de la photo à afficher (le suivant, ou celui d'encore après, etc.).
Voici le script:
Si la photo existe, tout ce passe bien: la variable $test passe à 1 comme prévu, la boucle s'arrête, et on peut récupérer $id pour afficher la photo.
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 <?php $test = "0"; $id = $_GET['photo']; while($test == "0") { try { $bdd = new PDO('mysql:host=localhost;dbname=ecole_db', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $req = $bdd->query('SELECT * FROM photo WHERE id = '.$id.''); while ($donnees = $req->fetch()) { if($donnees['nom'] != "") { $test = "1"; } else { $id++; } } } ?>
En revanche, si ce n'est pas le cas... Eh bien, on n'entre pas dans le if... mais pas dans le else non plus!
C'est-à-dire qu'on tourne sur une boucle infinie.
Si je sort le $id++; du else, il s’exécute correctement et la boucle se termine (mais du coup, la boucle n'as plus aucun intérêt...).
Si je rajoute quelque chose d'autre dans le else (un echo, par exemple) il ne s'exécute pas.
Je ne vois pas du tout ce qui pourrais créer cela (pour moi, si on a un if... else, on rentre forcément soit dans le if, soit dans le else?) et toute aide serait la bienvenue =)
En vous remerciant d'avance...








Répondre avec citation
Partager