Toon posts:

Table filter

Pagina: 1
Acties:

Onderwerpen

Vraag


  • sgouman
  • Registratie: juli 2013
  • Laatst online: 27-11 20:35
Ik weet niet of het hier thuishoort.
Ik heb nu een simpele inventory management systeem gemaakt voor ons bedrijf. Hij is eigenlijk af behalve 1 ding.

Wat ik geen idee van heb hoe ik het zou moeten doen

Ik heb nu dit:


Nu staat hier geen regel in voor als het product erbij komt maar dat komt er dus wel dan staat er onder aantal ipv -1 gewoon 1

Nu heb ik deze mysql query om alles op te halen.
$sql = "SELECT * FROM mutaties, products WHERE product_id=products.id AND `aantal` < 0";

Ja ik haal nu alleen op van alles kleiner dan 1 bij aantal.

Maar wat ik wil is alles ophalen en dan aan de hand van de checkboxen in de afbeelding uitgaand en inkomend dat als je dus uitgaand selecteert dat je dan alleen de rows ziet waar het aantal een - value is. Bij inkomend zie je de values met de gewone waardes bij aantal. En bij beide aanklikken zie je alles.

Dit is de volledige code
*snip* Je mag relevante(!) code in je topic posten m.b.v. code tags

Weet iemand hoe dit moet.

[Voor 6% gewijzigd door RobIII op 12-07-2019 09:44]

Alle reacties


Acties:
  • +1Henk 'm!

  • RobIII
  • Registratie: december 2001
  • Laatst online: 02:31

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Dit is nu niet heel veel meer dan een "Dit is mijn probleem, dit is mijn code, Kan iemand even...?". We zien hier graag (per onze Quickstart) wat je zélf al gezocht, gevonden en geprobeerd hebt.

Je zegt dat je nu dit hebt:
$sql = "SELECT * FROM mutaties, products WHERE product_id=products.id AND `aantal` < 0";
Wat let je om die WHERE clause dynamisch samen te stellen op basis van de geselecteerde checkboxen?

Pseudocode:
code:
1
2
3
4
5
6
7
8
9
query = "SELECT * FROM mutaties, products WHERE product_id=products.id"
if (uitgaand.checked && inkomend.checked)
  // NOP
else if (uitgaand.checked)
  query += " and `aantal` < 0"
else if (inkomend.checked)
  query += " and `aantal` >= 0"
end
query.execute()


Verder: Waar hoort mijn topic?
Ik zal je topic verplaatsen van Webdesign, Markup & Clientside Scripting naar Programming en "Bootstrap" uit de titel halen want dit heeft geen kont te maken met Bootstrap :)

[Voor 29% gewijzigd door RobIII op 12-07-2019 09:58]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Koozza
  • Registratie: november 2007
  • Laatst online: 28-11 11:56

Koozza

Wâ voor drop? GAS D’ROP!

Ik zou sowieso van de checkboxes een radio box maken. Als je deze nu een value -1 en 1 geeft kun je `aantal` verminigvuldigen met de value. Dan doe je dus:

code:
1
query = "SELECT * FROM mutaties, products WHERE product_id=product.id AND aantal * {CHECKBOXVALUE} >= 0;
(Pseudo code ;))

Acties:
  • +2Henk 'm!

  • RobIII
  • Registratie: december 2001
  • Laatst online: 02:31

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Koozza schreef op vrijdag 12 juli 2019 @ 12:48:
Ik zou sowieso van de checkboxes een radio box maken. Als je deze nu een value -1 en 1 geeft kun je `aantal` verminigvuldigen met de value. Dan doe je dus:

code:
1
query = "SELECT * FROM mutaties, products WHERE product_id=product.id AND aantal * {CHECKBOXVALUE} >= 0;
(Pseudo code ;))
Dit soort "creatieve" oplossingen zijn leuk voor later (los van het feit dat je hier je sargeability overboord gooit en je dus potentieel een query produceert die voor geen meter performed).

[Voor 7% gewijzigd door RobIII op 12-07-2019 14:16]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Klaasvaak
  • Registratie: maart 2010
  • Laatst online: 22:17
