Query builder vraag
Wij willen voor een project een pagina maken waarmee we een soort filter achtige werking krijgen. (voorbeeld ik wil van deze werknemer, dropdown, van dit jaartal, dropdown / intypen aankopen van dit jaar etc etc) Nu hebben we de term query builder eens horen vallen, maar zijn hier niet erg bekend mee. Weet iemand van jullie hier iets van? Links? voorbeelden? Het zou ons erg helpen met het project, bij voorbaad dank.
Tristan van Gelderen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
$sql = 'SELECT *
FROM assortiment_artikelen
WHERE ';
$sqlstring .= (!empty($_POST['art_nr'])) ? ' art_nr LIKE "%'.$_POST['art_nr'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['eancode'])) ? ' eancode LIKE "%'.$_POST['eancode'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['art_oms'])) ? ' art_oms LIKE "%'.$_POST['art_oms'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['detailprijs'])) ? ' detailprijs LIKE "%'.$_POST['detailprijs'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['actief'])) ? ' actief LIKE "%'.$_POST['actief'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['hoogte'])) ? ' hoogte LIKE "%'.$_POST['hoogte'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['doorsnede'])) ? ' doorsnede LIKE "%'.$_POST['doorsnede'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['gewicht'])) ? ' gewicht LIKE "%'.$_POST['gewicht'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['schotel'])) ? ' schotel LIKE "%'.$_POST['schotel'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['be'])) ? ' be LIKE "%'.$_POST['be'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['perpallet'])) ? ' perpallet LIKE "%'.$_POST['perpallet'].'%" '.$vw : '';
$sqlstring = substr($sqlstring,0,-3);
$sqlstring .= (!empty($_POST['order'])) ? ' ORDER BY '.$_POST['order'].' '.$_POST['sort'] : '';
$result = mysqli_query($link,$sql.$sqlstring);
?>
$sql = 'SELECT *
FROM assortiment_artikelen
WHERE ';
$sqlstring .= (!empty($_POST['art_nr'])) ? ' art_nr LIKE "%'.$_POST['art_nr'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['eancode'])) ? ' eancode LIKE "%'.$_POST['eancode'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['art_oms'])) ? ' art_oms LIKE "%'.$_POST['art_oms'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['detailprijs'])) ? ' detailprijs LIKE "%'.$_POST['detailprijs'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['actief'])) ? ' actief LIKE "%'.$_POST['actief'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['hoogte'])) ? ' hoogte LIKE "%'.$_POST['hoogte'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['doorsnede'])) ? ' doorsnede LIKE "%'.$_POST['doorsnede'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['gewicht'])) ? ' gewicht LIKE "%'.$_POST['gewicht'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['schotel'])) ? ' schotel LIKE "%'.$_POST['schotel'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['be'])) ? ' be LIKE "%'.$_POST['be'].'%" '.$vw : '';
$sqlstring .= (!empty($_POST['perpallet'])) ? ' perpallet LIKE "%'.$_POST['perpallet'].'%" '.$vw : '';
$sqlstring = substr($sqlstring,0,-3);
$sqlstring .= (!empty($_POST['order'])) ? ' ORDER BY '.$_POST['order'].' '.$_POST['sort'] : '';
$result = mysqli_query($link,$sql.$sqlstring);
?>
Wes, zou jij je script misschien even kunnen toelichten. Zoals wat vw voor een variabele is en hoe het script precies werkt. Dankje
ah ja, was ik nog even vergeten. ik geef in mijn filter ook mee of het OR of AND moet zijn (alles gelijk of maar 1 van de voorwaarden die je invult) . Deze slaat hij op als OR of AND in $vw (voorwaarde)
Ook Klaasjan bedankt! Dat is inderdaad wel het idee van wat ik wil maken. Alleen is in deze code veel gebruik gemaakt van javascript. Weet je er toevallig ook 1, die misschien iets kleiner is en in php geprogrammeerd is ?
Mijn code:
Code (php)
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
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
<? include "../header.php" ?>
<span class="kop">Kop</span>
<hr />
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<INPUT TYPE="text" NAME="Tabel" value="">
<INPUT TYPE="text" NAME="Waarde1" value="">
<INPUT TYPE="text" NAME="Waarde2" value="">
<INPUT TYPE="submit" value='Submit'>
</form>
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$Tabel = $_POST["Tabel"];
$Waarde1 = $_POST["Waarde1"];
$Waarde2 = $_POST["Waarde2"];
$query = 'select * from '.$Tabel.' where '.$Waarde1.' LIKE ' . $Waarde2 . '';
$result = mysql_query($query);
if (!$result)
{
trigger_error("SQL", E_USER_ERROR);
} else {
while($rij = mysql_fetch_object($result))
mysql_free_result($result);
{
if ($counter > 1)
{
$counter = 0;
}
echo "<table><tr class=\"rij".$counter."\"><td>".$Tabel."</td><td>".$Waarde1."</td><td>".$Waarde2."</td></tr></table>\n";
$counter++;
}
}
}
?>
<? include "../footer.php" ?>
</p>
<span class="kop">Kop</span>
<hr />
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<INPUT TYPE="text" NAME="Tabel" value="">
<INPUT TYPE="text" NAME="Waarde1" value="">
<INPUT TYPE="text" NAME="Waarde2" value="">
<INPUT TYPE="submit" value='Submit'>
</form>
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$Tabel = $_POST["Tabel"];
$Waarde1 = $_POST["Waarde1"];
$Waarde2 = $_POST["Waarde2"];
$query = 'select * from '.$Tabel.' where '.$Waarde1.' LIKE ' . $Waarde2 . '';
$result = mysql_query($query);
if (!$result)
{
trigger_error("SQL", E_USER_ERROR);
} else {
while($rij = mysql_fetch_object($result))
mysql_free_result($result);
{
if ($counter > 1)
{
$counter = 0;
}
echo "<table><tr class=\"rij".$counter."\"><td>".$Tabel."</td><td>".$Waarde1."</td><td>".$Waarde2."</td></tr></table>\n";
$counter++;
}
}
}
?>
<? include "../footer.php" ?>
</p>
Mijn probleem is dat hij nu weergeeft wat ik invoer in de textfields, ik wil graag dat hij de query daadwerkelijk uitvoert en de resultaten in tabelvorm weergeeft.
Gewijzigd op 01/01/1970 01:00:00 door Tristan
Code (php)
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
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
<? include "../header.php" ?>
<span class="kop">Kop</span>
<hr />
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<INPUT TYPE="text" NAME="tabel" value="<?=$_POST['tabel']?>">
<INPUT TYPE="text" NAME="veld" value="<?=$_POST['veld']?>">
<INPUT TYPE="text" NAME="zoekwoord" value="<?=$_POST['zoekwoord']?>">
<select name="aktie" size="1">
<option value="do">Selecteer hier onder een operator</option>
<?
$selectors = array(
'=' => 'gelijk aan',
'>=' => 'groter of gelijk aan',
'<=' => 'kleiner of gelijk aan',
'>' => 'groter dan',
'<' => 'kleiner dan',
'!=' => 'niet gelijk aan',
'<>' => 'alles behalve',
'LIKE' => 'als (gebruik % in waarde)');
while(list ($key, $value) = each ($selectors))
{
echo "<option value=\"".$key."\">".$value."</option>\n";
}
?>
</select>
<INPUT TYPE="submit" value='Submit'>
</form>
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$tabel = $_POST['tabel'];
$veld = $_POST['veld'];
$zoekwoord = $_POST['zoekwoord'];
$aktie = $_POST['aktie'];
$query="SELECT * FROM $tabel WHERE $veld $aktie '$zoekwoord' ";
$result = mysql_query($query);
if (!$result)
{
trigger_error("SQL", E_USER_ERROR);
} else {
$numfields = mysql_num_fields($result);
echo "<table>\n<tr>";
for ($i=0; $i < $numfields; $i++) // Header
{ echo '<th>'.mysql_field_name($result, $i).'</th>'; }
// mysql_field_name() geeft de naam van de gegeven veld index terug.
// result moet een geldige result identifier zijn en field_index is de numerieke index van het veld.
echo "</tr>\n";
while ($row = mysql_fetch_row($result)) // Data
// mysql_fetch_row() haalt een rij met data op van het resultaat dat geassocieerd wordt met de gegeven result identifier.
// De rij wordt teruggegeven als een array. Elke kolom van het resultaat is opgeslagen als een array element, beginnend onder key 0
{ echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n"; }
// string implode ( string glue, array pieces )
// Geeft een string terug die bestaat uit alle elementen uit de array in ongewijzigde volgorde, met de glue string tussen elk element.
echo "</table>\n";
}
}
?>
<span class="kop">Kop</span>
<hr />
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<INPUT TYPE="text" NAME="tabel" value="<?=$_POST['tabel']?>">
<INPUT TYPE="text" NAME="veld" value="<?=$_POST['veld']?>">
<INPUT TYPE="text" NAME="zoekwoord" value="<?=$_POST['zoekwoord']?>">
<select name="aktie" size="1">
<option value="do">Selecteer hier onder een operator</option>
<?
$selectors = array(
'=' => 'gelijk aan',
'>=' => 'groter of gelijk aan',
'<=' => 'kleiner of gelijk aan',
'>' => 'groter dan',
'<' => 'kleiner dan',
'!=' => 'niet gelijk aan',
'<>' => 'alles behalve',
'LIKE' => 'als (gebruik % in waarde)');
while(list ($key, $value) = each ($selectors))
{
echo "<option value=\"".$key."\">".$value."</option>\n";
}
?>
</select>
<INPUT TYPE="submit" value='Submit'>
</form>
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$tabel = $_POST['tabel'];
$veld = $_POST['veld'];
$zoekwoord = $_POST['zoekwoord'];
$aktie = $_POST['aktie'];
$query="SELECT * FROM $tabel WHERE $veld $aktie '$zoekwoord' ";
$result = mysql_query($query);
if (!$result)
{
trigger_error("SQL", E_USER_ERROR);
} else {
$numfields = mysql_num_fields($result);
echo "<table>\n<tr>";
for ($i=0; $i < $numfields; $i++) // Header
{ echo '<th>'.mysql_field_name($result, $i).'</th>'; }
// mysql_field_name() geeft de naam van de gegeven veld index terug.
// result moet een geldige result identifier zijn en field_index is de numerieke index van het veld.
echo "</tr>\n";
while ($row = mysql_fetch_row($result)) // Data
// mysql_fetch_row() haalt een rij met data op van het resultaat dat geassocieerd wordt met de gegeven result identifier.
// De rij wordt teruggegeven als een array. Elke kolom van het resultaat is opgeslagen als een array element, beginnend onder key 0
{ echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n"; }
// string implode ( string glue, array pieces )
// Geeft een string terug die bestaat uit alle elementen uit de array in ongewijzigde volgorde, met de glue string tussen elk element.
echo "</table>\n";
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Tristan