Jenny: If-Abfrage vereinfachen

Hallo :-)

ich habe ein PHP-Formular und möchte eine if-Abfrage machen, wenn eines der Felder ausgefüllt ist.

Dazu ist mir nichts besseres eingefallen, als für jedes einzelne Feld einen Eintrag in der if-Abfrage zu machen:

if($kundenfreundlichkeit or $flexibel or $umgangsonstiges or $zufrieden or $zufriedensonstiges or $websiteuebersicht or $websiteinhalt or $websitedesign or $websiteladezeiten or $websitesonstiges or $pcos or $pcres or $pcbrowser or $pcconnection)

Gibts ne Möglichkeit das Ganze etwas zu vereinfachen? *gg*

Liebe Grüsse
Jenny

  1. Hi,

    ich persönlich bin altmodisch und würde in der Tat für jedes Feld eine komplett eigene Abfrage machen. Grund dafür ist, das manche Felder nicht nur daraufhin geprüft werden müssen _ob_ sie ausgefüllt sind sonder auch _wie_ sie ausgefüllt wurden - sprich: Kann der Inhalt stimmen.

    Ausserdem hast Du nur dann meiner Meinung nach eine gute Möglichkeit auch hinter das betroffene Feld eine Meldung auszugeben.

    Das ist allerdings auch eine Philosophiefrage.

    Zusätzlich würde ich noch per JavaScript bereits auf der Clientseite versuchen solche Fehler abzufangen - spart Frust beim Anwender.

    Gruß

    Axel

    1. Das mit dem Javascript ist eine gute idee, mache ich auch so, serverseitig könntest du folgendes machen, um fehler abzufangen:

      mach eine funktion, die das formular zeichnet, diese hat optionale values für jede eingabe, die per default auf einem leeren string sind.

      also:

      function drawform($name="",$nummer="")
      {
      global $PHP_SELF;
      print<<<end
      <form action="$PHP_SELF" medthod="post">
      <input type="text" name="name" value="$name">
      <input type="text" name="nummer" value="$nummer">
      </form>
      end;
      }
      dass das formular an sich selbst geschickt wird, ist wichtig.
      Nun kannst du am anfang überüprüfen, ob die angaben vorhanden sind, wenn nein, führe drawform(); aus, wenn ja, sie aber falsch sind, gib die entsprechenden fehlermeldungen aus, und führe dann drawform aus, allerdings diesmal: drawform($name,$nummer)
      jetzt sieht der user die fehlermeldungen, was alles falsch ist, kann seine einträge allerdings sofort bearbeiten...

      um weiteren code musst du dich kümmern..

  2. Ich mache das etwas anders.

    Das && ... ist ehrlich gesagt ziemlich ungeschickt, da du dem Client/User sagen solltest wo sein Fehler liegt...

    also
    fehler=0;
    if ($name=="") {$fehler=$fehler++;$fehlertext[fehler]="Name fehlt";}
    if ($strasse=="") {$fehler=$fehler++;$fehlertext[fehler]=="Straße fehlt";}
    ....
    if (!$fehler) //Kein Fehler vorhanden
    {
    verarbeite();
    }
    ....

    im BODY kannst du nun einbauen

    if ($fehler)
        for ($i=1;$i<=$fehler;$i++)
            echo $fehlertext[$i];

    hab das Script aber nicht getestet mag evt ein paar Syntaxfehler haben hab leider schon zu lange kein PHP mehr scripten dürfen:)

    1. hab das Script aber nicht getestet mag evt ein paar Syntaxfehler haben hab leider schon zu lange kein PHP mehr scripten dürfen:)

      Danke, ich werd das mal ausprobieren :-)

  3. Hi Jenny,

    if($kundenfreundlichkeit or $flexibel or $umgangsonstiges or
    $zufrieden or $zufriedensonstiges or $websiteuebersicht or
    $websiteinhalt or $websitedesign or $websiteladezeiten or
    $websitesonstiges or $pcos or $pcres or $pcbrowser or $pcconnection)
    Gibts ne Möglichkeit das Ganze etwas zu vereinfachen? *gg*

    ich kann mir nicht wirklich vorstellen, daß Du in all diesen Fällen
    _nur_ genau dasselbe tun willst - denn wofür hättest Du sonst so
    viele Variablen angelegt?

    Was ich mir allerdings vorstellen kann, ist, daß Du in all diesen
    Fällen _auch_ etwas Gemeinsames tun willst.
    Falls dies Zeit hat bis _nach_ der Behandlung der Unterschiede, kannst
    Du in jeder dieser Behandlungen ein Flag setzen (Achtung, nachfolgend
    Meta-Code, ich kann kein PHP):

    flag = 0;

    if ($kundenfreundlichkeit)
        { irgendwas;     flag = 1; }
    if ($zufrieden)
        { etwas_anderes; flag = 1; }
    ...

    und dann am Ende zusätzlich

    if ($flag)
       { das_gemeinsame; }

    Viele Grüße
          Michael