• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array über INPUT übermitteln

Status
Für weitere Antworten geschlossen.

dansch

Neues Mitglied
Hallo, stehe mal wieder vor einem Problem.
ich möchte ein Array über ein Formular per Input feld übermitteln.
PHP:
// das ist das Array
$Menue = array ( 
     array (
         'gametag' => '5',
         'gamemonat' => '10',
         'gameyear' => '2006',
         'spielstunde' => '10',
         ), 
     array (
         'gametag' => '5',
         'gamemonat' => '10',
         'gameyear' => '2006',
         'spielstunde' => '11',
         ), 
     );
<input type='hidden' name='Menue' value="$Menue">
 
//im Quelltext steht dann folgendes
<input type='hidden' name='Menue' value="array ( array (
         'gametag' => '5',
         'gamemonat' => '10',
         'gameyear' => '2006',
         'spielstunde' => '10',
         ), array (
         'gametag' => '5',
         'gamemonat' => '10',
         'gameyear' => '2006',
         'spielstunde' => '11',
         ), ); ">

Übergebe ich nun das input feld an den Submit button ($PHP_SELF) und gebe nun $Menue aus erscheint einfach nur Array

Was mach ich falsch
 
Werbung:
du kannst es ja in dieser art string übermitteln (variablen mit zb einem | geteilt, und den string dann per explode('|', $string) zerlegen. wäre kompliziert... aber ich glaub das kann man auch besser lösen. was is das überhaupt?
 
einfach an den name [] dranhängen...
html stört das nicht, und php sieht es dann als array.

MFg
Alti
 
Werbung:
Wo hast du php gelernt? $_POST oder $_GET enthalten die übertragenen Werte..
 
du kannst es ja in dieser art string übermitteln (variablen mit zb einem | geteilt, und den string dann per explode('|', $string) zerlegen. wäre kompliziert... aber ich glaub das kann man auch besser lösen. was is das überhaupt?

das ist ein Array ;)
Das soll ein Hallenbelegungsplan werden. Das heißt es wird ne Tabelle angezeigt mit den verschiedenen Wochen und dann wird angezeigt wann belegt ist und wann frei ist.
Wenn frei ist kann man die Stunde direkt online buchen.
In diesem Buchungsschritt kann man angeben wie viele Stunden hinter einander gebucht werden sollen und wie oft (einmalig, täglich oder wöchentlich).
Die wird dann über eine forschleife ausgegeben und Paralell dazu in einem Array ausgegeben. (siehe 1. Beitrag)
Wo hast du php gelernt? $_POST oder $_GET enthalten die übertragenen Werte..
Naja ich habs niergends gelernt. Desshalb versteh ich manche erklärungen auch nicht. Hab mir alles selbst beigebracht. Aber das mit $_POST weis ich trotzdem und das hab ich auch im original gemacht. :D
Außerdem brauch ich des ja da gar niergends ich will ja lediglich das Array übermitteln nicht empfangen. Oder wie übermittelst du deine Werte?
einfach an den name [] dranhängen...
html stört das nicht, und php sieht es dann als array.
meinst du jetzt bei dem Inputfeld?
also so:
HTML:
<input type="hidden" name="Menue[]" value="$Menue">
Naja so wird es auf jedenfall übergeben das Array aber jetzthab ich ein anderes Problem. Das Array wird weitergeleitet wenn das Passwort und der username kontrolliert wurde und mit der Datenbank übereinstimmen. Stimmt es nicht überein wird es trotzdem einmal an sich selbst geschickt.
Und jetzt ist der Fall, dass jedes mal wenn es gesendet wird folgende slashes dazu kommen. So sieht es bei einmal aus
HTML:
\'gametag\' => \'6\',
         \'gamemonat\' => \'10\',
         \'gameyear\' => \'2006\',
         \'spielstunde\' => \'11\',
         ), array (
         \'gametag\' => \'6\',
         \'gamemonat\' => \'10\',
         \'gameyear\' => \'2006\',
         \'spielstunde\' => \'12\',
         ), array (
         \'gametag\' => \'6\',
         \'gamemonat\' => \'10\',
         \'gameyear\' => \'2006\',
         \'spielstunde\' => \'13\',
         ), );
so bei zweimal

