Markus Linds: Was ist hier falsch?

hi @all :)

Darf ich das nicht so schreiben...

if($feld, $feld1, $feld2, $feld3, $feld4)=="")
{echo "Wählen Sie bitte die roten Felder aus! $linkende"; exit;}

...also mit dem , ?

Wie kann ich das anderes schreiben, so dass von $feld bis $feld4 alles überprüft wird
und wenn kein Feld ausgewählt ist sollte halt der Text "Wählen Sie bitte die roten Felder aus!" erscheinen.

Danke für die Antworten ;)

Gruß
Markus Linds

  1. hi @all :)

    Darf ich das nicht so schreiben...

    if($feld, $feld1, $feld2, $feld3, $feld4)=="")
    {echo "Wählen Sie bitte die roten Felder aus! $linkende"; exit;}

    Probier es mal so

    if($feld || $feld1 || $feld2 || $feld3 || $feld4)=="")

    Gruß Jan

    1. Probier es mal so

      if($feld || $feld1 || $feld2 || $feld3 || $feld4)=="")

      Da bekommt ich als Fehler:
      "Parse error: parse error, unexpected T_IS_EQUAL in /www/htdocs/test/it/join.php on line 44" :(

      Gruß
      Markus Linds

    2. Moin!

      Probier es mal so

      Sinnloses Herumgerate bringt einen auch nicht weiter.

      if($feld || $feld1 || $feld2 || $feld3 || $feld4)=="")

      Da werden die boolschen Werte der Variablen zunächst Oder-verknüpft (d.h. Variablen mit Text sind true, leere Variablen oder eine mit dem String "0" (Null) sind false), und das Ergebnis (ein boolscher Wert) wird dann mit dem Leerstring verglichen.

      Klingt nicht nur nach Kuddelmuddel, ist es auch. Insbesondere weil nicht der gewünschte Effekt dabei rauskommt.

      • Sven Rautenberg
      1. Hallo,
        kann mir in diesem Zusammenhang bitte gerade jemand sagen, mit welcher Tastenkombi am PC diese || erzeugt werden?
        Merci Michi

        1. Hallo Michi

          kann mir in diesem Zusammenhang bitte gerade jemand sagen, mit welcher Tastenkombi am PC diese || erzeugt werden?

          Auf meinen (deutschen) Tastaturen:

          AltGr + >

          Letzte Taste ist bei mir mit ><| (untereinander angeordnet) beschriftet und befindet sich links vom Y.

          Freundliche Grüße

          Vinzenz

          1. Hallo Vinzenz,
            danke, das Symbol ist auf meiner Laptoptastatur nämlich nicht eingezeichnet.
            Gruß Michi   |||||||||||||||:D

    3. Heißa, Jan,

      if($feld || $feld1 || $feld2 || $feld3 || $feld4)=="")

      Quatsch, erstens mal fehlt eine Klammer auf und zweitens mal vergeichst du hier einen boolschen Wert mit einem leeren String. Beschäftigt euch beide mit den Grundprinzipien von PHP.

      So gesehen gibt es keine vorgegebene Lösung für dein Vorhaben, Markus, du könntest dir aber zum Beispiel eine Funktion schreiben, die das für dich überprüft, was du willst. Auch wenn das umständlich werden könnte. (A propos: Kann man in PHP Funktionen definieren, die beliebig viele Parameter erwarten?)

      Ansonsten schaut dein Code doch sehr danach aus, als würde hier etwas per Formular übertragen werden. Verwende daher $_REQUEST['feld'] statt $feld.

      Gautera!
      Grüße aus Biberach Riss,
      Candid Dauth

      --
      „Jemanden zu lieben bedeutet, ihn nicht zu erdrücken, auch wenn man es gerne wollte – aus Liebe.“ | Mein SelfCode
      http://cdauth.de/
      1. echo $begrüßung;

        A propos: Kann man in PHP Funktionen definieren, die beliebig viele Parameter erwarten?

        Ja. Man kann prinzipiell mehr Parameter an eine Funktion übergeben, als laut Deklaration erwartet werden. Alle Parameter kann man mit func_get_args() abfragen.

        echo "$verabschiedung $name";

  2. Moin!

    Darf ich das nicht so schreiben...

    Nein.

    Dass du diverse Variablen mit demselben Wert vergleichen willst, ist ein nicht durch abgekürzte Schreibweise ausdrückbarer Sonderfall - du mußt das zwingend ausgeschrieben aufführen.

    Und als Nebenbemerkung: Wenn du die Feldnamen günstig wählst, und $_GET bzw. $_POST verwendest, könntest du den Vergleich tatsächlich doch noch abkürzen durch eine passend programmierte Schleife.

    • Sven Rautenberg
  3. Hallo Markus

    Darf ich das nicht so schreiben...

    if($feld, $feld1, $feld2, $feld3, $feld4)=="")

    Wie Du dem PHP-Handbuch, Abschnitt Vergleichsoperatoren und Abschnitt Logische Operatoren, entnehmen kannst, verknüpfen diese beiden Operatorenarten genau zwei Operanden. Der Komma-Operator ist in der Operator-Rangfolge zwar aufgeführt, ich konnte jedoch keine Beschreibung dazu finden. Er macht allerdings das gleiche wie sein Gegenstück in C, siehe Komma-Operator in C.

    Wie kann ich das anderes schreiben, so dass von $feld bis $feld4 alles überprüft wird

    Eine Möglichkeit wäre z.B.:

      
      if ( $feld == "" || $feld1 == "" || $feld2 == "" || $feld3 == "" )  
    
    

    Du könntest die einzelnen Vergleiche nochmals in Klammern setzen, dies ist deswegen nicht notwendig, weil die Vergleichsoperatoren eine höhere Priorität aufweisen als die logischen Operatoren, siehe Operator-Rangfolge.

    Ach ja, was ich noch ergänzen möchte:
    Möglicherweise ist der Einsatz der Funktion empty() sinnvoller als der Vergleich mit einer leeren Zeichenkette.

    Freundliche Grüße

    Vinzenz