Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » array verschicken und wieder auslesen Antworten
array verschicken und wieder auslesen

elster
Otto-Normal-Poster


Beiträge: 42


Guten Tag,

(array - zum hundertsten? ..)
wenn ich ein array $arr_n_alt[] so fülle:

while ($vw=mysql_fetch_array($result)) {

if ($vw['wun'] == 'y') {
$arr_y_alt[] = $vw['ligaid']; $c = ' checked=\'checked\'';
} else {
$arr_n_alt[] = $vw['ligaid']; $c =''; }
...

so verschicke:
...
<input type='hidden' name='arr_n_alt' value='$arr_n_alt'$c></td></form>


bekomme ich beim auslesen
echo print_r($arr_n_alt)."</pre> ";
oder
foreach ($_POST['arr_n_alt'] as $kennung => $wert) {
print "<br>|| $kennung $wert || \n";

Array1
bzw. garnix mehr zu sehen.


in print_r($_POST); stehen u.a. das
[arr_n_alt] => Array

für euch wahrscheinlich klar,
ich habs mit den array noch nicht ganz drauf.

Könnte mir da jemand helfen??
Wie kann ich den geschickten Inhalt (isser doch?) wieder
"sichtbar" machen?

Vorm abschicken, gleich nach der </form>, ist das
array noch so einfach auslesbar:
Array
(
[0] => 6
[1] => 7
[2] => 11
)
1

Danke, Jörg

  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Du musst jedes Schlüssel des Arays einzeln verschicken. Inputs können ja immer nur einen Wert aufnehmen. Dh. Array mit einer For-Schleife durchgehen und für jeden Schlüssel ein hidden-Field ausgeben.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


serialize
unserialize

schon mal daran gedacht

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Würde auch gehen. ;) Ist die Frage, wie man es weiterverarbeiten will und was sinnvoller ist.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


nun, ich find es halt einfacher nur eine variable zu haben, als über ne while oder for oder foreach immer erst alle hidden oder text filds aufzubauen

von der verarbeitung her ist es doch sowieso mit seralize / unseralize einfacher

vielleicht gleich als kleine hilfe nen kurzer bsp.code
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11:
<?php
while(<bedingung>){
   $ar[$i]['variable1']="wert";
   $ar[$i]['variable2']="wert";
   $i++;
}
$ar=seralize($ar);
echo '<form action="x.php" method="post">
<input type="hidden" name="ar" value="'.$ar.'">
<input type="submit" name="go" value="go!">'
?>

und in der x.php kann man dann schön wieder das komplette array rausholen
1: 
2: 
3:
<?php
$ar=unseralize($_POST['ar']);
?>

damit sollte die frage der weiterverarbeitung, und was sinnvoller ist eigentlich erübrigt sein...
noch einfacher kann man ein array nun wirklich nicht mehr übergeben... es sei denn, man
schreibt gern solche konstrukte wie
foreach(....)
input type=hidden name=ar[$i][variable1] value=wert......

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

elster
Otto-Normal-Poster


Beiträge: 42


Hallo & Danke!

habs erstmal mit seralize probiert,
Daten kommen nach abschicken auch an :

if (isset($_REQUEST['u_wun'])) {

echo $serialized_string1." => echo \$serialized_string1<br>";
$uaaaaah = unserialize($serialized_string1);
...
...
a:3:{i:0;s:1:\"6\";i:1;s:1:\"7\";i:2;s:2:\"11\";}
aber dann ?-|
Notice: unserialize() failed at offset 9 of 49 bytes in ...

das konnte ich noch nicht ergooglen.

Thread davor kuck ich gleich man duch ...

Grüße, J.

  Profil   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


hmmm schwer so zu sagen, ohne den zu übergenenen string zu sehn....
könnte aber an einem " oder \ liegen
sollte zwar normal nicht sein...aber...

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


grrr..
wenn du den array mal hier posten könntest
weil das serialize dort irgendwass escaped --> s:1:\"7\" oder auch davor
dann kann man damit mal probieren bzw besser gucken

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

Diese Nachricht wurde geändert von: raiserle
  Profil   E-Mail   Website   Editieren   Zitieren

elster
Otto-Normal-Poster


Beiträge: 42


Hallo,

Danke!
Sorry, ich überblicke noch nicht so ganz, was im serelized-Fall wichtig
ist.


ein array wird zunächst gleich nach der while-Schleifen-Anweisung
durch if-Kontrolle gefüllt, die y-markiert von nicht-markiert
unterscheiden soll:
1: 
2: 
3: 
4: 
5: 
6:
 
              if ($vw['wun'] == 'y') {
                   $arr_y_alt[] = $vw['ligaid']; $c = ' checked=\'checked\'';
                        } else {
                   $arr_n_alt[] = $vw['ligaid']; $c ='';  }


Anschließend folgt ein "Tabellengenerator" mit checkbox,die checkd darstellt
und diese zugleich in array sammelt (obiges könnt man auch weglassen ?...),
dann Tabelle und Form schließen:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10:
 
echo "<tr> ...
      <td><input type='Checkbox' name='u_wun[$vw[ligaid]]'$c></td>
                    </tr>\n";    }
       echo "</table> \n";
       $serialized_string1 = serialize($arr_n_alt);
       echo "<input type='hidden' name='serialized_string1' value='$serialized_string1'>
      </form>



Beim Abschicken und Wiederaufruf, gerät alles an folgende
beiden Kontrollstrukturen:
1: 
2: 
3: 
4:
 
// ------- Selektion chequen + dazu Spez.-query generieren ----------
     if (isset($_GET['Sort']))   {
...

uninteressant, sowie:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17:
 
// ------- unserialize ----------
if (isset($_REQUEST['u_wun'])) {
    reset($_REQUEST['u_wun']);

    echo   $serialized_string1." => echo \$serialized_string1<br>";
    $uaaaaah = unserialize($serialized_string1);

   if (!is_array ($serialized_string1)) {
       echo "etwas ging schief, ein leeres Array initialisieren<br>";
     //  $serialized_string1 = array();
   }

            echo " <br>----uaaaaah-----<br>";
    echo   "<br>".$uaaaaah."<br>";  
            echo " <br>---------<br>";


das ergibt o.g. Fehler:
a:3:{i:0;s:1:\"6\";i:1;s:1:\"7\";i:2;s:2:\"11\";} => echo ...
Notice: unserialize() failed at offset 9 of 49 bytes in ...
etwas ging schief, ...



Dabei steht in einem nicht mit <pre> formatierten
Bereich der $GLOBALS
[arr_n_alt] => Array ( [0] => 6 [1] => 7 [2] => 11 )

sonst in verschiedenen Bereichen
[_REQUEST] => Array
[_POST] => Array
[HTTP_POST_VARS] => Array
G L O B A L S: Array
als
[serialized_string1] => a:3:{i:0;s:1:\"6\";i:1;s:1:\"7\";i:2;s:2:\"11\";},
sowie
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9:
 
 [u_wun] => Array
        (
            [4] => on
            [5] => on
            [8] => on
            [9] => on
            [10] => on
        ) 


... hoffe, das ist jetzt nachvollziehbarer,
Grüße, Jörg

  Profil   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


hmm
und diese fehlermeldung bekommst du immer, auch wenn du einfach mal was anders
einträgst?

ich seh da nicht wirklich warum der fehler passiert, aber einen logischen fehler
in zeile 9 prüfst du ob der serialized_string1 ein array sein sollte...
kann er ja nicht sein, weil du oben auf uaaahhh das array zurück gibst.

"test"

was mich auch noch wundert, warum in dem string \"wert\" steht und nicht "wert"
dachte es liegt gerade am forum... machts aber nicht. ich würde dort darauf tippen

vielleicht weis jemand anderes noch ein rat, magic_quotes oder sowas

du kannst ja auch mal im quelltext gucken, was bei dem serialized string steht

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

Diese Nachricht wurde geändert von: raiserle
  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben