tag filter in PHP en MYSQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco Hendriks

Marco Hendriks

29/03/2013 13:50:49
Quote Anchor link
Ik ben bezig met een afstudeer project waarin ik tags wil geven aan onderwerpen en deze wil ik uit eindelijk uit filteren.

Wat ik nu werkend heb is dat ik 2 tags heb media en kunst deze kan ik beide appart laden. Alleen ik weet nu niet hoe ik alles moet laden en ik heb nu alleen nog maar 1 tag per onderwerp uit eindelijk moeten het er natuurlijk meer worden.

Dit is de code die ik nu heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
    if(isset($_POST['mediatag'])) {
            $tag = mysql_real_escape_string($_POST['mediatag']);
        }
else if(isset($_POST['kunsttag'])) {
            $tag = mysql_real_escape_string($_POST['kunsttag']);
        }
else if(isset($_POST['alltag'])) {
            $tag = mysql_real_escape_string($_POST['alltag']);
        }
else {
            $tags = 'all';
        }
                            
        
        //$result = mysql_query("SELECT * FROM `bestanden` ORDER BY $order $order2 LIMIT 2000");
        $result = mysql_query("SELECT * FROM `bestanden` WHERE tags ='".$tag."' ");
        $num_rows = mysql_num_rows($result);
    ?>
    

      <div class="timelinecontainer">

      <b>Aantal documenten:</b> <? echo $num_rows; ?>
      </div>

    <div class="timelinescroll">
        <div class="timeline" style="width:<?echo $num_rows*65;?>px;">
            
            <?                        
            while($row = mysql_fetch_array($result)){
               ?>
  
                     <a href="#"><div class="<?echo $row['class'];?>"><?echo $row['id'];?></div></a>    
            <?            
              }
              ?>

        </div>
    </div>    

<div class="checkboxwrapper">
        <b>Thema:</b><br/>
          <div class="checkboxbox">
            <form action="index2.php" method="post">
                <input type="hidden" name="mediatag" value="media"/>
                <input type="submit" value="Media">
            </form>
            
            <form action="index2.php" method="post">
                <input type="hidden" name="kunsttag" value="kunst"/>
                <input type="submit" value="Kunst">
            </form>
        </div>
        
        <div class="checkboxbox">
              <form action="index2.php" method="post">
                <input type="hidden" name="alltag" value="all"/>
                <input type="submit" value="Alles">
            </form>
        </div>             
    </div>
Gewijzigd op 29/03/2013 13:57:33 door Marco Hendriks
 
PHP hulp

PHP hulp

26/04/2024 00:21:22
 
Ivo Breeden

Ivo Breeden

30/03/2013 22:21:25
Quote Anchor link
Marco,
Het belangrijkste wat je je moet realiseren is dat je WHERE clausule heel anders wordt als je alles wilt zien.
Wat staat er in de column `tags`? Ik denk dat daar in kan staan: 'media', 'kunst' en misschien nog wel andere dingen. Maar er kan niet zowel 'media' als 'all' staan.
Om zowel 'media' als 'kunst' op te vragen moet je query er dus als volgt uitzien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT *
FROM `bestanden`
WHERE tags in ('kunst', 'media');

Als er niets anders dan 'kunst' en 'media' in kan staan zou je de WHERE clausule ook helemaal weg kunnen laten.

De manier waarop je de keuze maakt maakt is overigens, hoe zal ik het zeggen, onconventioneel. Je gebruikt drie forms en maakt uiteindelijk je beslissing op basis van de veldnaam. Gebruikelijk is om 1 veld/variabele te gebruiken en de inhoud daarvan te gebruiken voor de keuze. Kennelijk wil je per sé 'POST' gebruiken. Maar in dit geval zou je beter 'GET' kunnen kiezen, dan kun je volstaan met drie links. En anders zou je een form met checkboxen of radio buttons kunnen gebruiken.

Succes,
Ivo
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.