joe: Parse error: parse error, expecting `']'' in

Guten Abend!
Ich programmiere eine Art Mini-Shop mit php.
Dabei werden auf index.php Artikelnummer, Einzelpreis und Menge per Formular abgefragt, an bestellen.php weitergegeben, wo das bestellte in einer Tabelle ausgegeben werden soll.

live-demo:
index.php
bestellen.php
Fehlermeldung:
Parse error: parse error, expecting `']'' in /home/k6php/public_html/jswoboda/php05_shop/bestellen.php on line 16

index.php
 <form action="bestellen.php" method="get">
 G&auml;nseblümchen
 <input type="hidden" name="1[einzelpreis]" value="14.99" />
 <select name="1[anzahl]">
  <option value="">0</option>
  <?php $i=1;
  while ($i<=100){
  echo "<option value="$i">$i</option>";
  $i++;
  } ?>
        </select>
    <input type="submit" />

ein einfaches print_r($_GET); liefert
Array ( [1] => Array ( [einzelpreis] => 14.99 [anzahl] => 22 ) )

bestellen.php
<?php

echo"
 <table border=1>
 <tr><td>Produkt</td> <td>Anzahl</td> <td>Einzelpreis</td> <td>Gesamtpreis</td></tr>
  <td>Ganseblume</td>
  <td>$_GET[1[anzahl]]</td>
  <td>$_GET[1[einzelpreis]]</td>
  /*<td>$_GET[[gesamtpreis]]</td>*/

</tr>
 </table>
 ";
?>

  1. <td>$_GET[1[anzahl]]</td>
      <td>$_GET[1[einzelpreis]]</td>
      /*<td>$_GET[[gesamtpreis]]</td>*/

    Zugriff auf die Arrays:

    $_GET[1]['anzahl']
    $_GET[1]['einzelpreis']

    Gruß, Samoht

    --
    fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
    "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
    (Kristian Wilson, Nintendo, 1989)
    1. genau, jetzt wo du es schreibst...
      vielen dank,
      g johannes

      1. Mahlzeit,

        genau, jetzt wo du es schreibst...

        Du meinst: "Kaum macht man's richtig, funktioniert's"?

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Mahlzeit,

    echo"

    [...]

    <td>$_GET[1[anzahl]]</td>
      <td>$_GET[1[einzelpreis]]</td>

    Es sollte mich wundern, wenn das funktioniert:

    1. ist es nicht besonders ratsam, Arrays einfach so in Strings hineinzuschreiben,

    2. ist "1" wohl kein gültiger Name für ein Array und

    3. wird in den Konstanten "anzahl" und "einzelpreis" vermutlich nichts drinstehen (bzw. es wird sie gar nicht geben).

    Versuch's mal folgendermaßen:

    <td>".$_GET[1]['anzahl']."</td>
    <td>".$_GET[1]['einzelpreis']."</td>

    /*<td>$_GET[[gesamtpreis]]</td>*/

    Was soll das werden? HTML-Kommentare sind das jedenfalls nicht - und PHP-Kommentare können es nicht sein, da sie innerhalb eines Strings stehen, der per echo() ausgegeben wird.

    Du solltest insgesamt mehr auf Struktur achten, die verschiedenen Sprachen bzw. Kontexte sauberer voneinander trennen und das EVA-Prinzip beachten -  dann tritt ein Großteil der Fehler, die Dir vermutlich bisher das Leben schwer gemacht haben, gar nicht mehr auf.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. »»Mahlzeit,

      »»»» genau, jetzt wo du es schreibst...

      »»Du meinst: "Kaum macht man's richtig, funktioniert's"?

      Ich wollte schon triumphieren, aber erst nachdem ichs so:

      Versuch's mal folgendermaßen:

      <td>".$_GET[1]['anzahl']."</td>
      <td>".$_GET[1]['einzelpreis']."</td>

      gemacht habe hats funktionert.
      danke für die Tipps,
      g Johannes

      1. Irgendwie ist das alles tückischer als ich dachte;
        mein nächster plan ist nämlich,
        das:

          
        
        > > <td>".$_GET[1]['anzahl']."</td>  
        > > <td>".$_GET[1]['einzelpreis']."</td>  
        
        

        in das:

          
        $i=1;  
        echo"  
          <td>".$_GET[i]['anzahl']."</td>  
          <td>".$_GET[i]['einzelpreis']."</td>  
        ";  
        
        

        umzuwandeln, um mittels for-schleife ein paar produkte aufzählen zu können...
        wo ist hier der fehler?
        (nach der frage geb ich ruhe, das ist der letzte "plan", ich werde nicht solange nerven bis ein professionelles shop-system fertig ist ;)
        g johannes

        1. Hi,

          $i=1;
          echo"
            <td>".$_GET[i]['anzahl']."</td>
          wo ist hier der fehler?

          Du verwendest eine Konstante namens i, ohne diese irgendwo definiert zu haben ...

          (Du solltest das error_reporting von PHP mal auf E_ALL stellen.)

          (nach der frage geb ich ruhe, das ist der letzte "plan", ich werde nicht solange nerven bis ein professionelles shop-system fertig ist ;)

          Na dann schauen wir gespannt dem Jahr 2074 entgegen ...

          MfG ChrisB

          1. Hi,

            $i=1;
            echo"
              <td>".$_GET[i]['anzahl']."</td>
            wo ist hier der fehler?

            Du verwendest eine Konstante namens i, ohne diese irgendwo definiert zu haben ...

            neinnein, konstante brauche ich nicht, ich will ja mittels for-schleife den code öfter ausführen, wobei eben i bei jedem durchgang erhöht wird...
            --> ich muss anders auf i zugreifen - aber wie?

            (Du solltest das error_reporting von PHP mal auf E_ALL stellen.)

            aja:

              
            Notice: Use of undefined constant i - assumed 'i' in /home/k6php/public_html/jswoboda/php05_shop/bestellen.php on line 17  
              
            Notice: Undefined index: i in /home/k6php/public_html/jswoboda/php05_shop/bestellen.php on line 17  
              
            Notice: Use of undefined constant i - assumed 'i' in /home/k6php/public_html/jswoboda/php05_shop/bestellen.php on line 18  
              
            Notice: Undefined index: i in /home/k6php/public_html/jswoboda/php05_shop/bestellen.php on line 18  
            
            

            (nach der frage geb ich ruhe, das ist der letzte "plan", ich werde nicht solange nerven bis ein professionelles shop-system fertig ist ;)

            Na dann schauen wir gespannt dem Jahr 2074 entgegen ...

            wie auch immer... ;)

            MfG ChrisB

            g johannes

            1. Mahlzeit,

              wo ist hier der fehler?

              Du verwendest eine Konstante namens i, ohne diese irgendwo definiert zu haben ...
              neinnein,

              Doch, tust Du.

              konstante brauche ich nicht,

              Natürlich brauchst Du sie nicht - deshalb ist es ja so verwunderlich, dass Du sie benutzt anstatt der von Dir benötigten und auch initialisierten Variable "$i".

              --> ich muss anders auf i zugreifen - aber wie?

              So, wie man in PHP eben auf eine Variable zugreift.

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. sorry fergessen...
          ad: jetziger code führt dazu, dass die zahlen nicht ausgegeben werden:
          http://franz.asn-graz.ac.at/~k6php/jswoboda/php05_shop/bestellen.php?1[einzelpreis]=14.99&1[anzahl]=22

        3. $i=1;
          echo"
            <td>".$_GET[i]['anzahl']."</td>
            <td>".$_GET[i]['einzelpreis']."</td>
          ";

            
          wowowowow....  
            
          mal im ernst... lern erstmal php bitte!  
            
          mach was anderes... aber erstmal keinen shop!  
            
          $\_GET[$i]['anzahl'] usw...  
            
            
          Gruß, Samoht
          
          -- 
          fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}  
            
          "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."  
            
          (Kristian Wilson, Nintendo, 1989)  
          
          
          1. $i=1;
            echo"
              <td>".$_GET[i]['anzahl']."</td>
              <td>".$_GET[i]['einzelpreis']."</td>
            ";

            
            >   
            > wowowowow....  
            >   
            > mal im ernst... lern erstmal php bitte!  
            >   
            > mach was anderes... aber erstmal keinen shop!  
            >   
            > $\_GET[$i]['anzahl'] usw...  
            >   
            >   
            > Gruß, Samoht  
            
            so, dank an alle, jetzt gehts, jetzt habt ihr eure ruhe verdient,  
            ich mach den shop (oder besser gesagt ein zusammenzählsystem von waren und euros, ich hab mich wohl etwas ungenau ausgedrückt, bei einem shop hätte ich wohl noch die eine oder andere frage ;) )...  
              
            g johannes
            
            1. so, dank an alle, jetzt gehts, jetzt habt ihr eure ruhe verdient,

              herzlichen dank, der gnädige herr *verneig*

              ich mach den shop (oder besser gesagt ein zusammenzählsystem von waren und euros, ich hab mich wohl etwas ungenau ausgedrückt, bei einem shop hätte ich wohl noch die eine oder andere frage ;) )...

              und wir die eine oder andere befürchtung...

              Gruß, Samoht

              --
              fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
              "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
              (Kristian Wilson, Nintendo, 1989)
        4. Mahlzeit,

          $i=1;

          Aha. Du weist hier also der Variablen "$i" den Wert 1 zu.

          <td>".$_GET[i]['anzahl']."</td>
            <td>".$_GET[i]['einzelpreis']."</td>

          Ich kann in Deinem Code nirgendwo die Definition einer Konstante "i" bzw. eine Wertzuweisung an diese erkennen. Wieso nutzt Du nicht die Variable "$i"?

          Und wieso lernst Du nicht z.B. mal die Grundlagen von PHP, was den Umgang mit Variablen angeht oder liest die von ChrisB verlinkten Artikel?

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Hi,

    Ich programmiere eine Art Mini-Shop mit php.

    Willst du meine Meinung dazu hoeren, ob jemand das tun sollte, wenn er noch nicht mal die Ursache von Parse Errors selber zu finden in der Lage ist ...?

    Parse error: parse error, expecting `']'' in /home/k6php/public_html/jswoboda/php05_shop/bestellen.php on line 16

    echo" ...
      <td>$_GET[1[anzahl]]</td>

    Wo hast du denn diese Phantasiesyntax fuer den Zugriff auf ein "mehrdimensionales" Array her?

    $arrayVariable[indexEbene1][indexEbene2] waere korrekt.

    http://www.php.net/manual/en/language.types.array.php#language.types.array.donts und
    http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.simple
    solltest du dir mal aufmerksam durchlesen.

    MfG ChrisB