raffiSSL
Lt. Junior Grade
- Registriert
- Feb. 2006
- Beiträge
- 289
Hallo,
ich habe da ein für mich nicht nachvollziehbares Problem in einem PHP-Skript. Ganz konkret geht es um die Behandlung der Eingaben 0 | 0,00 | 0.00 über ein Formular.
Ziel soll es sein diese Werte in eine MySQL-Tabelle zu schreiben, die zugehörige Spalte besitzt den Typ decimal (10,2).
Um die Eingabedaten DB-konform zu wandeln und evtl. kleinere Eingabefehler abzufangen arbeite ich mit folgenden Codezeilen:
Diesen Zeilen funktionieren soweit mir ersichtlich, das kann ich an der Ausgabe mit Hilfe von FirePHP erkennen. Die problematischen Eingaben führen alle zum gleichen Ergebnis:
Das für mich eigentlich sichtliche Problem tritt beim Ausführen eines insert-Statements weiter unten im Code auf. Dort prüfe ich auf
. Wenn ja, dann schreibe die Werte in die DB, wenn false, dann lasse die Spalte im Statement weg und schreibe den default-Wert in die Zelle (NULL).
Hier jetzt nochmal das komplette Statement:
Die oben genannten Eingaben führen immer dazu, dass NULL in die Zelle geschrieben wird. Nur will ich nicht so recht verstehen warum.
Danke und viele Grüße
ich habe da ein für mich nicht nachvollziehbares Problem in einem PHP-Skript. Ganz konkret geht es um die Behandlung der Eingaben 0 | 0,00 | 0.00 über ein Formular.
Ziel soll es sein diese Werte in eine MySQL-Tabelle zu schreiben, die zugehörige Spalte besitzt den Typ decimal (10,2).
Um die Eingabedaten DB-konform zu wandeln und evtl. kleinere Eingabefehler abzufangen arbeite ich mit folgenden Codezeilen:
PHP:
# ersetze alle Kommata durch Punkte
$personentage = str_replace(",", ".", $personentage);
# lese float Nummer aus und zähle gefundene Werte
# um evtl. Eingabefehler zu erkennen
$count = sscanf($personentage, "%f%s", $personentage, $temp);
Diesen Zeilen funktionieren soweit mir ersichtlich, das kann ich an der Ausgabe mit Hilfe von FirePHP erkennen. Die problematischen Eingaben führen alle zum gleichen Ergebnis:
- Wert von $personentage = 0
- Typ von $personentage = double
Das für mich eigentlich sichtliche Problem tritt beim Ausführen eines insert-Statements weiter unten im Code auf. Dort prüfe ich auf
PHP:
$personentage != NULL
Hier jetzt nochmal das komplette Statement:
PHP:
### CONTENT_TYPE_AUFTRAG ###
$query = "
insert into
content_type_auftrag
(
vid, nid, field_firma_nid,
field_startjahr_value, field_pr_number_value, field_pr_anzeigen_value,
field_zeit_abfragen_value, field_vkz_value,
field_auftragskategorie_nid, field_auftrag_uekat_nid
";
if ($personentage != NULL) {
$query .= " , field_auftrag_personentage_value";
}
$query .= "
)
values
(
(
select
max(nr.vid)
from
node_revisions nr
where
nr.nid = $n_id
),
$n_id,
(
select
n.nid
from
node n
where
n.title=\"$SQLpr_company\"
and
n.type='firma'
),
$pr_year, $pr_number, $pr_anzeigen, 1, '',
(
select
n.nid
from
node n
where
n.title=\"$SQLkategorie\"
and
n.type='kategorie'
),
(
select
n.nid
from
node n
where
n.title=\"$ueid\"
and
n.type='ueberstunden_kategorie'
)
";
if ($personentage != NULL) {
$query .= " , $personentage";
}
$query .= ")";
Danke und viele Grüße