HTML:
\\'gametag\\' => \\'6\\',
         \\'gamemonat\\' => \\'10\\',
         \\'gameyear\\' => \\'2006\\',
         \\'spielstunde\\' => \\'11\\',
         ), array (
         \\'gametag\\' => \\'6\\',
         \\'gamemonat\\' => \\'10\\',
        \\'gameyear\\' => \\'2006\\',
         \\'spielstunde\\' => \\'12\\',
         ), array (
         \\'gametag\\' => \\'6\\',
         \\'gamemonat\\' => \\'10\',
         \\'gameyear\\' => \\'2006\\',
         \\'spielstunde\\' => \\'13\\',
         ), );
und immer so weiter.
also das steht dann in den Input feldern zum übermitteln an die nächste seite aber $_POST['Menue'] sieht ja logischerweise genauso an.

Ihr könnt es euch auch mal angucken wenn ihr wollt (ist eigentlich nur für den loginbereich vorgesehen habs awa jetzt mal zugänglich gemacht). Geht ja eh noch ned ;-) naja leider :( hängt aber nur an diesem Array
http://www.tc70-sandhausen.de/tc-70/NEUE PAGE/Seiten/loginbereich/tennishalle.php
 
DU kannst mit der Funktion serialize(); aus dem Array einen String machen. Diesen String kannst du dann mit deinem Formular versenden und im Folgeskript mit unserialize() wieder in ein Array verwandelt.
Was ich allerdings nicht verstehe ist, warum du ein Array über ein Formular versenden willst. Wäre es nicht einfacher uns sinvoller das Array erst dann zu generieren wenn es auch benötigt wird?
 
Werbung:
DU kannst mit der Funktion serialize(); aus dem Array einen String machen. Diesen String kannst du dann mit deinem Formular versenden und im Folgeskript mit unserialize() wieder in ein Array verwandelt.
Was ich allerdings nicht verstehe ist, warum du ein Array über ein Formular versenden willst. Wäre es nicht einfacher uns sinvoller das Array erst dann zu generieren wenn es auch benötigt wird?
Mhh.. stimmt eigentlich!!! aber jetzt hab ich alles so ineinander verschachtelt das es wieder ewig dauern würde des umzustellen.
meinst du das so ?
PHP:
$Menue = "array (
     array (
         'gametag' => '$gametag',
         'gamemonat' => '$gamemonat',
         'gameyear' => '$gameyear',
         'spielstunde' => '$spielstundehalle',
         ),
     array (
         'gametag' => '$gametag',
         'gamemonat' => '$gamemonat',
         'gameyear' => '$gameyear',
         'spielstunde' => '$spielstundehalle',
         ),
  );";
$Menue = serialize($Menue);
<input type='hidden' name='Menue' value='$Menue'>
 
//jetzt kommt die andere Seite an die es gesendet wurde
// 1 . Alternative
$Menue = $_POST['Menue'];
$Max = count (unserialize($Menue))-1;
for ( $x=0; $x < $Max; $x++ ) {
   $gametag = unserialize ($Menue[$x][gametag]);
   $gamemonat = unserialize($Menue[$x][gamemonat]);
   $gameyear = unserialize($Menue[$x][gameyear]);
   $spielstunde = unserialize($Menue[$x][spielstunde]);
}
 
// 2. Alternative
 
   $Menue = $_POST['Menue'];
   $Menue = unserialize ($Menue);
   $Max = count ($Menue)-1;
 
for ( $x=0; $x < $Max; $x++ ) {
   $gametag = $Menue[$x][gametag];
   $gamemonat = $Menue[$x][gamemonat];
   $gameyear = $Menue[$x][gameyear];
   $spielstunde = $Menue[$x][spielstunde];
}
 
PHP:
$Menue = "array (
     array (
         'gametag' => '$gametag',
         'gamemonat' => '$gamemonat',
         'gameyear' => '$gameyear',
         'spielstunde' => '$spielstundehalle',
         ),
     array (
         'gametag' => '$gametag',
         'gamemonat' => '$gamemonat',
         'gameyear' => '$gameyear',
         'spielstunde' => '$spielstundehalle',
         ),
  );";
