Daten gehen "verloren"
Romans
- php
Hey leute
ich brauche dringend Hilfe, ich hoffe ihr wisst was ich falsch mache.
Ich hab ein Formular, und dieses möchte ich via JQuery.load an ein PHP Script senden und auswerten. Aufbau ist also folgender:
var date = $("#date").val();
var time = $("#time").val();
var arbeitsplatz = $("#arbeitsplatz").val();
var raum = $("#raum").val();
var kunde = $("#kname").val();
var abteilung = $("#abteilung").val();
var supporter = $("#supporter").val();
var problemtyp = $("#problemtyp").val();
var priority = $("#priority").val();
var desc = $("#desc").val();
$("#einfo").load("saveticket.php?date="+date+"&time="+time+"&arbeitsplatz="+arbeitsplatz+"&raum="+raum+"&kunde="+kunde+"&abteilung="+abteilung+"&supporter="+supporter+"&problemtyp="+problemtyp+"&priority="+priority+"&desc="+desc);
$date = $_REQUEST['date'];
$time = $_REQUEST['time'];
$arbe = $_REQUEST['arbeitsplatz'];
$raum = $_REQUEST['raum'];
$kund = $_REQUEST['kunde'];
$abte = $_REQUEST['abteilung'];
$supp = $_REQUEST['supporter'];
$prob = $_REQUEST['problemtyp'];
$prio = $_REQUEST['priority'];
$desc = $_REQUEST['desc'];
$name = explode(" ",$kund);
$vorn = $name[0];
$nachn = $name[count($name)-1];
$eintrag = "INSERT INTO ticket (vorname, surname, abteilung, arbeitsplatz, raum, datum, zeit, priority, supporter, beschreibung, problemtyp, status)
VALUES ('$vorn', '$nachn', '$abte', '$arbe', '$raum', '$date', '$time', '$prio', '$supp', '$desc', '$prob', '');";
$eintragen = mysql_query($eintrag);
Spannenderweisse, schaffen es aber nur Datum und Zeit und Zahlenwerte wie problemtyp, supporter und abteilung in die Datenbank. Alle Textwerte sind aber als "undefined" in der MySQL DB hinterlegt... Was mache ich da bitte falsch?
Als Extra verwirrung sind Datum und Zeit aber wie alle anderen nicht funktionierenden als VARCHAR definiert...
In Meinen Tests verwende ich weder Leerzeichen noch Sonderzeichen, was eventuell das Problem erklären könnte...
Bitte Hilfe :/
Grüsse,
Romans
Hi,
$("#einfo").load("saveticket.php?date="+date+"&time="+time+"&arbeitsplatz="+arbeitsplatz+"&raum="+raum+"&kunde="+kunde+"&abteilung="+abteilung+"&supporter="+supporter+"&problemtyp="+problemtyp+"&priority="+priority+"&desc="+desc);
Du kümmerst dich hier kein bisschen um die ggf. notwendige Kodierung von Werten.
Schau dir serialize an!
$name = explode(" ",$kund);
$vorn = $name[0];
$nachn = $name[count($name)-1];
Dass das keinesfalls das gewünschte liefern muss, ist dir doch wohl klar?
> ~~~php
$eintrag = "INSERT INTO ticket (vorname, surname, abteilung, arbeitsplatz, raum, datum, zeit, priority, supporter, beschreibung, problemtyp, status)
> VALUES ('$vorn', '$nachn', '$abte', '$arbe', '$raum', '$date', '$time', '$prio', '$supp', '$desc', '$prob', '');";
> $eintragen = mysql_query($eintrag);
Spannenderweisse, schaffen es aber nur Datum und Zeit und Zahlenwerte wie problemtyp, supporter und abteilung in die Datenbank. Alle Textwerte sind aber als "undefined" in der MySQL DB hinterlegt... Was mache ich da bitte falsch?
Hast du keinerlei Debugging betrieben - dir also bspw. die generierte Query mal zur Kontrolle ausgeben lassen?
Oder vorher erst mal geschaut, welche Werte überhaupt korrekt an das Script übergeben wurden, bspw. mittels print_r($_REQUEST)?
MfG ChrisB
Hi,
$("#einfo").load("saveticket.php?date="+date+"&time="+time+"&arbeitsplatz="+arbeitsplatz+"&raum="+raum+"&kunde="+kunde+"&abteilung="+abteilung+"&supporter="+supporter+"&problemtyp="+problemtyp+"&priority="+priority+"&desc="+desc);
Du kümmerst dich hier kein bisschen um die ggf. notwendige Kodierung von Werten.
Schau dir serialize an!
OMG! Wie konnte ich nur ohne das Leben... und ich denk mir noch dafür muss es doch auch irgentwas geben... DANKE!
$name = explode(" ",$kund);
$vorn = $name[0];
$nachn = $name[count($name)-1];
> Dass das keinesfalls das gewünschte liefern muss, ist dir doch wohl klar?
>
Ist mir auch klar geworden, auch wenn ich nicht verstehe warum.
Name = Test Name
Name[] = ["Test","Name"]
count(Name[]) = 2 (-1 = 1)
Name[1] = Name ??
Aber egal ^^
> > ~~~php
$eintrag = "INSERT INTO ticket (vorname, surname, abteilung, arbeitsplatz, raum, datum, zeit, priority, supporter, beschreibung, problemtyp, status)
> > VALUES ('$vorn', '$nachn', '$abte', '$arbe', '$raum', '$date', '$time', '$prio', '$supp', '$desc', '$prob', '');";
> > $eintragen = mysql_query($eintrag);
Spannenderweisse, schaffen es aber nur Datum und Zeit und Zahlenwerte wie problemtyp, supporter und abteilung in die Datenbank. Alle Textwerte sind aber als "undefined" in der MySQL DB hinterlegt... Was mache ich da bitte falsch?
Das Problem hat sich durch die jQuery funktion erledigt, also danke nochmal
Hi,
$name = explode(" ",$kund);
$vorn = $name[0];
$nachn = $name[count($name)-1];
>
> > Dass das keinesfalls das gewünschte liefern muss, ist dir doch wohl klar?
> Ist mir auch klar geworden, auch wenn ich nicht verstehe warum.
Karl Theodor Freiherr zu Copy and Paste
Daraus machst Du
Vorname: Karl
Nachname: Paste
statt korrekt:
Vorname: Karl Theodor
Nachname: Freiherr zu Copy and Paste
Es ist ungünstig, mehrere Datenteile (z.B. Vorname+Nachname oder Straße+Hausnummer oder ...) in einem Feld abzufragen und dann aufzutrennen zu versuchen.
Denn Du kannst mechanisch kaum ermitteln, wo die Trennstelle ist.
> Name = Test Name
> Name[] = ["Test","Name"]
> count(Name[]) = 2 (-1 = 1)
> Name[1] = Name ??
Du gehst von einem Spezialfall aus. Es gibt wesentlich kompliziertere Fälle als nur "ein Vorname + ein Nachname"
cu,
Andreas
--
[Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)
[O o ostern ...](http://ostereier.andreas-waechter.de/)
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
Mahlzeit Romans,
Ergänzend zu allem bisher Gesagten:
$date = $_REQUEST['date'];
$time = $_REQUEST['time'];
$arbe = $_REQUEST['arbeitsplatz'];
$raum = $_REQUEST['raum'];
$kund = $_REQUEST['kunde'];
$abte = $_REQUEST['abteilung'];
$supp = $_REQUEST['supporter'];
$prob = $_REQUEST['problemtyp'];
$prio = $_REQUEST['priority'];
$desc = $_REQUEST['desc'];
Dieses einfache Umkopieren von Werten ist absolut sinnfrei.
$eintrag = "INSERT INTO ticket (vorname, surname, abteilung, arbeitsplatz, raum, datum, zeit, priority, supporter, beschreibung, problemtyp, status)
VALUES ('$vorn', '$nachn', '$abte', '$arbe', '$raum', '$date', '$time', '$prio', '$supp', '$desc', '$prob', '');";
Dieses einfache Verwenden von ungeprüften Werten ist in höchstem Maße gefährlich! Informiere Dich zum Thema Kontextwechsel!
$eintragen = mysql_query($eintrag);
Die hier fehlende Überprüfung des Rückgabewerts von mysql_query() samt ggf. erforderlicher Fehlerbehandlung ist nachlässig ...
MfG,
EKKi