Jointure de tables PHP/MySQL

Résolu/Fermé
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 - 24 juil. 2009 à 20:34
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 - 27 juil. 2009 à 23:40
Bonjour,

Je souhaiterais créer une galerie pour mon site web. Je veux faire une page avec seulement des icones et des catégories et en cliquant sur l'image où le nom de la galerie on aurait accès à la page avec les photos de cette catégorie.
Un exemple : Sur la page avec la liste des catégories, il y a animaux de savanes, portraits dans la ville. Je veux qu'en cliquant sur l'icone ou "animaux de savanes" que l'internaute accède aux photos des animaux.

Voilà ce que j'ai fait pour l'instant mais ça ce ne passe pas.

<ul class="liste_icones">
<?php
$solution = mysql_query('SELECT * FROM categorie, images where images.id_categorie = categorie.id');
while ($resultats = mysql_fetch_array($solution));
{
?>
<li>
<?php echo '<a href="galerie-par-categorie.php?id_categorie=' .$resultats['id'] . '">'; ?>
<img src="images/galerie/icones/<?php echo $resultats['icone']; ?>.png" alt="" />
<br /><span class="font-icone"><?php echo $resultats['nom']; ?></span>
</a>
</li>
<?php
}
?>
</ul>

Je vous remercie pour votre précieuse aide

7 réponses

imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
25 juil. 2009 à 16:59
Si dans ta requête sql tu précise une catégorie, alors tu n'aura que celle là.

pour le reste c'est normal qu'il ne trouve pas catégorie si tu ne lui fait pas passer l'info :

nomdetapage.html?categorie=17

pour éviter les problème tu peux faire ça :
$catsql = (!empty($_REQUEST['categorie'])) ? 'AND categorie.id="'.intval($_REQUEST['categorie']).'"';
$solution = mysql_query("SELECT * FROM categorie, images where images.id_categorie = categorie.id $catsql"); 


Comme ça, il te sors toutes les photos ... sauf si tu précise une catégorie !
2
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
26 juil. 2009 à 08:10
exact ... c'est l'opérateur ternaire, j'ai oublié la fin ...
$catsql = (!empty($_REQUEST['categorie'])) ? 'AND categorie.id="'.intval($_REQUEST['categorie']).'"' : '';

voir :
https://www.commentcamarche.net/contents/787-php-structures-conditionnelles

Pour le reste, si j'ai bien compris, tu veux une première page ou on affiche la liste des catégories. et ensuite en cliquant sur l'une d'entre elle, on arrive aux photos de cette catégorie.

page 1 :

<ul class="liste_icones">
<?php
$categories = mysql_query('SELECT * FROM categorie');
while ($resultats = mysql_fetch_array($categories))
{
    echo "<li><a href='galerie-par-categorie.php?id_categorie=$resultats[id]'><img src='images/galerie/icones/$resultats[icone].png' alt='' />
    <br /><span class='font-icone'>$resultats[nom]</span>
    </a></li>";

}
?>
</ul> 


page 2 :

$images = mysql_query("SELECT * FROM images where id_categorie = ".intval($_REQUEST['id_categorie']);
while ($resultats = mysql_fetch_array($categories))
{
    echo $resultat['nom'] ;
} 



Pour la page 2, bien sur, tu complète le echo par ce que tu veux afficher.
Comme d'habitude, je ne l'ai pas testé, alors si y'a des erreurs, tu cherche d'où ça viens ...
2
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
25 juil. 2009 à 08:08
il faut juste que tu précise la catégorie recherchée dans la requête ...

$cat = $_REQUEST['cat'] // récupère la catégorie sélectionnée par l'utilisateur

et dans la requête ajoute à la fin :

AND categorie.id='$cat'

ça suffit pour ne sortir que les images de cette catégorie

1
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 9
25 juil. 2009 à 11:18
Je te remercie pour ta réponse.

J'ai mis ça :


<ul class="liste_icones">
<?php
$categorie = $_REQUEST['categorie']
$solution = mysql_query('SELECT * FROM categorie, images where images.id_categorie = categorie.id AND categorie.id="$categorie"');
while ($resultats = mysql_fetch_array($solution));
{
?>
<li>
<?php echo '<a href="galerie-par-categorie.php?id_categorie=' .$resultats['id'] . '">'; ?>
<img src="images/galerie/icones/<?php echo $resultats['icone']; ?>.png" alt="" />
<br /><span class="font-icone"><?php echo $resultats['nom']; ?></span>
</a>
</li>
<?php
}
?>
</ul>


ça me renvoie ça :

Parse error: parse error, unexpected T_VARIABLE in C:\Program Files\EasyPHP 2.0b1\www\galerie\mes-photos.php on line 27


à la ligne où il y a ma requête
0
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
25 juil. 2009 à 16:15
te manque un ; à la fin de la ligne : $categorie = $_REQUEST['categorie']

et la requete ne fonctionnera pas ... il faut inverser les " et les ' dans la ligne d'après
0

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

Posez votre question
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 9
25 juil. 2009 à 16:32
Je te remercie encore, ça me dit maintenant :
Notice: Undefined index: categorie in C:\Program Files\EasyPHP 2.0b1\www\galerie\mes-photos.php on line 26
pour la ligne où il a $categorie = $REQUEST['categorie'];
Là c'est la page où j'ai mis les categories, est-ce que je ne devrais pas mettre $categorie sur la page où il y a les photos de cette categorie ?


Autre chose, je n'ai plus toutes mes categories qui s'affichent mais seulement la première. :S

Je te remercie de m'aider car je galère un peu.
0
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 9
25 juil. 2009 à 18:52
Je suis sur la page où il a toutes les catégories. Ce que je veux c'est que toutes les catégories s'affichent mais quand la personne cliquera sur l'icone ou le nom de cette catégorie, elle aura accès aux photos de cette catégorie.
Donc il faut toujours que toutes les catégories s'affichent.
Après le clic la personne arrive sur la page où il y a toutes les photos de la categorie A car elle a cliqué sur A. Voilà ce que je veux en fait.


Le code que tu m'as donné renvoie ça :
Parse error: parse error, unexpected ';' in C:\Program Files\EasyPHP 2.0b1\www\galerie\mes-photos.php on line 26

sur la ligne où il y a $catsql.

Désolée de t'embêter encore une fois :S
0
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 9
27 juil. 2009 à 20:43
Je te remercie vraiment pour ton aide. Le code que tu m'as donné m'a ENORMEMENT aidé parce qu'il a résolu mon problème. Merci vraiment !
0
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
27 juil. 2009 à 23:40
De rien ...
Quand on peut rendre service ...

Pense à mettre un +1 sur la solution ...
0