$Menue = serialize($Menue);
Nein, serialize ist für Abstrakte Objekte wie Klasseninstanzen oder Arrays gedacht, nicht für Strings:
PHP:
 1 $menu = Array
 2 (
 3     Array
 4     (
 5         'gametag'       => $gametag,
 6         'gamemonat'     => $gamemonat,
 7         'gameyear'      => $gameyear,
 8         'spielstunde'   => $spielstundehalle
 9     ),
10     Array
11     (
12         'gametag'       => $gametag,
13         'gamemonat'     => $gamemonat,
14         'gameyear'      => $gameyear,
15         'spielstunde'   => $spielstundehalle
16     )
17 );
18 $menu_serialized = serialize($menu);
 
Nein, serialize ist für Abstrakte Objekte wie Klasseninstanzen oder Arrays gedacht, nicht für Strings:
PHP:
 1 $menu = Array
 2 (
 3     Array
 4     (
 5         'gametag'       => $gametag,
 6         'gamemonat'     => $gamemonat,
 7         'gameyear'      => $gameyear,
 8         'spielstunde'   => $spielstundehalle
 9     ),
10     Array
11     (
12         'gametag'       => $gametag,
13         'gamemonat'     => $gamemonat,
14         'gameyear'      => $gameyear,
15         'spielstunde'   => $spielstundehalle
16     )
17 );
18 $menu_serialized = serialize($menu);
ja ok des is noch klar aber was ist mit dem unserialize an wlecher stelle muss ich des eingeben?
 
Werbung:
mhh... also irgendwie funktioniert das nicht so wie du sagst
hab lauter verschiedene möglichkeiten ausprobiert.

Naja ich hab jetzt noch Hoffnungen auf XraYSoLo. Er war so nett und guckt sich mal den kompletten code an.

EDIT:

mhh.. also daher das sich XraYSoLo bei mri leider nicht mehr meldet. Hab ich jetzt mal das ausprobiert was morl geraten hat, das ich das Array noch einmal erstelle. Jetzt hab ich folgendes Problem.
Wenn ich folgendes schreibe klappt alles. (Allerdings wurde das halt von hand geschrieben kann ich also in der praxis niocht gebrauchen)
PHP:
  $Menue = array ( 
   array (
     "gametag" => "15",
     "gamemonat" => "10",
     "gameyear" => "2006",
     "spielstunde" => "12",
   ), 
   array (
     "gametag" => "15",
     "gamemonat" => "10",
     "gameyear" => "2006",
     "spielstunde" => "13",
   ), 
);
  //Daten Speichern
  $username = $_SESSION['username'];
  echo "<table>";
  $Max = count($Menue)-1;
  for ( $x=0; $x < 1; $x++ ) {
   $gametag = $Menue[$x][gametag];
   $gamemonat = $Menue[$x][gamemonat];
   $gameyear = $Menue[$x][gameyear];
   $spielstunde =  $Menue[$x][spielstunde];
   $tagesdatum = date(Y.m.d);
 
   echo "<tr><td>$gametag</td><td>$gamemonat</td><td>$gameyear</td><td>$spielstunde</td></tr>";
  }
  echo "</table>";
Erstelle ich jetzt aber das Array über eine for-Schleife wird das Array ordnungsgemäß aufgebaut aber es kann nicht ausgewertet werden.
PHP:
if ($wiederholung == woechentlich) {
   $buch1 = $starttag;
   $Menue = "array (";
for ( $x=0; $x < $anzahlwochen; $x++ ) {
   for ( $z=0; $z < $stundenanzahl; $z++ ) {
    $buchungsschluessel = getdate ($buch1);
    $spielstundehalle = $buchungsschluessel[hours];
    $gamemonat = $buchungsschluessel[mon];
    $gameyear = $buchungsschluessel[year];
    $gametag = $buchungsschluessel[mday];
    $spielstundeende = $spielstundehalle + 1;
    $buch1 = $buch1 + (60*60);
    $Menue = "$Menue array (
         \"gametag\" => \"$gametag\",
         \"gamemonat\" => \"$gamemonat\",
         \"gameyear\" => \"$gameyear\",
         \"spielstunde\" => \"$spielstundehalle\",
         ),";
   }
   $buch1 = $buch1 - ($stundenanzahl*60*60) + (7*24*60*60);
   }
 
   $Menue = "$Menue );";
   $Menue = $Menue;
 
  }
Woran kann das liegen?

Moderator-Edit - Aktion: Doppelpost zusammengefügt - Grund: Es gibt eine Editierfunktion (Artemis)
 
Zuletzt bearbeitet von einem Moderator:
Du Sollst Das Array Nicht In Anführungszeichen Schreiben.

PS: Danke für ignorieren meines posts.
 
Werbung:
Du Sollst Das Array Nicht In Anführungszeichen Schreiben.

PS: Danke für ignorieren meines posts.
Ich hab es doch gar nicht ignoriert. Im Gegenteil ich hab lauter verschiedene Möglichkeiten ausprobiert aber es hat irgendwie nichts davon funktioniert.

Welche Anführungszeichen meinst du? Des am Anfang und am Ende oder die einzelnen Werte des Arrays?

Also wenn ich die ganz am Anfang weg lasse zeit er mir ein Fehler an, wenn ich die von den Werten weg lass macht er alles richtig aber das array zeigt er trotzdem ned an.

Es wäre toll wenn du mir es richtig posten könntest. Ich raff es sonst wahrscheins eh wieder ned :oops:
 
Das hier:
PHP:
   $Menue = "array (";
Ein Array ist ein Array und kein String.

Du musst das vollkommen anders angehen (oder [PHPNET]eval[/PHP] benutzen, ist aber nicht empfehlenswert)
 
@ flapo

gut dann kenne ich jetzt schon mal den Grund woran es liegt.
Aber ich kann die Anführungszeichen nicht weglassen ansonsten zeigt er mir folgendes an "Parse error: parse error, unexpected ';', expecting ')' in ..."
da die klammer ja nicht geschlossen ist. Jetzt ist die Frage wie ich ein mehrdimensonales Array über ne forschleife erstelle.
Wie muss ich das also angehen???
 
Werbung:
Aber ich kann die Anführungszeichen nicht weglassen ansonsten zeigt er mir folgendes an "Parse error: parse error, unexpected ';', expecting ')' in ..."
da die klammer ja nicht geschlossen ist.
Ja das ist klar...

Jetzt ist die Frage wie ich ein mehrdimensonales Array über ne forschleife erstelle.
Wie muss ich das also angehen???
So... Ich versuch mal dein Script zu verstehen...
PHP:
<?php
if($wiederholung == "woechentlich") 
  {
  $buch1 = $starttag;
  for( $x=0; $x < $anzahlwochen; $x++ ) 
    {
    for( $z=0; $z < $stundenanzahl; $z++ ) 
      {
      $buchungsschluessel = getdate($buch1);
      $spielstundehalle = $buchungsschluessel[$hours];
      $gamemonat = $buchungsschluessel[$mon];
      $gameyear = $buchungsschluessel[$year];
      $gametag = $buchungsschluessel[$mday];
      $spielstundeende = $spielstundehalle + 1;
      $buch1 = $buch1 + (60*60);
      $Menue['gametag'] = $gametag;
      $Menue['gamemonat'] = $gamemonat;
      $Menue['gameyear'] = $gameyear;
      $Menue['spielstunde'] = $spielstundehalle;
      }
    $buch1 = $buch1 - ($stundenanzahl*60*60) + (7*24*60*60);
    }
  } 
?>
Deine Fehler:
1. woechentlich sollte in Anführungszeichen
2. Die Sache mit dem Array
3. hours, mon, year und mday sind Variabeln, also gehört da ein $ davor.

Ich hoffe nur, dass du von deiner komischen Vorstellung wegkommst. Du kannst nicht mit einem String einen Array definieren und das dann vom Script reinschreiben lassen.

Achja: Nimm einheitliche Namen für die Variabeln. Entweder deutsch oder englisch. Aber nicht 'gametag' und dann wieder 'gameyear'.
 
mhh okay ich vertsehe was du meinst. Aber wie rufe ich das jetzt ab ?
So geht es ja wohl kaum oder?
PHP:
for ( $x=0; $x < $Max; $x++ ) {
   $gametag = $Menue[$x][gametag];
   $gamemonat = $Menue[$x][gamemonat];
   $gameyear = $Menue[$x][gameyear];
   $spielstunde =  $Menue[$x][spielstunde];
  
   echo "<tr><td>$gametag</td><td>$gamemonat</td><td>$gameyear</td><td>$spielstunde</td></tr>";
  }
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben