login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Gegevens filteren voordat ze uitgelezen/weergegeven worden (Opgelost)

Offline IndexS - 17/10/2012 10:24
Avatar van IndexSMySQL interesse Ik ben met een vergelijkingstabel bezig en loop tegen het volgende probleem aan.

In de tabel staan gegevens van providers en hun abonnementen.
Deze abonnementen hebben een internetsnelheid en deze kunnen variëren - 30Mb, 50Mb, 60Mb, 100Mb en 200Mb.

Het weergeven van alles is geen probleem, maar nu zou ik bijvoorbeeld met behulp van checkboxen een soort van filter maken zodat je kan kiezen welke abonnementen je ziet aan de hand van de gekozen snelheden.

Iemand hier ervaring mee die me op weg kan helpen?
Alvast bedankt!


9 antwoorden

Gesponsorde links
Offline vinTage - 17/10/2012 10:52
Avatar van vinTage Nieuw lid Iets in deze strekking?

  1. <?php
  2. if(isset($_POST['go']))
  3. {
  4. $query = "select foo from bar";
  5.  
  6. if(isset($_POST['cb']))
  7. {
  8. $b=false;
  9. foreach($_POST['cb'] as $extra)
  10. {
  11. if(!$b)
  12. {
  13. $query .= ' where iets = '. $extra;
  14. $b = true;
  15. }
  16. else
  17. {
  18. $query .= ' or iets = '.$extra;
  19. }
  20. }
  21. }
  22. echo $query;
  23. }
  24. ?>
  25.  
  26. <form action="" method="post">
  27. <input name="cb[]" type="checkbox" value="10" /><br />
  28. <input name="cb[]" type="checkbox" value="20" /><br />
  29. <input name="cb[]" type="checkbox" value="30" /><br />
  30. <input name="cb[]" type="checkbox" value="40" /><br />
  31. <input name="cb[]" type="checkbox" value="50" /><br />
  32. <input name="go" type="submit" value="go" />
  33. </form>
Bedankt door: IndexS
Offline IndexS - 17/10/2012 19:04
Avatar van IndexS MySQL interesse De query wordt nu samengesteld zoals ik het bedoelde. Maar de query is nog niet helemaal goed of ik doe iets niet goed ;).

  1. SELECT prijs FROM vergelijk WHERE providers = kpn OR providers = tele2 OR providers = upc


Moeten er geen '' om de namen van de providers?

  1. SELECT prijs FROM vergelijk WHERE providers = 'kpn' OR providers = 'tele2' OR providers = 'upc'


Maar dan de vraag; Hoe krijg je die erom heen? Heb al verschillende dingen geprobeerd, maar krijg dan steeds een foutmelding.  
Offline vinTage - 17/10/2012 20:00
Avatar van vinTage Nieuw lid lol 
  1. $query .= ' where iets = "'. $extra.'"';
  2. $query .= ' or iets = "'.$extra.'"';
Bedankt door: IndexS
Offline marten - 18/10/2012 09:12
Avatar van marten Beheerder Waarom los je het niet op met jQuery (of ander framework) ? Je kan veel sneller schakelen en de gebruiker bepaalt zelf wat hij / zij wil zien.

Als je iedere rij / kolom een class meegeeft en vervolgens door middel van de checkbox checken of deze gechecked is de rij/kolom al dan niet zichtbaar maken?
Offline IndexS - 18/10/2012 11:25
Avatar van IndexS MySQL interesse @vinTage: Ik had het wel goed, maar had een spelfout in de code zitten.  

@marten: Een andere oplossing is prima, maar ik heb op dit moment helaas geen tijd om me in jQuery te verdiepen aangezien ik al tijd tekort kom.  
Offline marten - 18/10/2012 11:44
Avatar van marten Beheerder Het is een oplossing dat 10 minuten kost. Dat is minder dan de tijd dat je met de bovenstaande bezig was en het is mooier 
Offline IndexS - 18/10/2012 11:56 (laatste wijziging 18/10/2012 15:43)
Avatar van IndexS MySQL interesse Ok dat het mooier is geloof ik, maar qua tijd niet helemaal. Het kost me een hoop tijd om met er in te verdiepen. Maar je mag me wel op weg helpen. Kan er altijd wat van leren.  


Nu heb ik 3 checkboxen; snelheid, prijs en provider. Alle 3 los werken prima, maar hoe kan ik het beste dit combineren? Dus een goede query maken zodat de juiste gegevens weergegeven worden.

  1. SELECT * FROM vergelijk WHERE provider = "KPN" OR "TELE2" AND snelheid = "50" OR "100" AND prijs = "25" OR "35"
Offline marten - 18/10/2012 15:47
Avatar van marten Beheerder Je moet om elke vergelijking ( ) zetten anders werkt het niet goed. Verder de kolom herhalen

(provider = kpn OR provider = tele2) AND (snelheid = 50 OR snelheid = 100) AND ....
Bedankt door: IndexS
Offline IndexS - 18/10/2012 16:12 (laatste wijziging 19/10/2012 15:24)
Avatar van IndexS MySQL interesse Het was even een voorbeeld van wat ik wil krijgen als query. 
De code van vinTage probeer ik aan te passen zodat ik alle aangevinkte opties van de 3 verschillende checkboxen in 1 query krijg. Maar dat lukt me niet. 

Nu heb ik 3 losse queries.
WHERE provider = "KPN" OR "TELE2"
WHERE snelheid = "50" OR "100"
WHERE prijs = "25" OR "35"

EDIT:
Deze code werkt zoals ik het wil hebben. Maar of het helemaal netjes is vraag ik me af.  
Als er een nettere betere oplossing is dan sta ik open voor suggesties.

Plaatscode: 141974
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.216s