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

Autor Thema: Array wird nicht als Array erkannt  (Gelesen 2566 mal)

Offline webald

  • modified Team
  • *****
  • Beiträge: 2.712
    • Teile Beitrag
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

Haendlerbund_Leistungen_728x90_animiert

Offline MK

  • Schreiberling
  • ****
  • Beiträge: 306
  • Geschlecht: Männlich
    • Teile Beitrag
    • Kreusch Creative
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"]);
?

Offline webald

  • modified Team
  • *****
  • Beiträge: 2.712
    • Teile Beitrag
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.

Offline web0null

  • Experte
  • *****
  • Beiträge: 1.998
    • Teile Beitrag
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.

Offline webald

  • modified Team
  • *****
  • Beiträge: 2.712
    • Teile Beitrag
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.

Offline HHGAG

  • Frisch an Board
  • **
  • Beiträge: 53
    • Teile Beitrag
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

Offline webald

  • modified Team
  • *****
  • Beiträge: 2.712
    • Teile Beitrag
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.

Offline HHGAG

  • Frisch an Board
  • **
  • Beiträge: 53
    • Teile Beitrag
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.

Offline webald

  • modified Team
  • *****
  • Beiträge: 2.712
    • Teile Beitrag
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.

Offline HHGAG

  • Frisch an Board
  • **
  • Beiträge: 53
    • Teile Beitrag
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

Offline web0null

  • Experte
  • *****
  • Beiträge: 1.998
    • Teile Beitrag
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 ??....


Teile per facebook Teile per linkedin Teile per twitter