Funktionsaufruf verschachteln?

Alles, was PHP betrifft, kann hier besprochen werden.

Funktionsaufruf verschachteln?

Postby juergen&lx » 01. March 2005 00:42

Hallo und guten Abend,

ich bastel gerade an einer Möglichkeit, numerische Felder auf Eingabefehler zu überprüfen.
Bei Fehler mit entsprechender Fehlermeldung zurück zur Eingabemaske.

Leider wird die Abfrage zuerst an "function add_media" gesandt, dann Abfrage an "function valid_num($ean..." und das war's. :!::?:
Der Rückgabecode zur Eingabemaske ist --$action1 = ""--.
Code: Select all
if ($action1 == "Add") {
    if ($order_no != "") {
      $store = $user->valid_num($field=Bestellnummer, $order_no,'-',strlen($order_no),'.-1234567890');
    }
    if ($isbn != "") {
      $store = $user->valid_num($field=ISBN, $isbn,'-',16,'-1234567890');
    }
    if ($ean != "") {
      $store = $user->valid_num($field=EAN, $ean,'-',13,'1234567890');
    }
      if ($store == "$field to long"){
        $message = "<font class=red>Nicht plausibel: $field-Nummer zu lang.</font>";
        $action="";
      }
      elseif ($store == "$field to short") {
        $message = "<font class=red>Nicht plausibel: $field-Nummer zu kurz.</font>";
        $action1 = "";
      }
      elseif ($store == "$field minus") {
        $message = "<font class=red>Nicht plausibel: $field: Unerlaubtes Minuszeichen am Anfang.</font>";
        $action1 = "";
      }
      elseif ($store == "$field bad sign") {
        $message = "<font class=red>Nicht plausibel: $field: Unerlaubte Zeichen.</font>";
        $action1 = "";
      }
      elseif ($store == "$field OK") {
        //$message = "";
      }

    $store = $user->add_media($username, $password, $m_titel, $ms_titel, $short, $medium, $publish, $order_no, $isbn, $ean, $link, $bild, $playtime, $stat);
    if ($store == "blank m_titel") {
        $message = "<font class=red>Medientitel: Feld darf nicht leer sein.</font>";
        $action1 = "";
    }
    elseif ($store == "blank medium") {
        $message = "<font class=red>Medium nicht eingeben.</font>";
        $action1 = "";
    }
    elseif ($store == "blank publish") {
        $message = "<font class=red>Verlag nicht ausgewählt.</font>";
        $action1 = "";
    }
    elseif ($store == "blank order_no") {
        $message = "<font class=red>Bestellnummer nicht eingegeben.</font>";
        $action1 = "";
    }
    elseif ($store == "blank short") {
        $message = "<font class=red>Kurzbezeichnung darf nicht leer sein.</font>";
        $action1 = "";
    }
    elseif ($store == 1) {
        $message = "<font class=green>Neuer Datensatz wurde hinzugefügt.</font>";
    }
    $message= $message."<br>".$store; // nur zur Kontrolle
}
So weit, so schlecht!

Dieses ist die Prüffunktion, welche für sich allein gut funktioniert
Code: Select all
    function valid_num($field,$str,$minus,$validlength,$validmask) {

       if ($minus != "" && (substr($str, 0, 1) == $minus)) { return "$field minus";
       }
       elseif (strspn($str, $validmask) == strlen($str) && $validlength > strlen($str)) { return "$field to short";
       }
       elseif (strspn($str, $validmask) == strlen($str) && $validlength < strlen($str)) { return "$field to long";
       }
       elseif (strspn($str, $validmask) == strlen($str) && $validlength ==strlen($str)) { return "$field OK";
       }
       else {return "$field bad sign";}
    }


function add_media mit Versuch //function $user->valid_num :x
Code: Select all
--snip
    //Check if fields are filled up
      if (trim($m_titel) == "") {return "blank m_titel";
      }
//      elseif (trim($isbn) != "") { $user->valid_num(ISBN, $isbn,'-',16,'1234567890');   
//return $user;
//      }
      elseif (trim($medium) == "") { return "blank medium";
      }
      elseif (trim($publish) == "") { return "blank publish";
      }
      elseif (trim($order_no) == "") { return "blank order_no";
      }
      elseif (trim($short) == "") { return "blank short";
      }
      $addmedia = "INSERT INTO

Im voraus vielen Dank
Jürgen
juergen&lx
 
Posts: 154
Joined: 18. February 2004 21:36
Location: in einem Dorf am Rande des Strombergs
Operating System: Linux

Postby jakimo72 » 03. March 2005 22:24

Hallo,

erste Anmerkung: einmal hast Du $action anstelle von $action1 geschrieben.

zweite Anmerkung:
In der Function add_media sollte es vermutlich
Code: Select all
return $user->valid_num('ISBN',$isbn,' ',16,'1234567890');

heissen.
Nun brauchst Du selbstverständlich in Deiner Hauptroutine
noch Abfragen nach "ISBN to short", "ISBN to long" usw...
hinter dem Aufruf von add_media().

dritte Anmerkung:
Die Variable $store wird im jedem Fall von
add_media() überschrieben. Vielleicht solltest Du Dir überlegen
den Aufruf von add_media noch in eine weiteres If zu kapseln,
und nur ausführen, wenn $action1 == "Add" ist.

Gruss
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests