2 selectboxen
Pagina: « vorige 1 2 3 volgende »
Dus deze moet je even afsluiten op deze manier. Met de punt kan je een string en een variabele met elkaar koppelen.
Code (php)
1
2
3
2
3
<?php
echo "Dit is een string met een ".$variabele." gevolgd door een nieuwe string.";
?>
echo "Dit is een string met een ".$variabele." gevolgd door een nieuwe string.";
?>
dit werkt hieronder , bovenstaande niet
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in....
Pffffffff...
Pierre Web op 13/09/2015 23:40:55:
Pffffffff...
??
Die foutafh, zal wel lukken maar voor het moment ff stoppen, morgen weer verder , Bedankt alvast.
Warning: mysqli::query(): Empty query in..
Het ophalen lukt niet!
Notice: Use of undefined constant DEBUG_MODE - assumed 'DEBUG_MODE' in..
Gewijzigd op 13/09/2015 23:46:14 door Pierre Web
Die andere melding komt omdat DEBUG_MODE niet gedefineerd is, terwijl je die wel aanroept.
Het beste is om de query-string te echo'en. Dan weet je precies hoe de variabelen gevuld worden.
$query_pag_data = $mysqli->query("
SELECT * ,DATE_FORMAT(datum,..
echo "$query_pag_data";
Catchable fatal error: Object of class mysqli_result could not be converted to string in
Je echo'ed nu een query, en niet de string ;-)
Kies een jaar:
WHERE YEAR(datum) = 2015 OR temperatuur = niet_gekozen
Kies een temperatuur
WHERE YEAR(datum) = Niet gekozen OR temperatuur = 18
dat klopt zover, temperatuur ook nog eens gecontroleers in table enz.
Gewijzigd op 14/09/2015 00:15:35 door Pierre Web
Wat is je hele query die je uitvoert en echo'ed?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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(datum) = ".$year." OR temperatuur = ".$temp."
");
// echo " WHERE YEAR(datum) = ".$year." OR temperatuur = ".$temp." ";
?>
while ....
$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(datum) = ".$year." OR temperatuur = ".$temp."
");
// echo " WHERE YEAR(datum) = ".$year." OR temperatuur = ".$temp." ";
?>
while ....
zonder : OR temperatuur = ".$temp." werkt het
Toevoeging op 14/09/2015 00:29:35:
dit kan ook waarschijnlijk maar kan niet?
WHERE YEAR(datum) = 2015 OR temperatuur = 15
Toevoeging op 14/09/2015 00:32:11:
dit werkt
WHERE temperatuur = ".$temp."
dit ook
WHERE YEAR(datum) = ".$year."
maar niet samen met OR
De server valt hier af en toe uit van forum
Toevoeging op 14/09/2015 09:27:37:
Probleem zat hem in de string , zo werkt het
Verder lijkt er in de praktijk soms voor temp. en jaar gekozen te worden ,
dus jaar is bijv. 2015 EN temp. is 15 graden, het zou selecteer 2015 OF 15 graden moeten zijn
Het zal door de selectboxen komen ..
Gewijzigd op 14/09/2015 09:00:14 door - Ariën -
Zo creëer je een dynamische query.
Zorg er wel voor je in alle gevallen een geldige query genereert. Want als je jaar niet ingevuld is, dan zou je dus krijgen (verkort voorbeeld):
SELECT dit,dat, zus, zo FROM dingetjes WHERE OR temperatuur = '$temp'
.. en dan klopt je query niet meer.
Ik had het o,a zo gedaan
$laatste_jaar haal ik weer uit de table (het laatst bekende jaar dus)
Heb je nog wat tips voor veiligheid van o,a sql injection, zoals je eerder al aangaf voor gebruikte code
Om SQL-injection te voorkomen, zou ik 'prepared statements' gebruiken:
https://www.daniweb.com/web-development/php/threads/231958/using-mysqli-prepared-statements-to-avoid-sql-injection
Gewijzigd op 14/09/2015 23:50:18 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
$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(`datum`) = '" .$year . "' OR `test` = '" .$test . "'
ORDER BY `id` DESC , `datum` DESC
");
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(`datum`) = '" .$year . "' OR `test` = '" .$test . "'
ORDER BY `id` DESC , `datum` DESC
");
Ik weet niet of isset de beste toepassing is, 3 mogelijkheden:
-De tabel is leeg dus geen jaar
-Er is data in de tabel, hier haal ik bij openen van pagina het laatst gebruikte jaar op met bijbehorende data.
-Met de selectbox kan ik een ander jaar kiezen , de te kiezen jaren zijn de aanwezige jaar of jaren in de table.
Dit laatste doe ik o.a met
maar dit terzijde
Voor een checkbox is een isset() altijd verplicht, want de value wordt immers dan alleen maar in de POST-request meegegeven als er een vinkje in geplaatst is, anderzijds is er ook een radio-button waarbij je twee keuzes kan maken.
Zal het nog eens bekijken, klopt bij selectbox is isset zeker handig.
Is de SQL-injection toegepast op de query goed, opmerkingen over veiligheid welkom.
ik weet niet of een $ nog beveiligd moet/kan worden bijv.
of de seletbox.