Hallo,

Ik wil voor het kiezen van data uit een tabel 2 selectboxen gebruiken,
ff simpel voorbeeldje men kan dus selecteren op naam of land

<select name="naam">
<option value="jan">Jan</option>
<option value="piet">Piet</option>
</select>

<select name="land">
<option value="nl">NL</option>
<option value="be">NL</option>
</select>

Dus select from table WHERE naam = jan
of indien de 2e selectbox wordt gebruikt:
select from table WHERE land = nl

Iemand een idee of voorbeeldje.
dan moet je OR gebruiken:

SELECT name, land FROM dingen WHERE name= '$_POST['name']' OR land= '$_POST['land']'
Kan het zijn dat je een foutje in de code hebt

$query_test = $mysqli->query("
SELECT name, land FROM dingen WHERE name= '$_POST['name']' OR land= '$_POST['land']");


Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in............
Het is pseudocode...
Je moet zelf even de boel netjes opmaken en SQL-injection-preventie toevoegen.
Variabelen moeten ook in het echt buiten quotes.
Eddy E op 13/09/2015 19:47:16

Een lege <option> bovenaan zetten bij beide.
Die wordt dan wel ontvangen via $_POST (in PHP), maar als $_POST['naam'] == 'niet_gekozen', dan zal $_POST['land'] dus wel iets moeten bevatten.


Dus zoiets in PHP:


<?php
// als beide zijn ingevuld, dan kijken we dus 2x
if( 
	( isset($_POST['naam']) AND $_POST['naam'] != 'niet_gekozen') )
	AND
	( isset($_POST['land']) AND $_POST['land'] != 'niet_gekozen') )
  )
 {
 // beide zijn gekozen, dus dan wordt de IF-in de query zo:
 $if = "WHERE land = '".$_POST['land']."' AND naam = '".$_POST['naam']."' ";
 }
// niet beide ingevuld? Welke dan wel? Begin maar bij de naam
elseif ( isset($_POST['naam']) AND $_POST['naam'] != 'niet_gekozen') )
 {
 // enkel naam
 $if = "WHERE naam = '".$_POST['naam']."' ";
 }
// het was niet de naam, wel het land?
elseif ( isset($_POST['land']) AND $_POST['land'] != 'niet_gekozen') )
 {
 // enkel naam
 $if = "WHERE land = '".$_POST['land']."' ";
 }
// geen enkel geval, dus fout
else
 {
 $if = 'WHERE 1 = 0';
 echo 'Fout gevonden. U heeft niets ingevuld.';
 }

// meer van jouw script
?>


Maar het is nog niet beveiligd tegen SQL-injection. Dus voor publieke doeleinden zou ik dit nog niet gebruiken.
- Aar - op 13/09/2015 21:41:31

dan moet je OR gebruiken:

SELECT name, land FROM dingen WHERE name= '$_POST['name']' OR land= '$_POST['land']'


Maar wat als iemand dan wel 2 vinkjes plaats, 1 bij name en 1 bij land?
TS wil, als ik het goed begrijp, dat slechts 1 selectbox kan worden aangevinkt/query daarop is gebaseerd.

Edit: ik zie dat Eddy E al een oplossing(srichting) biedt.
Nu is het wel zo dat dit bij 2 mogelijkheden nog uit te schrijven is.
Bij 3 velden (3 <select>'s, bijvoorbeeld leeftijd oid) wordt dit veel langer. Dan zal je met arrays gaan werken en die aflopen.
Volledige code van het "echte" voorbeeld, moet nog veel leren waarschijnlijk.

<?php $year = $_POST["year"];
$temp = $_POST["temp"];?>
  <?php
$query_pag_data = "SET lc_time_names = 'nl_NL'";
$query_pag_data = $mysqli->query("
SELECT * ,DATE_FORMAT(datum,
'%d-%m-%Y') as formatdatum,
DATE_FORMAT(datum,
'%Y') as jaar,
DATE_FORMAT(datum,
'%W') as weekdag
  FROM $db_resultaten,
WHERE year= $year OR temperatuur= $temp
");


Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in .... on line 124

124:
while ($row = mysqli_fetch_array($query_pag_data, MYSQLI_ASSOC))
Variabelen horen buiten quotes, en niet erin. Verder hoort die komma op lijn 12 er niet, het is geen opsomming.
Die opsomming is duidelijk maar wat de quotes betreft niet.

edit
Zit nog een ander foutje in mijn code ...

Reageren