Als je alles ophaalt, kan je met checkboxen en CSS de rijen filteren.
code:
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
<style>
td {
 border: 1px solid black;
 padding: 1px 5px;
}
#merkA:not(:checked) ~ table tr[data~=merkA],
#merkB:not(:checked) ~ table tr[data~=merkB],
#merkC:not(:checked) ~ table tr[data~=merkC],
#model1:not(:checked) ~ table tr[data~=model1],
#model2:not(:checked) ~ table tr[data~=model2],
#modelX:not(:checked) ~ table tr[data~=modelX],
#modelY:not(:checked) ~ table tr[data~=modelY],
#inkomend:not(:checked) ~ table tr[data~=inkomend],
#uitgaand:not(:checked) ~ table tr[data~=uitgaand] {
 visibility: collapse;
}
</style>

merk A<input type="checkbox" id="merkA" checked>
merk B<input type="checkbox" id="merkB" checked>
merk C<input type="checkbox" id="merkC" checked>
<hr>
model 1<input type="checkbox" id="model1" checked>
model 2<input type="checkbox" id="model2" checked>
model X<input type="checkbox" id="modelX" checked>
model Y<input type="checkbox" id="modelY" checked>
<hr>
inkomend<input type="checkbox" id="inkomend" checked>
uitgaand<input type="checkbox" id="uitgaand" checked>
<hr>
<table>
<tr data="merkA inkomend model1"><td>merk A</td><td>model 1</td><td>3</td></tr>
<tr data="merkA uitgaand model2"><td>merk A</td><td>model 2</td><td>-1</td></tr>
<tr data="merkB uitgaand modelX"><td>merk B</td><td>model X</td><td>-2</td></tr>
<tr data="merkC inkomend modelY"><td>merk C</td><td>model Y</td><td>1</td></tr>
</table>

  • farlane
  • Registratie: maart 2000
  • Laatst online: 22:27
RobIII schreef op vrijdag 12 juli 2019 @ 14:14:
[...]

.. los van het feit dat je hier je sargeability overboord gooit...
Dat geloof ik niet. De query compiler/optimizer kan toch hoop ik een 1*[column] /-1* [column] redelijk optimaliseren........

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • RobIII
  • Registratie: december 2001
  • Laatst online: 02:31

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

farlane schreef op zaterdag 13 juli 2019 @ 15:51:
[...]

Dat geloof ik niet. De query compiler/optimizer kan toch hoop ik een 1*[column] /-1* [column] redelijk optimaliseren........
Het gaat hier om MySQL he? ;) Maar goed, voordeel van de twijfel; dit specifieke geval wellicht nog wel, maar je zit hier wel op dun ijs natuurlijk. Het is dat ik even niks bij de hand heb, anders had ik 't even getest.

[Voor 8% gewijzigd door RobIII op 13-07-2019 16:08]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Merethil
  • Registratie: december 2008
  • Laatst online: 22:07
Klaasvaak schreef op vrijdag 12 juli 2019 @ 23:17:
Als je alles ophaalt, kan je met checkboxen en CSS de rijen filteren.
code:
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
<style>
td {
 border: 1px solid black;
 padding: 1px 5px;
}
#merkA:not(:checked) ~ table tr[data~=merkA],
#merkB:not(:checked) ~ table tr[data~=merkB],
#merkC:not(:checked) ~ table tr[data~=merkC],
#model1:not(:checked) ~ table tr[data~=model1],
#model2:not(:checked) ~ table tr[data~=model2],
#modelX:not(:checked) ~ table tr[data~=modelX],
#modelY:not(:checked) ~ table tr[data~=modelY],
#inkomend:not(:checked) ~ table tr[data~=inkomend],
#uitgaand:not(:checked) ~ table tr[data~=uitgaand] {
 visibility: collapse;
}
</style>

merk A<input type="checkbox" id="merkA" checked>
merk B<input type="checkbox" id="merkB" checked>
merk C<input type="checkbox" id="merkC" checked>
<hr>
model 1<input type="checkbox" id="model1" checked>
model 2<input type="checkbox" id="model2" checked>
model X<input type="checkbox" id="modelX" checked>
model Y<input type="checkbox" id="modelY" checked>
<hr>
inkomend<input type="checkbox" id="inkomend" checked>
uitgaand<input type="checkbox" id="uitgaand" checked>
<hr>
<table>
<tr data="merkA inkomend model1"><td>merk A</td><td>model 1</td><td>3</td></tr>
<tr data="merkA uitgaand model2"><td>merk A</td><td>model 2</td><td>-1</td></tr>
<tr data="merkB uitgaand modelX"><td>merk B</td><td>model X</td><td>-2</td></tr>
<tr data="merkC inkomend modelY"><td>merk C</td><td>model Y</td><td>1</td></tr>
</table>
Dat is natuurlijk erg leuk bij een paar honderd rijen maar als je een flinke tabel aan data hebt dan is het zonde om het zo te doen, want een database kan een stuk beter (vooral sneller en efficiënter) filteren, sorteren etc. dan CSS of b.v. JavaScript kan.

