2 selectboxen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Pierre Web

Pierre Web

13/09/2015 19:33:07
Quote Anchor link
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.
 
PHP hulp

PHP hulp

25/12/2024 07:50:14
 
Eddy E

Eddy E

13/09/2015 19:47:16
Quote Anchor link
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.
Als beide leeg zijn (dus 2x 'niet_gekozen'), dan is er niet gekozen.
Zijn beide gevuld, dan kan je dus beter zoeken ;)

HTML wordt dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<select name="naam">
<option value="niet_gekozen">Maak een keuze...</option>
<option value="jan">Jan</option>
<option value="piet">Piet</option>
</select>

<select name="land">
<option value="niet_gekozen">Maak een keuze...</option>
<option value="nl">NL</option>
<option value="be">NL</option>
</select>
 
Pierre Web

Pierre Web

13/09/2015 20:20:16
Quote Anchor link
Beste Eddy ,

Dat begrijp ik maar het gaat me meer om de afwikkeling ..

Indien uit bijv. de select met naam ,Jan wordt gekozen: selecteer dan alles uit de table met de naam Jan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$testnaam = $mysqli->query("SELECT *   FROM test WHERE naam = Jan");


Indien uit bijv. de select met naam , land NL wordt gekozen: selecteer dan alles uit de table met de naam NL

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$testland = $mysqli->query("SELECT *   FROM test WHERE land = NL");


De select met naam heb ik, maar wil ook kunnen selecteren op land.


ff ruw een idee
If isset select naam , ga naar $testnaam anders naar $testland
Gewijzigd op 13/09/2015 20:30:54 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 20:28:22
Quote Anchor link
De geselecteerde waardes vind je in $_POST['naam'] en $_POST['land'], waarbij de value de rode raad is.
 
Pierre Web

Pierre Web

13/09/2015 20:34:57
Quote Anchor link
Dan zal dit mijn probleem zijn
" waarbij de value de rode raad is"

Overigens kan de value variëren, indien het al een rol zou spelen.
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 20:52:36
Quote Anchor link
Lijkt me toch geen probleem, omdat de name aan wordt gesproken in de $_POST. De value is de aanpasbare waarde.
Gewijzigd op 13/09/2015 20:52:48 door - Ariën -
 
Pierre Web

Pierre Web

13/09/2015 21:09:15
Quote Anchor link
Bedankt maar snap het niet helemaal , de $_POST naam en land zal er altijd zijn?, dus ga je op de value te werk
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 21:11:38
Quote Anchor link
De waarde van een $_POST variabele uit een selectbox is als volgt:

$_POST['name'] = 'Value';

Dus als je bijv. $_POST['name'] echo'ed krijg je bijv. Jantje te zien.
Gewijzigd op 13/09/2015 21:12:31 door - Ariën -
 
Pierre Web

Pierre Web

13/09/2015 21:25:31
Quote Anchor link
Dat is duidelijk, maar ik moet afh. van $_POST['name'] of $_POST['land']

naar $testnaam OF $testland en dan de value voor de ..where naam = $...
Gewijzigd op 13/09/2015 21:28:09 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 21:29:45
Quote Anchor link
SELECT dit, dat FROM dingen WHERE dit = '$_POST['name']'

Denk wel aan SQL-injection uiteraard, want iedereen kan een selectbox manipuleren.
 
Pierre Web

Pierre Web

13/09/2015 21:39:30
Quote Anchor link
Je krijgt nou bijv. de waarde Jan of Piet terug, maar er is ook nog een $_POST['land']

selecteer op land OF naam.
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 21:41:31
Quote Anchor link
dan moet je OR gebruiken:

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

Pierre Web

13/09/2015 21:56:44
Quote Anchor link
Kan het zijn dat je een foutje in de code hebt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$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............
Gewijzigd op 13/09/2015 21:57:09 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 21:59:24
Quote Anchor link
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

Eddy E

13/09/2015 22:02:48
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
?>
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 22:03:36
Quote Anchor link
Maar het is nog niet beveiligd tegen SQL-injection. Dus voor publieke doeleinden zou ik dit nog niet gebruiken.
 
Obelix Idefix

Obelix Idefix

13/09/2015 22:03:55
Quote Anchor link
- 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.
Gewijzigd op 13/09/2015 22:04:46 door Obelix Idefix
 
Eddy E

Eddy E

13/09/2015 22:03:58
Quote Anchor link
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.
 
Pierre Web

Pierre Web

13/09/2015 22:17:18
Quote Anchor link
Volledige code van het "echte" voorbeeld, moet nog veel leren waarschijnlijk.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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
"
);[/code]

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

124
:  [code]while ($row = mysqli_fetch_array($query_pag_data, MYSQLI_ASSOC))[/code]
 
- Ariën  -
Beheerder

- Ariën -

13/09/2015 22:20:01
Quote Anchor link
Variabelen horen buiten quotes, en niet erin. Verder hoort die komma op lijn 12 er niet, het is geen opsomming.
 
Pierre Web

Pierre Web

13/09/2015 22:42:13
Quote Anchor link
Die opsomming is duidelijk maar wat de quotes betreft niet.

edit
Zit nog een ander foutje in mijn code ...
Gewijzigd op 13/09/2015 23:08:41 door Pierre Web
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.