array wird nicht richtig in $_POST kopiert
Olaf Beyer
- php
Hallo,
ich habe folgendes Problem (code steht unten - soweit wie moeglich gekuerzt):
Hier der code:
datei (a)
echo '<form name="tableselected" action="tableselected.php" target=_blank method="post">';
echo '<td>';
echo '<select multiple name="colsselected[]">';
$name = mysql_field_name ( $tabfieldnames, 0);
echo '<option class="klein" value='.$name.' selected>'.$name.'</option>';
echo '</select>';
echo '</td>';
=============================================
datei (b) "tableselected.php"
$colsselected = $_POST["colsselected"];
=> ein array bestehend aus strings (spaltennamen)
=> beim aufruf aus datei (a) richtig, beim aufruf aus datei (b) falsch
-----------------------------------------
hier der erneute aufruf (b) ruft (b) auf
c) parameter an sich selber uebergeben
echo '<form name="changedata" action="tableselected.php", method="post"';
echo '<input type="hidden" name="colsselected[]" value="'.$colsselected.'">';
echo '<td><input type="submit" id="button" value="Hinzufuegen"></td>';
echo '</form>';
Ich hoffe, hier weiss jemand wo ich mich zu dusselig anstelle.
Herzliche Gruesse,
Olaf.
so funktioniert es:
In der 2ten Datei muss das $_POST-Feld etwas aufwendiger gefuellt werden:
for ($i=0;$i<count($colsselected);$i++)
{
echo '<input type="hidden" name="colsselected[]" value='.$colsselected[$i].'>';
}
Ich frage mich nur, ob es nicht einen leichteren Weg gibt.
Hello Olaf,
so funktioniert es:
In der 2ten Datei muss das $_POST-Feld etwas aufwendiger gefuellt werden:
for ($i=0;$i<count($colsselected);$i++)
{
echo '<input type="hidden" name="colsselected[]" value='.$colsselected[$i].'>';
}
Ungeschickt ist sicherlich Deine Problembeschreibung.
Obwohl sicher die meisten hier wissen, was ein selbstreferenzierndes Formular ist, hast Du noch keine Antwort. Ich grübele auch schon die ganze Zeit, wie ich Die vielleicht helfen könnte.
Versuch doch nochmal, eine Aufgabenbeschreibung anzufertigen, die vollkommen gelöst von Programmiersprachen und HTML versucht, zu beschreiben, was Du eigentlich erreichen willst.
Und dann ein Datendiagramm ...
Datenwert1a Datenwert1b usw.
Datenwert2a ---> Datenwert4b ---->
Datenwert3a Datenwert22b
Vergiss nicht, mitzuteilen, was die Datenwerte bedeuten und schreib Musterdaten dazu...
Übrigens kann man ganze Arrays, die man man nur druchschleifen will, auch in einem einzigen Hidden-Field übertragen.
Arrray serialisieren
Serialisierte daten mit base64encode codierern
Daten übertragen...
Feld decodieren
Daten wieder seserialisieren
Damit weiterarbeiten
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hellihello Tom,
Versuch doch nochmal, eine Aufgabenbeschreibung anzufertigen, die vollkommen gelöst von Programmiersprachen und HTML versucht, zu beschreiben, was Du eigentlich erreichen willst.
Und dann ein Datendiagramm ...
Datenwert1a Datenwert1b usw.
Datenwert2a ---> Datenwert4b ---->
Datenwert3a Datenwert22bVergiss nicht, mitzuteilen, was die Datenwerte bedeuten und schreib Musterdaten dazu...
Übrigens kann man ganze Arrays, die man man nur druchschleifen will, auch in einem einzigen Hidden-Field übertragen.
Arrray serialisieren
Serialisierte daten mit base64encode codierern
Daten übertragen...Feld decodieren
Daten wieder seserialisieren
Damit weiterarbeiten
Eine Sessionvariable wäre u.U. auch was feines, oder?
Dank und Gruß,
frankx
Hello Frank,
Eine Sessionvariable wäre u.U. auch was feines, oder?
Wenn Olaf denn mit Sessions arbeiten will, bestimmt.
Diese Daisy Chain Methode finde ich für den Anfang allerdings immer ganz gut. Man lernt eine Menge über das Ping-Pong-Spiel zwischen Client und Server dadurch.
Da fehlt bestimmt noch was.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo Frank, Hallo Tom
Eine Sessionvariable wäre u.U. auch was feines, oder?
Wenn Olaf denn mit Sessions arbeiten will, bestimmt.
vielen Dank fuer Eure beiden Antworten!
Session:
Tom,
vielen Dank fuer Dein Angebot, dass ich dsa Problem erst mal trocken beschreiben soll.
Da ich aber eine Loesung gefunden habe (siehe meinen zweiten Kommentar) schlage ich Dein Angebot erstmal aus - um vor allem auch Dir Zeit zu ersparen.
Wenn Du Interesse hat, dann lies Dir einfach mal meinen 2ten kommentar durch - vielleicht sagst Du ja "logisch" und kannst mir einfach das "logisch" erklaeren. Wenn nicht - nicht tragisch.
vielen Dank an Euch beide.
n'abend,
- mache ich gerne; ist mein Favorit, aber leider funkt. das mit den Sessions bei mir nicht mit Apache local. der gleiche code "hochgeladen" funkt. Da ich aber alles erst local teste, versuche ich ohne sessions auszukommen.
dann möchtest du deinen Apache (resp. dein lokales PHP) einfach nur richtig konfigurieren.
vermutlich wirft dein session_start() auch irgendwelche Warnungen (möglicherweise wegen falschem session.save_path oder ähnlichem). Ggf. willst du dir lokal alle Fehlermeldungen protokollieren lassen? Siehe die Direktiven log_errors, error_log, display_errors, error_reporting, etc.
Ansonsten vergleiche die Konfiguration deines Live-Servers mit der lokalen Konfiguration.
weiterhin schönen abend...
Hello,
dann möchtest du deinen Apache (resp. dein lokales PHP) einfach nur richtig konfigurieren.
vermutlich wirft dein session_start() auch irgendwelche Warnungen (möglicherweise wegen falschem session.save_path oder ähnlichem). Ggf. willst du dir lokal alle Fehlermeldungen protokollieren lassen? Siehe die Direktiven log_errors, error_log, display_errors, error_reporting, etc.
Oder der Lieblingsbrowser sendet die Cookies nicht mit.
Darauf hat Sven neulich hingewiesen. Wenn die url nicht mindestens zwei Domain-Parts (alse "Domain" und Top-Level-Domain) hat, dann soll der Browser eigentlich nichts mitsenden.
Gibts nur eins. Den testserver auf "testserver.lan" umtaufen und dies in der Hosts-Tabelle, sofern diese dafür verwendet wird, so eintragen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom