Enrico: Parse error: syntax error, unexpected T_IS_IDENTICAL

Abermals Hallo,

so, mein Umgang mit Sessions funktioniert jetzt insoweit schon mal ganz gut, als dass Werte von einer Seite an eine andere übergeben werden.

Allerdings bekomme ich bei einer Vergleichsabfrage, in der ein String nach dem Vorkommen einer Artikelbezeichnung durchsucht wird (markierte Zeile), die Fehlermeldung "Parse error: syntax error, unexpected T_IS_IDENTICAL".

Ich bekomme Bestellpositionen als String mit immer gleichem Aufbau "Bezeichnung|Größe|Farbe|Anzahl|Einzelpreis|Summe" von einer anderen Seite geliefert.

Mit nachfolgendem Code möchte ich prüfen, ob ein Artikel mit der Bezeichnung $Bezeichnung bereits in der Session abgelegt wurde:

  
<?php  
  
   $ArtikelVorhanden = "nein";  
  
   if (empty ($_SESSION['ID']))  
   {  
      array_push ($_SESSION['ID'], $Bestellposition);  
   }  
   else  
   {  
      for ($i = 0; $i < count ($_SESSION['ID']); $i++)  
      {  
    ---> if (strpos ($_SESSION['ID'][$i], $Bezeichnung)) === true) <---  
         {  
            $ArtikelVorhanden = "ja";  
  
            $Spalte = explode ("|", $_SESSION['ID'][$i]); // Bezeichnung|Größe|Farbe|Anzahl|Einzelpreis|Summe  
  
            $Spalte[3] += 1;  
  
            implode ("|", $Bestellposition);  
  
            $_SESSION['ID'][$i] = $Bestellposition;  
  
            break;  
         }  
      }  
  
      if ($ArtikelVorhanden == "nein")  
      {  
         array_push ($_SESSION['ID'], $Bestellposition);  
      }  
   }  
  
?>  

Wenn ich mir über var_dump das Array $_SESSION ausgeben lasse, dann habe ich beispielsweise folgende Anzeige:

Array (1)
(
|    ['ID'] => Array (2)
|    (
|    |    ['0'] = String(50) "Gewandung für den Körper 1|M|Jeansblau|1|51.5|51.5"
|    |    ['1'] = String(51) "Gewandung für den Körper 2|M|Dunkelblau|1|41.1|41.1"
|    )
)

Den PHP-Code werde ich nachfolgend, wenn er korrekt funktioniert, noch über eine header-Anweisung erweitern, um doppeltes Ablegen zu unterbinden.

Was stimmt aber an meiner Abfrage nicht?

Danke für eure Hilfe.

Gruß
Enrico

  1. Hi,

    ---> if (strpos ($_SESSION['ID'][$i], $Bezeichnung)) === true) <---

    und was soll Deiner Meinung nach das === außerhalb der Bedingung (die ja durch ( und ) begrenzt ist)?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hi Andreas,

      das war eine Punktlandung, die Fehlermeldung ist schon mal weg, was für ein dummer Fehler!

      Der Abgleich klappt aber noch nicht, d.h. der String wird mir, trotz Übereinstimmung, mehrfach abgelegt, wenn ich die Seite aktualisiere.

      Aber die Fehlermeldung ist schon mal weg :-)

      Gruß
      Enrico

  2. Hallo Enrico,

    ---> if (strpos ($_SESSION['ID'][$i], $Bezeichnung)) === true) <---

    Es geht eine Klammer zu viel zu.                        ^^^^

    ciao
    romy

    1. Hallo romy,

      auch Dir danke, Andreas hatte mich auch gerade gestossen.

      Man schaut drüber und sieht es doch nicht ^^

      Die Fehlermeldung ist auf jeden Fall jetzt mal erledigt, jetzt muss ich nur noch den eigentlichen Vergleich überarbeiten, da mir Strings, trotz Übereinstimmung, mehrfach abgelegt werden, wenn ich die Seite aktualisiere.

      Gruß
      Enrico

      1. Hallo Enrico,

        Die Fehlermeldung ist auf jeden Fall jetzt mal erledigt, jetzt muss ich nur noch den eigentlichen Vergleich überarbeiten, da mir Strings, trotz Übereinstimmung, mehrfach abgelegt werden, wenn ich die Seite aktualisiere.

        Wo kommt $Bezeichnung her und was steht da drin?

        ciao
        romy

        1. Hallo romy,

          hatte hier wieder einen dummen Fehler drinnen, da strpos() niemals true, sondern immer einen Zahlenwert (wenn der Teilstring vorkommt) oder false liefert (siehe Antwort von Martin).

          Musste meine Abfrage lediglich entsprechend auf false umstellen.

          Gruß
          Enrico

          1. ...und auch noch die Variablen korrekt gesetzt ^^

      2. Hi,

        Man schaut drüber und sieht es doch nicht ^^

        Was für eine IDE verwendest du?

        In einem halbwegs vernünftigen Editor kann man mit dem Cursor auf eine Klammer gehen, und sich das „Gegenstück“ hervorheben lassen. Das hilft an solchen Stellen, wo ein Fehler an einer Stelle gemeldet wird, an der die Klammerung vielleicht etwas unübersichtlich geworden ist, meist recht schnell, die Ursache zu erkennen.
        Das kann z.B. sogar ein einfacher Editor wie bspw. Notepad++.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hallo ChrisB,

          Was für eine IDE verwendest du?

          Seit jetzt PSPad, denn da habe ich diese visuelle Gegenkontrolle, dass auch alle Klammern korrekt geschlossen sind :-)

          Gruß
          Enrico

  3. Hi,

    ---> if (strpos ($_SESSION['ID'][$i], $Bezeichnung)) === true) <---

    der Syntaxfehler durch die falsche Klammerung ist ja nun behoben. Dennoch ist diese Abfrage Humbug, denn strpos() liefert niemals true, sondern immer einen Zahlenwert (wenn der Teilstring vorkommt) oder false (wenn der Teilstring nicht vorkommt).

    Ciao,
     Martin

    --
    Wenn Zeit das Kostbarste ist, was wir haben, dann ist Zeitverschwendung die größte aller Verschwendungen.
      (Benjamin Franklin, amerikanischer Tüftler und Politiker)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo Martin,

      ok, jetzt ist es für mich Zeit, mich auf die Couch zurück zu ziehen und eine Pause einzulegen... ^^

      Danke für Deinen Hinweis, das wäre jetzt auch behoben.

      Gruß
      Enrico