Versio

shorthand if else

Overzicht Reageren

Nils Kuijpers

Nils Kuijpers

03/11/2008 10:25:00
Quote Anchor link
Hey,

Dit is de query die ik gebruik om gegevens in de database te injecteren:

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
$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());


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)
PHP script in nieuw venster Selecteer het PHP script
1
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"]."' );";
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
 
PHP hulp

PHP hulp

25/05/2012 15:43:36
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Alexander de Jong

Alexander de Jong

03/11/2008 10:44:00
Quote Anchor link
Dat is heel makkelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$vonprijs
= (!empty$_POST["vonprijs"])) ? $_POST["vonprijs"] : "";
?>


En nog iets, ik kan heel makkelijk in vonprijs het volgende zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
; DROP TABLE tabelnaam


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.
 
Tikkes C

Tikkes C

03/11/2008 10:45:00
Quote Anchor link
je kan werken met if-else of cases...

if-else

case
 
Nils Kuijpers

Nils Kuijpers

03/11/2008 11:04:00
Quote Anchor link
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?
 
Alexander de Jong

Alexander de Jong

03/11/2008 11:08:00
Quote Anchor link
Heey Nils,

heb je 2e script even aangepast:

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
<?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"]."' );";
?>
 
Nils Kuijpers

Nils Kuijpers

03/11/2008 11:12:00
Quote Anchor link
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.
 
Alexander de Jong

Alexander de Jong

03/11/2008 11:15:00
Quote Anchor link
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?
 
Nils Kuijpers

Nils Kuijpers

03/11/2008 11:19:00
Quote Anchor link
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 ,
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
 
Alexander de Jong

Alexander de Jong

03/11/2008 11:37:00
Quote Anchor link
Btw waar $_POST['id'] voor?
 
Nils Kuijpers

Nils Kuijpers

03/11/2008 11:39:00
Quote Anchor link
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:

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
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]
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
 
Alexander de Jong

Alexander de Jong

03/11/2008 11:43:00
Quote Anchor link
Geen nood aan de man.

Je mag $_POST['id'] weg laten, nergens voor nodig als het in de database op auto incrediment staat :)

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
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."' );";
}

?>


Ik denk dat dit wel goed is :)
 
Nils Kuijpers

Nils Kuijpers

03/11/2008 11:49:00
Quote Anchor link
Ik krijg nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Had ik even moeten vermelden, verkoop en transport zijn date velden.

EDIT:

En dit is nu de query:

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
$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."' );";
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
 
Alexander de Jong

Alexander de Jong

03/11/2008 11:52:00
Quote Anchor link
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
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."' );";
}

?>
 
Nils Kuijpers

Nils Kuijpers

03/11/2008 11:55:00
Quote Anchor link
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` )
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
 
Nils Kuijpers

Nils Kuijpers

03/11/2008 12:23:00
Quote Anchor link
Kheb m werkend :D

HEEL erg bedankt Mr. de Jong, je hebt geen idee hoe hard ik dit waardeer op een brakke maandag morgen!

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
$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());
 
Joren de Wit
Beheerder

Joren de Wit

03/11/2008 12:28:00
Quote Anchor link
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!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$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...
 



Overzicht Reageren

Get Adobe Flash player