shorthand if else
Hey,
Dit is de query die ik gebruik om gegevens in de database te injecteren:
nu wil ik het zo maken dat bijvoorbeeld "vonprijs" alleen wordt opgenomen in de query als de $_POST["vonprijs"] variabele NIET leeg is. Hoe zou ik dat moeten doen? Shorthand if else?
EDIT:
Wat doe ik hier fout?
Dit is de query die ik gebruik om gegevens in de database te injecteren:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs ,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$_POST["id"]."' ,
'".$_POST["vonprijs"]."' ,
'".$_POST["optie"]."' ,
'".$_POST["koop"]."' ,
'".$_POST["verkoop"]."' ,
'".$_POST["transport"]."' );";
mysql_query($sql) or die(mysql_error());
kavel ,
vonprijs ,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$_POST["id"]."' ,
'".$_POST["vonprijs"]."' ,
'".$_POST["optie"]."' ,
'".$_POST["koop"]."' ,
'".$_POST["verkoop"]."' ,
'".$_POST["transport"]."' );";
mysql_query($sql) or die(mysql_error());
nu wil ik het zo maken dat bijvoorbeeld "vonprijs" alleen wordt opgenomen in de query als de $_POST["vonprijs"] variabele NIET leeg is. Hoe zou ik dat moeten doen? Shorthand if else?
EDIT:
Wat doe ik hier fout?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,".
!empty($_POST["vonprijs"]) ? "vonprijs ," : ""."
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$_POST["id"]."' ,
'".$_POST["vonprijs"]."' ,
'".$_POST["optie"]."' ,
'".$_POST["koop"]."' ,
'".$_POST["verkoop"]."' ,
'".$_POST["transport"]."' );";
kavel ,".
!empty($_POST["vonprijs"]) ? "vonprijs ," : ""."
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$_POST["id"]."' ,
'".$_POST["vonprijs"]."' ,
'".$_POST["optie"]."' ,
'".$_POST["koop"]."' ,
'".$_POST["verkoop"]."' ,
'".$_POST["transport"]."' );";
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
Dat is heel makkelijk:
En nog iets, ik kan heel makkelijk in vonprijs het volgende zetten:
Gelukkig voert de mysql_* functies geen 2 querys uit.
En check altijd de user input. Als ze iets invullen wat niet goed is dan kan je dat tegen gaan door het te checken.
En nog iets, ik kan heel makkelijk in vonprijs het volgende zetten:
Gelukkig voert de mysql_* functies geen 2 querys uit.
En check altijd de user input. Als ze iets invullen wat niet goed is dan kan je dat tegen gaan door het te checken.
Bedankt heren, dat gedeelte is gelukt. Nu het volgende probleem.
Omdat ik van tevoren niet weet welke velden er wel of niet ingevuld zijn, hoe weet ik dan of ik na een value of kolomnaam nog een komma moet zetten.
(optie, koop,) werkt bijv niet, maar hoe weet ik of ik die komma nog moet zetten?
Omdat ik van tevoren niet weet welke velden er wel of niet ingevuld zijn, hoe weet ik dan of ik na een value of kolomnaam nog een komma moet zetten.
(optie, koop,) werkt bijv niet, maar hoe weet ik of ik die komma nog moet zetten?
Heey Nils,
heb je 2e script even aangepast:
heb je 2e script even aangepast:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : "";
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$_POST["id"]."' ,
'".$vonprijs."' ,
'".$_POST["optie"]."' ,
'".$_POST["koop"]."' ,
'".$_POST["verkoop"]."' ,
'".$_POST["transport"]."' );";
?>
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : "";
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$_POST["id"]."' ,
'".$vonprijs."' ,
'".$_POST["optie"]."' ,
'".$_POST["koop"]."' ,
'".$_POST["verkoop"]."' ,
'".$_POST["transport"]."' );";
?>
Mr. de Jong:
Bedankt, volgens mij gaat dat echter niet werken omdat dan de vonprijs nog steeds opgenomen is in de field list of zie ik dat verkeerd?
Ook behoud ik daar het probleem dat ik niet weet of ik nog een komma na de value moet zetten, omdat ik niet weet of er nog wel waardes na komen.
Bedankt, volgens mij gaat dat echter niet werken omdat dan de vonprijs nog steeds opgenomen is in de field list of zie ik dat verkeerd?
Ook behoud ik daar het probleem dat ik niet weet of ik nog een komma na de value moet zetten, omdat ik niet weet of er nog wel waardes na komen.
En nu blokkeer ik. Ik begrijp er helemaal niks meer van.
Paar vragen:
Wat wil je precies?
Wat wil je wat er door de gebruiker wordt ingevuld?
Paar vragen:
Wat wil je precies?
Wat wil je wat er door de gebruiker wordt ingevuld?
Ik heb een formulier, met de volgende velden:
Kavel
VON Prijs
Optie
Koop
Verkoopdatum
Transportdatum
De enige 2 verplichte velden zijn kavel en von prijs, de rest kan ik leeg blijven.
Vervolgens wil ik het met de query zo opvangen dat optie,koop,verkoopdatum en transportdatum alleen worden opgenomen als ze ook daadwerkelijk zijn ingevuld.
Dat is me gelukt dmv de shorthand if else notatie die je mij gaf.
Echter, stel verkoopdatum is ingevuld maar transportdatum NIET.
Verkoopdatum echo 't een komma aan het einde van de waarde om aan te geven dat er nog een waarde komt ( transportdatum) echter hier wordt niets ingevuld en staat die komma er dus voor niks.
Ik hoop dat het zo duidelijk is.
Ter verduidelijking, als ik transport nu niet invul krijg ik deze query:
INSERT INTO nils_05021 ( kavel ,vonprijs ,koop ,) VALUES( '7' ,9000 , 'x', );
Deze werkt niet, want hij sluit af met een ,
Kavel
VON Prijs
Optie
Koop
Verkoopdatum
Transportdatum
De enige 2 verplichte velden zijn kavel en von prijs, de rest kan ik leeg blijven.
Vervolgens wil ik het met de query zo opvangen dat optie,koop,verkoopdatum en transportdatum alleen worden opgenomen als ze ook daadwerkelijk zijn ingevuld.
Dat is me gelukt dmv de shorthand if else notatie die je mij gaf.
Echter, stel verkoopdatum is ingevuld maar transportdatum NIET.
Verkoopdatum echo 't een komma aan het einde van de waarde om aan te geven dat er nog een waarde komt ( transportdatum) echter hier wordt niets ingevuld en staat die komma er dus voor niks.
Ik hoop dat het zo duidelijk is.
Ter verduidelijking, als ik transport nu niet invul krijg ik deze query:
INSERT INTO nils_05021 ( kavel ,vonprijs ,koop ,) VALUES( '7' ,9000 , 'x', );
Deze werkt niet, want hij sluit af met een ,
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
Btw waar $_POST['id'] voor?
project ID, intern gebruik. Er is ook nog een andere auto incrementing kolom, als dat is waar je op doelt.
intussen is dit de query, en ik zie door de bomen het bos niet meer:
intussen is dit de query, en ik zie door de bomen het bos niet meer:
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
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
<?PHP
$vonprijs = (!empty($_POST["vonprijs"])) ? "vonprijs ," : "";
$vonprijs2 = (!empty($_POST["vonprijs"])) ? $_POST["vonprijs"]." ," : "";
$optie = (!empty($_POST["optie"])) ? "optie ," : "";
$optie2 = (!empty($_POST["optie"])) ? "'".$_POST["optie"]."' ," : "";
$koop = (!empty($_POST["koop"])) ? "koop ," : "";
$koop2 = (!empty($_POST["koop"])) ? "'".$_POST["koop"]."', " : "";
$verkoop = (!empty($_POST["verkoop"])) ? "verkoop ," : "";
$verkoop2 = (!empty($_POST["verkoop"])) ? "'".$_POST["verkoop"]."' ," : "";
$transport = (!empty($_POST["transport"])) ? "transport" : "";
$transport2 = (!empty($_POST["transport"])) ? "'".$_POST["transport"]."'" : "";
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,".
$vonprijs."".
$optie."".
$koop."".
$verkoop."".
$transport.")
VALUES(
'".$_POST["id"]."' ,".
$vonprijs2."
".$optie2."
".$koop2."
".$verkoop2."
".$transport2.");";
mysql_query($sql) or die($sql."<br>".mysql_error());
?>
[/CODE]
$vonprijs = (!empty($_POST["vonprijs"])) ? "vonprijs ," : "";
$vonprijs2 = (!empty($_POST["vonprijs"])) ? $_POST["vonprijs"]." ," : "";
$optie = (!empty($_POST["optie"])) ? "optie ," : "";
$optie2 = (!empty($_POST["optie"])) ? "'".$_POST["optie"]."' ," : "";
$koop = (!empty($_POST["koop"])) ? "koop ," : "";
$koop2 = (!empty($_POST["koop"])) ? "'".$_POST["koop"]."', " : "";
$verkoop = (!empty($_POST["verkoop"])) ? "verkoop ," : "";
$verkoop2 = (!empty($_POST["verkoop"])) ? "'".$_POST["verkoop"]."' ," : "";
$transport = (!empty($_POST["transport"])) ? "transport" : "";
$transport2 = (!empty($_POST["transport"])) ? "'".$_POST["transport"]."'" : "";
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,".
$vonprijs."".
$optie."".
$koop."".
$verkoop."".
$transport.")
VALUES(
'".$_POST["id"]."' ,".
$vonprijs2."
".$optie2."
".$koop2."
".$verkoop2."
".$transport2.");";
mysql_query($sql) or die($sql."<br>".mysql_error());
?>
[/CODE]
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
Geen nood aan de man.
Je mag $_POST['id'] weg laten, nergens voor nodig als het in de database op auto incrediment staat :)
Ik denk dat dit wel goed is :)
Je mag $_POST['id'] weg laten, nergens voor nodig als het in de database op auto incrediment staat :)
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
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
<?php
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : false;
$kavel = (!empty($_POST['kavel'])) ? $_POST['kavel'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : 'NULL';
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : 'NULL';
$verkoop = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : 'NULL';
$transport = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : 'NULL';
if($vonprijs == false)
{
trigger_error("U moet de vonprijs wel invullen.");
}
elseif($kavel == false)
{
trigger_error("U moet de kavel wel invullen.");
}
else
{
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
'".$koop."' ,
'".$verkoop."' ,
'".$transport."' );";
}
?>
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : false;
$kavel = (!empty($_POST['kavel'])) ? $_POST['kavel'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : 'NULL';
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : 'NULL';
$verkoop = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : 'NULL';
$transport = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : 'NULL';
if($vonprijs == false)
{
trigger_error("U moet de vonprijs wel invullen.");
}
elseif($kavel == false)
{
trigger_error("U moet de kavel wel invullen.");
}
else
{
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
'".$koop."' ,
'".$verkoop."' ,
'".$transport."' );";
}
?>
Ik denk dat dit wel goed is :)
Ik krijg nu dit:
Had ik even moeten vermelden, verkoop en transport zijn date velden.
EDIT:
En dit is nu de query:
Code (php)
1
2
2
INSERT INTO nils_05021 ( kavel , vonprijs, optie , koop , verkoop , transport) VALUES( '8' , '6' , '' , 'x' , '' , '05-05-05' );
Incorrect date value: '' for column 'verkoop' at row 1
Incorrect date value: '' for column 'verkoop' at row 1
Had ik even moeten vermelden, verkoop en transport zijn date velden.
EDIT:
En dit is nu de query:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : false;
$kavel = (!empty($_POST['id'])) ? $_POST['id'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : NULL;
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : NULL;
$verkoop = (!empty($_POST['verkoop'])) ? $_POST['verkoop'] : NULL;
$transport = (!empty($_POST['transport'])) ? $_POST['transport'] : NULL;
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
'".$koop."' ,
'".$verkoop."' ,
'".$transport."' );";
$kavel = (!empty($_POST['id'])) ? $_POST['id'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : NULL;
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : NULL;
$verkoop = (!empty($_POST['verkoop'])) ? $_POST['verkoop'] : NULL;
$transport = (!empty($_POST['transport'])) ? $_POST['transport'] : NULL;
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
'".$koop."' ,
'".$verkoop."' ,
'".$transport."' );";
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
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
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
<?php
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : false;
$kavel = (!empty($_POST['kavel'])) ? $_POST['kavel'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : 'NULL';
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : 'NULL';
$verkoop = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : time();
$transport = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : 'NULL';
if($vonprijs == false)
{
trigger_error("U moet de vonprijs wel invullen.");
}
elseif($kavel == false)
{
trigger_error("U moet de kavel wel invullen.");
}
else
{
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
'".$koop."' ,
'".$verkoop."' ,
'".$transport."' );";
}
?>
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : false;
$kavel = (!empty($_POST['kavel'])) ? $_POST['kavel'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : 'NULL';
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : 'NULL';
$verkoop = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : time();
$transport = (empty($_POST['verkoop'])) ? $_POST['verkoop'] : 'NULL';
if($vonprijs == false)
{
trigger_error("U moet de vonprijs wel invullen.");
}
elseif($kavel == false)
{
trigger_error("U moet de kavel wel invullen.");
}
else
{
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
koop ,
verkoop ,
transport)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
'".$koop."' ,
'".$verkoop."' ,
'".$transport."' );";
}
?>
INSERT INTO nils_05021 ( kavel , vonprijs, optie , koop , verkoop , transport) VALUES( '' , '2' , 'x' , '' , '' , '' );
Incorrect date value: '' for column 'verkoop' at row 1
Ik neem trouwens aan dat NULL niet tussen de ' en ' quotes moet toch?
Probleem is nu dus in principe dat het date veld geen null accepteerd toch? Dit is de tabel:
`number` INT(1) NOT NULL AUTO_INCREMENT ,
`kavel` VARCHAR(100) NOT NULL ,
`vonprijs` FLOAT(10) NULL ,
`optie` VARCHAR(1) NULL ,
`koop` VARCHAR(1) NULL ,
`verkoop` DATE NULL ,
`transport` DATE NULL ,
PRIMARY KEY ( `number` )
Incorrect date value: '' for column 'verkoop' at row 1
Ik neem trouwens aan dat NULL niet tussen de ' en ' quotes moet toch?
Probleem is nu dus in principe dat het date veld geen null accepteerd toch? Dit is de tabel:
`number` INT(1) NOT NULL AUTO_INCREMENT ,
`kavel` VARCHAR(100) NOT NULL ,
`vonprijs` FLOAT(10) NULL ,
`optie` VARCHAR(1) NULL ,
`koop` VARCHAR(1) NULL ,
`verkoop` DATE NULL ,
`transport` DATE NULL ,
PRIMARY KEY ( `number` )
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
Kheb m werkend :D
HEEL erg bedankt Mr. de Jong, je hebt geen idee hoe hard ik dit waardeer op een brakke maandag morgen!
HEEL erg bedankt Mr. de Jong, je hebt geen idee hoe hard ik dit waardeer op een brakke maandag morgen!
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
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
$vonprijs = (!empty($_POST["vonprijs"])) ? $_POST['vonprijs'] : false;
$kavel = (!empty($_POST['id'])) ? $_POST['id'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : NULL;
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : NULL;
$verkoop = (!empty($_POST['verkoop'])) ? "verkoop ," : NULL;
$transport = (!empty($_POST['transport'])) ? "transport ," : NULL;
$verkoop2 = (!empty($_POST['verkoop'])) ? "'".$_POST["verkoop"]."' ," : NULL;
$transport2 = (!empty($_POST['transport'])) ? "'".$_POST["transport"]."' ," : NULL;
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
".$verkoop."
".$transport."
koop)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
".$verkoop2."
".$transport2."
'".$koop."' );";
mysql_query($sql) or die($sql."<br>".mysql_error());
$kavel = (!empty($_POST['id'])) ? $_POST['id'] : false;
$optie = (!empty($_POST['optie'])) ? $_POST['optie'] : NULL;
$koop = (!empty($_POST['koop'])) ? $_POST['koop'] : NULL;
$verkoop = (!empty($_POST['verkoop'])) ? "verkoop ," : NULL;
$transport = (!empty($_POST['transport'])) ? "transport ," : NULL;
$verkoop2 = (!empty($_POST['verkoop'])) ? "'".$_POST["verkoop"]."' ," : NULL;
$transport2 = (!empty($_POST['transport'])) ? "'".$_POST["transport"]."' ," : NULL;
$sql = "INSERT INTO ".$_POST["tablename"]." (
kavel ,
vonprijs,
optie ,
".$verkoop."
".$transport."
koop)
VALUES(
'".$kavel."' ,
'".$vonprijs."' ,
'".$optie."' ,
".$verkoop2."
".$transport2."
'".$koop."' );";
mysql_query($sql) or die($sql."<br>".mysql_error());
En nu niet vergeten de nodige beveiliging toe te passen. Nu zet je namelijk POST variabelen nog steeds direct in je query, iets dat je nooit moet doen!
Dit zou de minimale vorm van beveiliging zijn, maar iets uitgebreider kan natuurlijk geen kwaad. Controleer dus ook of de opgegeven velden wel bevatten wat ze zouden moeten bevatten, niet alleen of ze wel gevuld zijn...
Code (php)
1
2
3
2
3
<?php
$optie = (!empty($_POST['optie'])) ? mysql_real_escape_string($_POST['optie']) : NULL;
?>
$optie = (!empty($_POST['optie'])) ? mysql_real_escape_string($_POST['optie']) : NULL;
?>
Dit zou de minimale vorm van beveiliging zijn, maar iets uitgebreider kan natuurlijk geen kwaad. Controleer dus ook of de opgegeven velden wel bevatten wat ze zouden moeten bevatten, niet alleen of ze wel gevuld zijn...




