Album photos 3

Résolu
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   -  
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour
Je souhaiterai pouvoir afficher le nombre d'images par Album.
Je vous met ce que j'ai fait si vous pouvez me donner votre avis s'ils vous plait car je ne vois pas pourquoi cela ne fonctionne pas.
Merci beaucoup

mes 2 tables concernées


ma fonction qui devrait afficher le nombre d'images
function NombreImages($id_photo) {

	global $bdd;
    
	$sql = "SELECT *
			FROM tb_photo
			WHERE rid_album = :id_photo";
	$requete = $bdd->prepare($sql);
	$requete->execute(array('id_photo' => $id_photo,));
    $donnees = $requete->fetch();
    $total = $requete->rowCount();
    
    if ($total > 0) {
        return $total;
    } else {
        return "0";
    }
}

lien pour afficher le formulaire afin d'afficher le formulaire ajout_photo et l'appel de la fonction"NombreImages()"
<?php
	$sql = "SELECT *
			FROM tb_album
			ORDER BY annee_album";
	$requete = $bdd->prepare($sql);
	$requete->execute();
	$donnees = $requete->fetch();
	$total = $requete->rowCount();

	if ($total > 0) {
?>

<div id="NbImage">
	<table cellpadding="0" cellspacing="0" border="0">
		<tr class="titre">
			<th>Année Album</th>
			<th>Ajouter Images</th>
			<th>Supprimer</th>
			<th>Modifier</th>
		</tr>
		<?php do { ?>
		<tr>
			<td><?php echo $donnees['annee_album']; ?></td>
			<td>
				<a href="./index.php?body=ajout_photo&type=ajouter&id_album=<?php echo $donnees['id_album']; ?>">
				(<?php echo NombreImages(isset($donnees['id_photo'])); ?>) Images</a>
			</td>
		</tr>
		<?php } while($donnees = $requete->fetch()) ?>
	</table>
	
	<?php } else { echo "<p class='erreur'>Il n'y a pas d'Albums de définis.</p>"; } ?>
</div>

Merci beaucoup
A voir également:

5 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

echo NombreImages(isset($donnees['id_photo']));

-> ta fonction NombreImages() attend en paramètre l'identifiant de la photo, or tu lui passes un booléen avec le retour de la fonction isset().
Pas besoin d'utiliser isset() ici car $donnees['id_photo'] sera toujours défini.

Soit tout simplement :
echo NombreImages($donnees['id_photo']);


Petite optimisation : la requête de ta fonction NombreImage pourrait être simplifier comme ceci :
SELECT count(*) FROM tb_album

Tu peux ainsi récupérer directement le nombre d'album uniquement avec le fetch sans devoir utiliser rowCount().

Bonne journée
0
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour,
Merci de ton retour, en fait je ne comprends pas très bien si je met pas le isset j'ai un message en disant:
Notice: Undefined index: id_photo in C:

C'est bizarre en fait, c'est pour cela que j'avais rajouté isset.
Par contre je me demande pourquoi ça n'affiche pas le nombre d'images par Album, ma fonction est-elle bonne?
pourquoi dis-tu que je passe un booléen en paramètre, je passe bien id_photo.
Merci pour ton aide et excuse moi de mon ignorance j'essaie de comprendre.
Merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

<?php
 $sql = "SELECT *
   FROM tb_album
   ORDER BY annee_album";
 $requete = $bdd->prepare($sql);
 $requete->execute();
 $donnees = $requete->fetchall();

  $total = count($donnees);
  
 if ($total > 0) {
?>

<div id="NbImage">
 <table cellpadding="0" cellspacing="0" border="0">
  <tr class="titre">
   <th>Année Album</th>
   <th>Ajouter Images</th>
   <th>Supprimer</th>
   <th>Modifier</th>
  </tr>
  <?php foreach( $donnees as $R){
    $id_photo = $R['id_photo'];
    $id_album = $R['id_album'];
    $annee_album= $R['annee_album'];
   ?>
 
  <tr>
   <td><?php echo $annee_album; ?></td>
   <td>
    <a href="./index.php?body=ajout_photo&type=ajouter&id_album=<?php echo $id_album; ?>">
    (<?php echo NombreImages($id_photo); ?>) Images</a>
   </td>
  </tr>
  <?php } ?>
 </table>
 
 <?php } else { echo "<p class='erreur'>Il n'y a pas d'Albums de définis.</p>"; } ?>
</div>




function NombreImages($id_photo) {
 global $bdd;
    
 $sql = "SELECT count(*) as NB
   FROM tb_photo
   WHERE rid_album = :id_photo";
   
 $params = array('id_photo' => $id_photo);
 
 $requete = $bdd->prepare($sql);
 $requete->execute($params);
  $donnees = $requete->fetchall();
  $total = $donnees[0]['NB'];
   
  return $total ? $total : 0;
}


Cordialement,
Jordane
0
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour
Merci pour v0tre aide.
Malheureusement j'ai des erreurs, variables non définie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour
Merci pour tout en fait j'ai trouvé la solution.
Merci encore
0