Posez votre question Signaler

Jointure de tables PHP/MySQL [Résolu]

Delphine97224 84Messages postés 6 juillet 2009Date d'inscription 8 septembre 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

Jointure de tables PHP/MySQL »

9 réponses
Réponse
+2
moins plus
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 !
Ajouter un commentaire
Réponse
+2
moins plus
exact ... c'est l'opérateur ternaire, j'ai oublié la fin ...
$catsql = (!empty($_REQUEST['categorie'])) ? 'AND categorie.id="'.intval($_REQUEST['categorie']).'"' : '';

voir :
http://www.commentcamarche.net/contents/php/phpcond.php3

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 ...
Ajouter un commentaire
Réponse
+1
moins plus
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

Ajouter un commentaire
Réponse
+0
moins plus
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
imw- 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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 !
imw- 27 juil. 2009 à 23:40
De rien ...
Quand on peut rendre service ...

Pense à mettre un +1 sur la solution ...
Ajouter un commentaire
Ce document intitulé « Jointure de tables PHP/MySQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?