Acties:
  • 0Henk 'm!

  • Ed Vertijsment
  • Registratie: juli 2014
  • Laatst online: 28-11 16:12
Daarmee trek je tevens de verantwoordelijkheid van welke informatie getoond wordt naar de opmaak code. Is ook nog eens zeer kwetsbaar om stuk te gaan.

Liever niet

Acties:
  • 0Henk 'm!

  • Matis
  • Registratie: januari 2007
  • Laatst online: 21:58

Matis

Rubber Rocket

Ikzelf gebruikte daarvoor altijd DataTables en dan in het bijzonder icm Ajax data source.

Op die manier bleef ik schaalbaar en met behulp van de nodige hooks en (eigen) filters kon ik altijd bouwen / filteren wat ik wilde.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0Henk 'm!

  • YakuzA
  • Registratie: maart 2001
  • Laatst online: 22:27

YakuzA

Wat denk je nou zelluf hey :X

Merethil schreef op zaterdag 13 juli 2019 @ 17:30:
[...]


Dat is natuurlijk erg leuk bij een paar honderd rijen maar als je een flinke tabel aan data hebt dan is het zonde om het zo te doen, want een database kan een stuk beter (vooral sneller en efficiënter) filteren, sorteren etc. dan CSS of b.v. JavaScript kan.
Dat kan, totdat je x gebruikers hebt die een beetje zitten te spelen met de filter en sorteer knoppen en zo je website breken omdat voor elke klik alles serverside opnieuw uit de database gehaald wordt en op de lijn wordt gezet.

Death smiles upon us all, all a man can do is smile back.
PSN


Acties:
  • +1Henk 'm!

  • Merethil
  • Registratie: december 2008
  • Laatst online: 22:07
YakuzA schreef op zondag 14 juli 2019 @ 21:17:
[...]

Dat kan, totdat je x gebruikers hebt die een beetje zitten te spelen met de filter en sorteer knoppen en zo je website breken omdat voor elke klik alles serverside opnieuw uit de database gehaald wordt en op de lijn wordt gezet.
Dan heb je echt wel even een paar foute keuzes gemaakt voordat het zover komt. Een beetje queryen op een database en dat spul teruggeven in een view kan je met elke taal efficiënt doen, zeker met de hardware hedentendage.
Denk je dat b.v. de pricewatch van Tweakers ook alles clientside loopt te filteren?

  • Groax
  • Registratie: oktober 2012
  • Laatst online: 24-11 10:01
Matis schreef op zondag 14 juli 2019 @ 11:26:
Ikzelf gebruikte daarvoor altijd DataTables en dan in het bijzonder icm Ajax data source.

Op die manier bleef ik schaalbaar en met behulp van de nodige hooks en (eigen) filters kon ik altijd bouwen / filteren wat ik wilde.
Dit is inderdaad een mooie oplossing! ik gebruik dit voor al mijn tables die ook maar een beetje interactie hebben met de gebruiker.

Hier een begin stukje code van een filter in Datatable.

HTML:
1
2
3
<div id="dropdown">                     
      <h5><strong>Naam:</strong></h5><div id="type"></div>
 </div>

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$('.table').DataTable({
                initComplete: function () {
                // Welke row die door moet lopen om zijn opties te vullen.
                    this.api().columns([1]).every(function () {
                        var column = this;
                        var select = $('<select class="input-group"><option value="">Show All</option></select>')
                            .appendTo($('#dropdown #type').empty())
                            .on('change', function () {
                                var val = $.fn.dataTable.util.escapeRegex(
                                    $(this).val()
                                );

                                column
                                    .search(val ? '^' + val + '$' : '', true, false)
                                    .draw();
                            });

                        column.data().unique().sort().each(function (d, j) {
                            select.append('<option value="' + d + '">' + d + '</option>')
                        });
                    });
                }
            });
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee