PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 23-01-2010 18:24:16

t14
Membre
Inscription : 10-09-2009
Messages : 96

modifier et afficher dernière photo d'une série

Bonjour,

J'ai créé un album photo en php. Une première table contient le titre et sous-titre de l'album. Une deuxième table contient les photos, qui ont pour identifiant unique "idph", et sont reliées à la première table par le champ "idliaison". Donc, toutes les photos du même album (même titre et même sous-titre) ont la même valeur pour le champ "idliaison".
Je visionne les photos une par une à l'écran pour le même album. J'ai placé au-dessus de chaque photo des flèches qui mènent à la photo suivante ou précédente. Mais après la dernière photo de l'album, là où l' "idliaison" change (car la photo qui suit ne fais pas parti du même album), je voudrais rester affiché sur cette dernière photo, ou afficher la dernière photo de l’album sans la flèche « suivant ». Et je ne sais pas comment faire …. Comment repérer qu’on lit de dernier élément d’une série choisie, et modifier sa présentation ? neutral

Là, j’affiche mes photos une par une :

$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.photo, photos.commentaire
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
WHERE idph < '$idph' AND idliaison = '$idliaison' ORDER BY photos.idph DESC LIMIT 1";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );

while($row = mysql_fetch_array($result))

{
echo '<center><b><u>'. $row['titre_album'] .'</u></b><p>';
echo '<i>'. $row['soustitre'] .'</i><p>';
echo '<a href = "photo_prec.php?idph='.$row['idph']. ' & idliaison='. $row['idliaison'] .'"><IMG src="images/back.gif" border=0 alt="Photo Précédente" width="27" height="30"></A>' ;
echo '<a href = "alb_photos.php"><IMG src="images/retour.gif" border=0 alt="Retour Album Photos" width="28" height="30"></A>' ;
echo '<a href ="photo_suiv.php?idph='. $row['idph'] .' & idliaison='. $row['idliaison'] .'"><IMG src="images/next.gif" border=0 alt="Photo Suivante" width="27" height="30"><br></a></td>';
echo '<img border=0 height="350" src="images/photos_alb/' . $row['photo'] . '"><p><h3>'. $row['commentaire'] .'</h3>';
}

echo("<p><h2>FIN DE L'ALBUM</h2></center>") ;

Avec le script tel qu’il est, arrivé sur la dernière photo de la série, j’affiche en bas, sous la photo : « FIN DE L'ALBUM ». Et si je clique sur la flèche « suivant », j’affiche uniquement (et encore) « FIN DE L'ALBUM ». hmm
A la place d’afficher « FIN DE L'ALBUM » (le premier), je souhaiterais afficher la dernière photo sans la flèche « suivant ». roll

Merci.

Dernière modification par t14 (23-01-2010 18:25:08)

Hors ligne

#2 24-01-2010 08:17:19

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : modifier et afficher dernière photo d'une série

Ce que tu cherches à faire est comparable à un affichage page par page sauf que tu n'affiche qu'un élément par page.
Je te renvoie au cours du site : http://phpdebutant.org/article84.php

Hors ligne

#3 27-01-2010 18:22:25

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : modifier et afficher dernière photo d'une série

xTG a écrit :

Ce que tu cherches à faire est comparable à un affichage page par page sauf que tu n'affiche qu'un élément par page.
Je te renvoie au cours du site : http://phpdebutant.org/article84.php

Bonjour et merci xTG. Intéressant, mais compliqué ........

J'ai tenté de l'arranger pour moi :

$idph = $_GET['idph'];

$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.numero, photos.photo, photos.commentaire
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
WHERE idph='$idph'";

$nombre = 1;  // on va afficher 1 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois on met limite à 0.
 
// permet de récupérer le nom de la page qui sera utilisé dans les liens.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];

// Compte le nombre d'enregistrements total de la table.
$select = 'SELECT count(idph) FROM photos ORDER BY idph DESC '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];    // contient le nombre d'enregistrement à afficher au total

// Calcul des limites précédente et suivante
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;

//   Affichage du lien précedent si besoin
if($limite != 0) {
    echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}

// Affichage du lien suivant si besoin
if($limitesuivante < $total) {
    echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
}

Et j'ai un message d'erreur :
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0,1' at line 1

Hors ligne

#4 27-01-2010 19:06:57

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : modifier et afficher dernière photo d'une série

Essayes cela :

$select = "SELECT count(idph) FROM photos ORDER BY idph DESC $limite,$nombre";

Hors ligne

#5 28-01-2010 08:50:25

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : modifier et afficher dernière photo d'une série

Saluton,
Et si l'erreur était dans la première requête ?
La colonne idph semble être une primary key numérique, les quotes autour de $idph y sont donc contreproductives :

WHERE idph=$idph

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 28-01-2010 11:52:01

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : modifier et afficher dernière photo d'une série

Merci à vous, mais rien à faire .....
J'ai ajouter ou enlever des ", des ', des ( ) ..... que dalle .......... sad

Le problème vient de $limite et $nombre. Si je les enlève, j'ai uniquement sur ma page "Page suivante".

Faudrait que j'essaye de me bidouiller un script moi même ! Mais alors là .......... hmm

Hors ligne

#7 28-01-2010 12:20:20

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : modifier et afficher dernière photo d'une série

Ah bah oui... Truc bête. x)

Essayes cela :

$select = "SELECT count(idph) FROM photos ORDER BY idph DESC LIMIT $limite,$nombre";

Il manquait le mot LIMIT. ^^

Hors ligne

#8 02-02-2010 15:44:05

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : modifier et afficher dernière photo d'une série

J'ai trouvé ...... big_smile

Je commence par récupérer les éléments de la photos à afficher par une requête.

Puis je teste si une photo suivante existe par une autre requête. Je met le résultat dans une variable.
Ensuite je teste si une photo précédente existe par une autre requête. Je met le résultat dans une autre variable.

Et selon le résultat des varkiablers, j'affiche ou pas les flèches suivante et précédente ! cool

Encore merci à xTG et Maljuna Kris pour leur intervention ..... tongue

A ++ big_smile

Hors ligne

#9 02-02-2010 16:50:41

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : modifier et afficher dernière photo d'une série

Ou comment créer une usine à gaz. ^^'

Hors ligne

Pied de page des forums