Valiedierung in CustomerTicketMessage.dtl

Hilfe zu Znuny Problemen aller Art
Locked
zrako02
Znuny newbie
Posts: 55
Joined: 13 Nov 2006, 09:01

Valiedierung in CustomerTicketMessage.dtl

Post by zrako02 »

Hallo,
ich möchte in der CustomerTicketMessage.dtl das freie textfeld nr 1 ansprechen und damit eine Validierung der eingebenen Daten durchführen (so wie es mit Subject und Body schon geschieht).
Eigentlich sollte doch eine Überprüfung ob überhaupt etwas eingeben wurde so gehen:
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (TicketFreeText1.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}

else {
return true;
}
}


funktioniert aber nicht für TicketFreeText1
Wie muss ich das Feld denn ansprechen?
ah
Znuny newbie
Posts: 8
Joined: 16 Sep 2006, 23:13
Znuny Version: 2.4.7

Post by ah »

Ungetestet, aber hiermit sollte es klappen:

Code: Select all

-else if (TicketFreeText1.value == "") {
+else if (document.compose.TicketFreeText1.value == "") {
     alert('$JSText{"Schreib was in mich rein!"}');
-    document.compose.Body.focus();
+    document.compose.TicketFreeText1.focus();
     return false;
 }
Produktiv-System: Ubuntu 8.04.4 LTS, OTRS 2.4.7, Apache 2.2.8, mod_perl 2.0.3, MySQL 5.0.51
Test-System: Ubuntu 8.04.4 LTS, OTRS 2.4.7, Apache 2.2.8, mod_perl 2.0.3, MySQL 5.0.51
zrako02
Znuny newbie
Posts: 55
Joined: 13 Nov 2006, 09:01

Post by zrako02 »

Ja. Du hast recht so klappt es.

Danke für die schnelle Hilfe!! :D :D
zrako02
Znuny newbie
Posts: 55
Joined: 13 Nov 2006, 09:01

Bitte nochmals um Hilfe bei Validierung

Post by zrako02 »

Hallo, ich möchte nun die Eingabe des FreeText -Feldes gegen einen Datenbankeintrag validieren: Folgender Code
# --
# CustomerMessageNew.dtl - provides HTML form for customer message
# Copyright (C) 2001-2006 OTRS GmbH, http://otrs.org/
# --
# $Id: CustomerTicketMessage.dtl,v 1.5 2006/10/12 10:16:00 martin Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see http://www.gnu.org/licenses/gpl.txt.
# --
<!-- start form -->
<script language="JavaScript" type="text/javascript">
<!--
function findserial($seriennr)
{ <?php
$db = mysql_connect("localhost", "user", "password");
$sqlab = "select seriennr, ipadress, hostname, betreutbis form plus700";
$sqlab .= " where seriennr like '$seriennr' ";
$res = mysql_db_query("otrsPlus700", $sqlab);
$num = mysql_num_rows($res);
echo "$num"
if ($num==0) return False;

for ($i=0; $i<$num; $i++)
{
$sn = mysql_result($res, $i, "seriennr");
echo "$sn"
document.compose.TicketFreeText1.value = $sn;
}
mysql_close($db);
return True;
?>
}
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (document.compose.TicketFreeText1.value == "") {
alert('$JSText{"Seriennummer bitte ausfüllen"}');
document.compose.TicketFreeText1.focus();
return false;
}

else {
if findserial(document.compose.TicketFreeText1.value)
return true;
echo "True"
else
echo "False"
return false;
}
}


leider ist hier ein Fehler drin. Egal ob die Seriennummer existiert oder nicht der Datensatz wird immer geschrieben d.h. submit_compose erhält immer true. Wo liegt der Fehler?

:oops: :oops:
TheFlyer
Znuny newbie
Posts: 74
Joined: 22 Feb 2006, 11:20
Location: Erlensee

Post by TheFlyer »

Dein letzter Abschnitt ist etwas daneben.... Von den Klammern her meine ich.

Probier's mal so:

Code: Select all

else {
  if findserial(document.compose.TicketFreeText1.value) 
    return true; 
  else 
    return false; 
}
Die "echo"-Ausgaben bringen dir in der Reihenfolge ohnehin nichts, da ja anschließend sofort ein neuer Seitenaufbau erfolgt...
... und führe mich nicht in Versuchung, sondern suche mich in der Unterführung ...
------
Produktiv: OTRS 2.1.4 auf Fedora Core 5, MySQL 5 / Apache 2 (mod_fastcgi)
Test: OTRS 2.1.x CVS auf Fedora Core 5, MySQL 5 / Apache 2 (mod_fastcgi)
zrako02
Znuny newbie
Posts: 55
Joined: 13 Nov 2006, 09:01

Validierung FreeTextFeld funktioniert auch so nicht

Post by zrako02 »

funktioniert auch so nicht:
<!-- start form -->
<script language="JavaScript" type="text/javascript">
<!--
function findserial($seriennr)
{ <?php
$db = mysql_connect("localhost", "user", "password");
$sqlab = "select seriennr, ipadress, hostname, betreutbis form plus700";
$sqlab .= " where seriennr like '$seriennr' ";
$res = mysql_db_query("otrsPlus700", $sqlab);
$num = mysql_num_rows($res);
echo "$num"
if ($num==0) return False;

for ($i=0; $i<$num; $i++)
{
$sn = mysql_result($res, $i, "seriennr");
echo "$sn"
document.compose.TicketFreeText1.value = $sn;
}
mysql_close($db);
return True;
?>
}
function submit_compose()
{
if (document.compose.Subject.value == "") {
alert('$JSText{"A message should have a subject!"}');
document.compose.Subject.focus();
return false;
}
else if (document.compose.Body.value == "") {
alert('$JSText{"A message should have a body!"}');
document.compose.Body.focus();
return false;
}
else if (document.compose.TicketFreeText1.value == "") {
alert('$JSText{"Seriennummer bitte ausfüllen"}');
document.compose.TicketFreeText1.focus();
return false;
}

else {
if findserial(document.compose.TicketFreeText1.value)
return true;
else
return false;
}
}
liegt aber wohl daran dass die CustomerTicket.dtl ja eigentlich eine HTML-Datei wird und so die php-Anweisungen gar nicht als solche interpretiert werden.
Mein Aufgabenstellung ist eigentlich ganz einfach. Die Eingabe in das TicketFeeText1-Feld soll nur übernommen werden wenn die eingebene seriennummer in einer datenbank existiert (seriennumer ist ein eindeutiger datensatz , die sql-suchanweisung liefert also immer höchtens einen Datensatz zurück (wenn datensatz vorhanden) oder eben keinen)
Kann es sein dass ich die CustomerTicket.pm anspassen muss?
zrako02
Znuny newbie
Posts: 55
Joined: 13 Nov 2006, 09:01

Eingabevalidierung mit AJAX

Post by zrako02 »

Hallo,
nachdem ich mich jetzt etwas mit den möglichkeiten der Eingabevalidierung beschäftigt habe bin ich auf die AJAX-Technik gestossen. Hierfür gibt es auch schon einige Frameworks. Ein weit verbreitetes und stabiles scheint sajax zu sein welches auch gleich Perl-Unterstützung mitbringt. Hat jemand schon damit gearbeitet um z.Bsp eine Eingabevalidierung eines Freitextfeldes durchzuführen?

Wäre nett wenn jemand ein Beispiel hätte in Perl.




OTRS 2.1.4 for win32 | Windows Server 2003 R2 Standard Edition ServicePack1 | PHP Version 5.2.0
Locked