Bonjour,
Je viens de chercher pendant plus d'une journée sans trouver ce que je cherchais. J'ai peut être mal cherché, je ne dit pas le contraire
Voilà mon problème. Je suis en train de créer un script de PTC contenant une possibilité de s'échanger des clics via des points. Sur la page ou tous les liens (avec ou sans bannières) se trouve un formulaire dont la fonction sera de trier les liens qui se trouvent sous ce dernier.
Chaque lien à un titre, une catégorie et une bannière sur cette page. Le formulaire propose via des boutons radio de choisir parmis les options suivantes "Tout, Avec bannière, Sans bannière" tandis que les catégories sont dans une une liste à choix multiple.
J'arrive bien à trier les liens avec bannières et sans bannière tout mais lorsque je choisis plus d'une catégorie, tout rate. Est ce qu'il est possible d'avoir plus d'une donnée dans une condition WHERE? C'est peut être ça qui fait tout rater.
Voici le code de la page en question
Code php : 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 <fieldset> <legend><span>Filtre</span></legend> <form method="post" action=""> <input type="radio" name="filtre" value="tout" CHECKED>Tout <input type="radio" name="filtre" value="banniere" >Avec bannière <input type="radio" name="filtre" value="texte" >Sans bannière <select name="categorie[]" size="1" multiple="multiple"> <?php $selection=mysql_query("SELECT * FROM categorie ORDER BY nom"); while($message = mysql_fetch_assoc($selection)) { ?> <OPTION VALUE="<?php print($message['id']);?>"><?php print($message['nom']); ?> <?php } ?> </select> <input type="submit" class="formsubmit" title="On ne clique qu'une seule fois ;)" value="Mettre un filtre" /> </form> </fieldset> <?php if(isset($_POST['filtre'])) { if ($_POST['filtre']=="banniere") { $filtre_ban = "%.%"; } elseif ($_POST['filtre']=="texte") { $filtre_ban = ""; } elseif ($_POST['filtre']=="tout") { $filtre_ban = "%"; } } if(isset($_POST['categorie'])) { $cat = ""; foreach ($_POST['categorie'] as $categorie) { $cat .= "$categorie,"; } $cat = implode(',',$_POST['categorie']); } else { $cat = "%"; } echo "$_POST[filtre] $cat"; //Une connexion SQL doit être ouverte avant cette ligne... $retour_total = mysql_query('SELECT COUNT(*) AS total FROM site_membre WHERE id_user="'.$_SESSION['id'].'" AND valide="1" AND point>"0" AND banniere LIKE "'.$filtre_ban.'" AND categorie LIKE "'.$cat.'"'); //Nous récupérons le contenu de la requête dans $retour_total $donnees_total = mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau. $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total. //Nous allons maintenant compter le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) // Si la variable $_GET['page'] existe... { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages... { $pageActuelle=$nombreDePages; } } else // Sinon { $pageActuelle=1; // La page actuelle est la n°1 } $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire // La requête sql pour récupérer les messages de la page actuelle. $retour_messages=mysql_query('SELECT * FROM site_membre WHERE id_user="'.$_SESSION['id'].'" AND valide="1" AND point>"0" AND banniere LIKE "'.$filtre_ban.'" AND categorie LIKE "'.$cat.'" LIMIT '.$premiereEntree.', '.$messagesParPage.''); echo '<center><table border="01" align="center" cellpadding="02" cellspacing="0"> <th>Site</th><th>Reçu</th>'; while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle { //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design... //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message. echo " <tr> <td><a href='?id=$donnees_messages[id]'>"; if (empty($donnees_messages['banniere'])) { echo "$donnees_messages[titre]"; } else { echo "<img src='$donnees_messages[banniere]' />"; } echo" </a></td><td>".stripslashes($donnees_messages['clic_reçu'])."</td> </tr>"; } echo "</table></center>"; echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle { //On va faire notre condition if($i==$pageActuelle) //Si il s'agit de la page actuelle... { echo ' [ '.$i.' ] '; } else //Sinon... { echo ' <a href="clic-echange.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>'; ?>
Si quelqu'un sait m'aider, je le remercie d'avance. Je crois que je vois trop loin par rapport à mes connaissances.
Partager