Fejl i formularkort - giver "uforudset hændelse"

Her kan du rapportere de fejl, som du finder ved brug af Saldi.

Redaktører: Agerskov, Peter Rude, Sarah Aagaard

Besvar
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Fejl i formularkort - giver "uforudset hændelse"

Indlæg af nielsrune »

Jeg har fundet en fejl i systemdata/formularkort.php i linje 373

Hvis jeg i indstiller vælger Formularer, vælger "Kontokort" som formular og "Mail tekst" som art kommer en "uforudset hændelse, ring til...."

Fejlen stammer fra den del af sql-strengen i linje 373, der hedder:

Kode: Vælg alt

and id!=''
Loggen skriver:

Kode: Vælg alt

-- Fejl!! delete from formularer where formular = '11' and art = '5' and sprog='Dansk' and id !='' and id != '' | ERROR:  invalid input syntax for integer: ""
LINE 1: ...r = '11' and art = '5' and sprog='Dansk' and id !='' and id ...
                                                             ^;
I databasen er feltet id af typen INTEGER NOT NULL. Jeg kan derfor ikke helt regne ud, hvad der er, der testes, da id ikke kan være null og ikke kan være '', altså en string.

Fremkommer i Saldi 3.3.3 på Debian 7.2 server med Postgresql 9.1+134wheezy4
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Indlæg af nielsrune »

Kildekoden i linje 373 hedder:

Kode: Vælg alt

db_modify("delete from formularer where formular = '$form_nr' and art = '$art_nr' and sprog='$formularsprog' and id!='$id1' and id != '$id2'",__FILE__ . " linje " . __LINE__);
Jeg har prøvet lidt forskellige ting på sqlfiddle.com, og det virker til, at fejlen opstår, primært fordi postgreSQL - modsat MySQL - ikke tillader at en integer (id) refereres som en string (quotes).
Men derudover bør der nok indsættes nogle tests i linje 358-366, da både $id1 og $id2 i mit tilfælde (hvor der ikke er defineret formulartekster) er tomme.
Besvar