Aangezien je hier altijd op je kop krijgt dat je eerst zelf moet gaan zoeken en moet uitproberen heb ik dat ook gedaan
maar echter niks concreets gevonden...Heb een poging gedaan om het zelf op te lossen, maar gaat nog niet helemaal goed. Graag jullie hulp...
Ik heb een HTML formulier gebouwd met checkboxes die dynamisch worden opgebouwd (met waardes uit een mysql tabel).
Ik heb de 'name' van de checkboxes op 'type[]' gezet zodat er bij het versturen van het formulier automatisch een array wordt aangemaakt van de aangevinkte checkboxes. Deze waardes wil ik in de WHERE clause gebruiken van een SQL statement. Ik heb dit geprobeerd d.m.v. de SQL query dynamisch op te bouwen.
Dit werkt ook. Als ik in het formulier een contracttype aanvink en het formulier verstuur dan krijg ik een lijst te zien met alleen de contracten van het type dat ik heb aangevinkt. Alleen wanneer ik er twee of meer aanvink gaat er denk ik iets niet goed in mijn SQL query. Ik wil dan gewoon dat ik alle contracten krijg te zien die voldoen aan de aangevinkt criteria, maar het resultaat van de query resulteert in duizenden regels?!
Weet iemand hoe ik dit op kan lossen of hoe ik dit hele vraagstuk beter/efficienter in kan delen? De query is opgebouwd met meerdere OR statements in de WHERE clause. Ik denk dat hier iets niet goed mee gaat?
Ik hoor graag jullie hulp/reacties!
Ik heb een HTML formulier gebouwd met checkboxes die dynamisch worden opgebouwd (met waardes uit een mysql tabel).
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <table width="100%"><tr valign="top"><form method="post" action="listexpcon.php"> <tr> <td>Add to list:<br><br> <? $sqltype="SELECT id, name FROM contract_type ORDER BY name ASC"; $resulttype=mysql_query($sqltype); while ($rowtype=mysql_fetch_array($resulttype)) { $idtype=$rowtype["id"]; $nametype=$rowtype["name"]; echo "<input type=\"checkbox\" name=\"type[]\" value=\"".$idtype."\">$nametype<br>"; } ?> <br><br><input id="knop" type="submit" name="conselection" value=" Show "> </td> </tr> </form></table> |
Ik heb de 'name' van de checkboxes op 'type[]' gezet zodat er bij het versturen van het formulier automatisch een array wordt aangemaakt van de aangevinkte checkboxes. Deze waardes wil ik in de WHERE clause gebruiken van een SQL statement. Ik heb dit geprobeerd d.m.v. de SQL query dynamisch op te bouwen.
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
| foreach($_POST['type'] as $name=>$value ) { $type.= "contract.type = ".$value." OR "; } $type_sql = substr($type, 0, -4); $sql = "SELECT contract_party_vemedia.name AS vemname, contract_party.name AS cpname, contract_party2.name AS cp2name, contract_type.name AS tname, DATE_FORMAT(contract.not_date,'%d.%m.%Y') AS notdate, DATE_FORMAT(contract.exp_date,'%d.%m.%Y') AS expdate FROM contract, contract_party, contract_party2, contract_type, contract_party_vemedia WHERE contract.party1 = contract_party_vemedia.id AND contract.party2 = contract_party.id AND contract.party3 = contract_party2.id AND contract.type = contract_type.id AND $type_sql ORDER BY tname"; $result = mysql_query($sql); if (!$result){ error('A database error occurred in processing your submission: ' . mysql_error()); } |
Dit werkt ook. Als ik in het formulier een contracttype aanvink en het formulier verstuur dan krijg ik een lijst te zien met alleen de contracten van het type dat ik heb aangevinkt. Alleen wanneer ik er twee of meer aanvink gaat er denk ik iets niet goed in mijn SQL query. Ik wil dan gewoon dat ik alle contracten krijg te zien die voldoen aan de aangevinkt criteria, maar het resultaat van de query resulteert in duizenden regels?!
Weet iemand hoe ik dit op kan lossen of hoe ik dit hele vraagstuk beter/efficienter in kan delen? De query is opgebouwd met meerdere OR statements in de WHERE clause. Ik denk dat hier iets niet goed mee gaat?
Ik hoor graag jullie hulp/reacties!