Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Array wird nicht als Array erkannt

    webald

    • modified Team
    • Beiträge: 2.795
    Array wird nicht als Array erkannt
    am: 26. Mai 2015, 12:14:41
    Ich verstehe das gerade nicht. Ich verschicke Daten per Post aus einem Formular , u. a.
    Code: PHP  [Auswählen]
    <select name="id[1]">
      <option value="1">als zip runterladen</option>
      <option value="3">als exe runterladen</option>
    </select>
    (wie bei den Attributen)
    Schau ich mit mit Fiddler an was da übertragen wird, dann paßt das zu den Formularfeldern und Daten.

    Prüfe ich nun die erhaltenen Daten mit isset($_POST['id'])  dann ist das true.

    Aber ein is_array($_POST['id']) gibt false zurück und ein echo $_POST['id'] gibt array aus.

    Ich versteh das nicht.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=33054.0

    Marcus Kreusch

    • Fördermitglied
    • Beiträge: 328
    • Geschlecht:
    Re: Array wird nicht als Array erkannt
    Antwort #1 am: 26. Mai 2015, 14:46:26
    Was sagt denn
    Code: PHP  [Auswählen]
    var_dump($_POST);
    bzw.
    Code: PHP  [Auswählen]
    var_dump($_POST["id"]);
    ?

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Array wird nicht als Array erkannt
    Antwort #2 am: 26. Mai 2015, 16:13:21
    Was sagt denn
    Code: PHP  [Auswählen]
    var_dump($_POST["id"]);
    ?
    string(5) "Array"

    Hatte schon den Inputfilter in der application_top im Verdacht, aber nix.

    Ich habe es jetzt erst mal umgebaut und nummerier die Variablen in der Form durch (id_1, id_2, ...) und löse das dann wieder auf. Ein blöder Würgaround, aber so komme ich wenigstens weiter.

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Array wird nicht als Array erkannt
    Antwort #3 am: 26. Mai 2015, 16:36:54
    Wenn string(5) "Array" herauskommt, ist dein $_POST['id'] mit einem String wortwörtlich "Array" (5 Zeichen) befüllt.
    Das passt auch mit der Aussage zusammen,

    Zitat
    Aber ein is_array($_POST['id']) gibt false zurück und ein echo $_POST['id'] gibt array aus.

    Z.B.
    Code: PHP  [Auswählen]
     $_POST['id'] = 'Array';

    Also hast du irgendwo einen Fehler.

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Array wird nicht als Array erkannt
    Antwort #4 am: 26. Mai 2015, 17:02:59
    das sagt Fiddler dazu:
    Zitat
    kivNwZ   Y43YifL2owkHFPJvzanmFgicTr58AA0X
    products_id   16242
    products_qty   1
    remote_sid   q1hrsvqtutk5suklp8uh1hhfg7
    id[1]   1
    id[2]   4
    x   42
    y   22
    Wo zum Henker das "array" herkommt ist mir echt ein Rätsel. Alle anderen Felder kommen brav als POST-Werte an.

    HHGAG

    • Frisch an Board
    • Beiträge: 61
    Re: Array wird nicht als Array erkannt
    Antwort #5 am: 26. Mai 2015, 17:10:14
    Also Dein select gibt bei einem Post Formular folgendes aus:
    Code: PHP  [Auswählen]
    var_dump($_POST)
    Zitat
    array (size=1)
      'id' =>
        array (size=1)
          1 => string '3' (length=1)
    Code: PHP  [Auswählen]
    print_r($_POST)
    Zitat
    Array
    (
        [id] => Array
            (
                [1] => 3
            )

    )

    Aber, wenn Du nur eine Tiefe von 1 anzeigen lassen würdest, wäre es
    Zitat
    Array
    was angezeigt werden würde  :whistle:

    Überprüfe
    Code: PHP  [Auswählen]
    xdebug.var_display_max_depth=n
    siehe:
    http://www.xdebug.org/docs/all_settings#var_display_max_depth

    denn auch
    Code: PHP  [Auswählen]
    print($_POST['id']);
    gibt
    Zitat
    Array
    aus

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Array wird nicht als Array erkannt
    Antwort #6 am: 26. Mai 2015, 17:17:57
    das passt ja auch zu dem was Fiddler sagt. Das einzige was vor dem Auswerten von $_POST steht ist die application_top.

    Ich werde mal die Tage das ganze nochmal separat testen und sehen wo da das "array" entsteht.

    Hier erst mal Schluss und ich meld mich dann wieder dazu, wenn ich es getestet habe.

    HHGAG

    • Frisch an Board
    • Beiträge: 61
    Re: Array wird nicht als Array erkannt
    Antwort #7 am: 26. Mai 2015, 17:19:26
    Habs oben angepasst, aber auch die Tests habe ich in der
    Zitat
    index.php
    durchgeführt, so das auch bei mir die
    Zitat
    includes/application_top.php
    dabei ist.

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Array wird nicht als Array erkannt
    Antwort #8 am: 26. Mai 2015, 17:27:49
    Schau Dir mal includes/cart_actions.php an und da den Bereich add_product die Zeile
    Code: PHP  [Auswählen]
    $_SESSION['cart']->add_cart((int)$_POST['products_id'], $cart_quantity, isset($_POST['id'])?$_POST['id']:'');
     
    das führt zu includes/classes/shopping_cart.php und von da weiter zu xtc_get_uprid.

    Da wird $_POST['id'] einfach immer weiter übergeben und mit is_array geprüft und verarbeitet. Ne Stufe tiefer gibt es da nirgends. Ist eigentlich genau so wie bei beim Hinzufügen eines Artikel mit Attributen.

    Aber wie gesagt ich teste es nochmal und melde mich dann wieder.

    HHGAG

    • Frisch an Board
    • Beiträge: 61
    Re: Array wird nicht als Array erkannt
    Antwort #9 am: 26. Mai 2015, 17:38:34
    Code: PHP  [Auswählen]
      function add_cart($products_id, $qty = 1, $attributes = '', $notify = true) {
        global $new_products_id_in_cart;
         
          echo '<pre>';
          print_r($attributes);
          echo '</pre>';
          exit;
     
    Ausgabe:
    Zitat
    Array
    (
        [1] => 1
    )
    Bei Dir scheint was Anderes schief zu laufen  :-D

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Array wird nicht als Array erkannt
    Antwort #10 am: 26. Mai 2015, 17:56:26
    @webald,
    was kommt hierbei raus,
    Code: PHP  [Auswählen]
    case 'add_product':
          echo '<pre>'.print_r($_POST['id'], true).'</pre><hr />';
          //echo var_dump($_POST['id']).'<hr />';
          die();
     

    Wenn es da schon nicht passt, kontrolliere ob du dir das Array irgendwo überschreibst, z. B. mit einem Hidden-Feld was "nachher" eingebunden ist, oder du hast irgendwo eine debug Zuordnung vergessen ??....
    6 Antworten
    3158 Aufrufe
    12. März 2014, 19:16:15 von noRiddle (revilonetz)