shorthand if else
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
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.
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?
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"]."' );";
?>
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.
Paar vragen:
Wat wil je precies?
Wat wil je wat er door de gebruiker wordt ingevuld?
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?
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
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 :)
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."' );";
}
?>
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
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());
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...