selectag einstellen

selectag einstellen

am 12.10.2006 12:17:35 von Andreas Bauer

Hallo NG,

ich habe eine Funktion, die ein selecttag zusammensetzt. Diese Funktion
getSelectTag wird in einer php Datei bookchange.php so aufgerufen:
("selectAuthorId", $DbMapper->readAuthorNames(),
$Book->getAuthorId());?>
und in der Funktion getSelectTag der Datei htmlclass.php auch "korrekt"
zusammengesetzt. Jetzt will ich, dass bei einer bestimmten Bedingung das
selecttag auf einen bestimmten optionvalue eingestellt wird. Wenn die URL
"/bookchange.php?authorid=0" von einer anderen Datei namens authorlist.php
zur Datei bookchange.php abgeschickt wird, so soll sich das selecttag auf
den optionvalue "Neuer Autor mit Buch" stellen. Wie realisiere ich das?
Interessant wäre auch noch, wie man ein selecttag generell bei bestimmten
Bedingungen mit php voreinstellen kann. Hier ist das Formular mit dem
selecttag und dem Aufruf der Funktion getSelectTag, die es zuammensetzt:

name="FORMULAR" method="POST">






Hier die eigentliche Funktion getSelectTag in der Datei htmlclass.php, die
das selecttag mit den Autornamen aus der postgres Datenbank zusammensetzt:

public static function getSelectTag($name, $options, $selected)
{
$returnvalue = "\n";
echo ($returnvalue);
}

Die Funktion setzt das selecttag mit den Autornamen aus der postgres
Datenbank korrekt zusammen.

Grüße und Danke
Andreas

Re: selectag einstellen

am 12.10.2006 12:37:15 von Jens Riedel

Andreas Bauer wrote:

> Jetzt will ich, dass bei einer bestimmten Bedingung das
> selecttag auf einen bestimmten optionvalue eingestellt wird. Wenn die
> URL "/bookchange.php?authorid=0" von einer anderen Datei namens
> authorlist.php zur Datei bookchange.php abgeschickt wird, so soll sich
> das selecttag auf den optionvalue "Neuer Autor mit Buch" stellen. Wie
> realisiere ich das? Interessant wäre auch noch, wie man ein selecttag
> generell bei bestimmten Bedingungen mit php voreinstellen kann. Hier ist
> das Formular mit dem selecttag und dem Aufruf der Funktion getSelectTag,
> die es zuammensetzt:
[...]

Du kannst doch in der Funktion nachschauen, wie sie die Parameter
verarbeitet und daraus die Selectbox generiert.
Um das "Neuer Autor mit Buch" mit in die automatische Generierung zu
packen, musst du es nur an das Anfang des von
$DbMapper->readAuthorNames() gelieferte Array packen (mit dem Key 0) und
als selected-ID die ID aus dem GET-Request setzen, falls vorhanden.

Also in etwa so:

....
$authors = $DbMapper->readAuthorNames();
array_unshift($authors, array(0 => 'Neuer Autor mit Buch');
$authorId = isset($_GET['authorid']) ? $_GET['authorid'] :
$Book->getAuthorId;
echo HtmlClass::getSelectTag("selectAuthorId",$authors,$authorId) ;
?>

Gruß,
Jens

--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach

Re: selectag einstellen

am 12.10.2006 23:24:35 von Andreas Bauer

Hallo Jens,
Jens Riedel wrote:
> Du kannst doch in der Funktion nachschauen, wie sie die Parameter
> verarbeitet und daraus die Selectbox generiert.
> Um das "Neuer Autor mit Buch" mit in die automatische Generierung zu
> packen, musst du es nur an das Anfang des von $DbMapper->readAuthorNames()
> gelieferte Array packen (mit dem Key 0) und als selected-ID die ID aus dem
> GET-Request setzen, falls vorhanden.
>
> Also in etwa so:
>
> ...
> > $authors = $DbMapper->readAuthorNames();
> array_unshift($authors, array(0 => 'Neuer Autor mit Buch'));
> $authorid = isset($_GET['authorid']) ? $_GET['authorid'] :
> $Book->getAuthorId();
> echo HtmlClass::getSelectTag("selectAuthorId",$authors,$authorid) ;
> ?>

dank Dir, aber die Voreinstellung auf "Neuer Autor mit Buch" wird mit dem
Code
nicht angezeigt. Stattdessen steht schlicht das Wort "Array" im Browser im
Autorformularselecttag.
Der Browser bringt keine Fehlermeldung. Die über die URL an
$_GET['authorid'] uebergebene
$authorid wird mit "print($authorid);" korrekt angezeigt. Der Wert ist
korrekt je nach URL 0
oder 4,7,68. Hier ist noch mal das Formular mit dem selecttag Autor, in der
die getSelectTag
funktion aufgerufen wird und die Funktion getSelectTag:

name="FORMULAR" method="POST">

 


Autor:

 


("selectAuthorId", $DbMapper->readAuthorNames(),
$Book->getAuthorId());?>







public static function getSelectTag($name, $options, $selected=0)
{
$returnvalue = "\n";
echo ($returnvalue);
}



Grüße
Andreas

Re: selectag einstellen

am 13.10.2006 02:16:33 von Oliver Block

Andreas Bauer wrote:

> soll sich das selecttag auf
> den optionvalue "Neuer Autor mit Buch" stellen.
> Wie realisiere ich das?

Er die if-Schleife durchlaufen, ohne die zwei Zeilen vorher. Falls keine
Option mit $selected übereingestimmt hat,

echo ("
\n
\n" .
$returnvalue);

Gruß,

Oliver

--
Leben ist mehr als ...

Re: selectag einstellen

am 13.10.2006 02:18:24 von Oliver Block

Andreas Bauer wrote:

> Stattdessen steht schlicht das Wort "Array" im Browser im
> Autorformularselecttag.

Dann ist es auch ein Array.

Gruß,

Oliver

--
Leben ist mehr als ...

Re: selectag einstellen

am 13.10.2006 09:45:52 von Jens Riedel

Andreas Bauer wrote:

>> >> $authors = $DbMapper->readAuthorNames();
>> array_unshift($authors, array(0 => 'Neuer Autor mit Buch'));
>> $authorid = isset($_GET['authorid']) ? $_GET['authorid'] :
>> $Book->getAuthorId();
>> echo HtmlClass::getSelectTag("selectAuthorId",$authors,$authorid) ;
>> ?>
>
>
> dank Dir, aber die Voreinstellung auf "Neuer Autor mit Buch" wird mit
> dem Code
> nicht angezeigt. Stattdessen steht schlicht das Wort "Array" im Browser
> im Autorformularselecttag.

Ist auch korrekt. Meine Lösung war diesbezüglich ja auch ein
ungetesteter Schnellschuss... ;-))

Ersetze mal die Zeile

array_unshift($authors, array(0 => 'Neuer Autor mit Buch'));

durch

$authors[0] = 'Neuer Autor mit Buch';

und schau, was dann passiert.

Gruß,
Jens

PS: Selber den Code nachvollziehen und mal schauen, woran es liegen
könnte und ein bisschen basteln kann übrigens auch nicht schaden...

--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach

Re: selectag einstellen

am 14.10.2006 14:39:55 von Andreas Bauer

Hallo Jens, Hallo NG
Jens Riedel wrote:
>> dank Dir, aber die Voreinstellung auf "Neuer Autor mit Buch" wird mit dem
>> Code
>> nicht angezeigt. Stattdessen steht schlicht das Wort "Array" im Browser
>> im Autorformularselecttag.

> Ist auch korrekt. Meine Lösung war diesbezüglich ja auch ein ungetesteter
> Schnellschuss... ;-))
> Ersetze mal die Zeile
>
> array_unshift($authors, array(0 => 'Neuer Autor mit Buch'));
>
> durch
>
> $authors[0] = 'Neuer Autor mit Buch';
Danke für die Hilfe. Das müßte schon klappen. Ich habe
noch ein anderes Problem:
Ich will beim Abschicken des Formulars mit POST in meinem
Code die 2 URLs mit ?authorid=Wert und ?bookid=Wert mit
$_GET['authorid'] und $_GET['bookid'] auslesen. Der Code
des Formulars liegt aber unter der
"if (isset ($_POST['submitBookChange']){.....}" Bedingung.
Jetzt muß ich, da ich beim Abschicken des Formulars die URL
auslese und weiterverarbeiten muß, die beiden $_GET Parameter
auslesen und in der if (isset ($_POST['submitBookChange'])
auch verarbeiten. Geht nicht??: In der
if (isset ($_POST['submitBookChange']) kann ich kein
$_GET['authorid'] und $_GET['bookid'] auslesen, $_POST und
$_GET zusammen will nicht. Wie könnt ich das realisieren?
Ich hab versucht, das zu lösen, indem ich alle $_POST
Variablen durch $_GET ersetzt habe, nützt nichts. Ich komme
nur im Code vor der if (isset ($_GET['submitBookChange']) an die URL.
Dahinter im Code nicht mehr.

Grüße
Andreas

Re: selectag einstellen

am 14.10.2006 16:23:20 von Claus Reibenstein

Andreas Bauer schrieb:

> Ich will beim Abschicken des Formulars mit POST in meinem
> Code die 2 URLs mit ?authorid=Wert und ?bookid=Wert mit
> $_GET['authorid'] und $_GET['bookid'] auslesen. Der Code
> des Formulars liegt aber unter der
> "if (isset ($_POST['submitBookChange']){.....}" Bedingung.

Wieso "aber"? Wenn ich Dich richtig verstanden habe, liegt der Code in
dem Block hinter dem if(isset(...)), unterliegt also ansonsten keinerlei
weiteren Beschränkungen.

> Jetzt muß ich, da ich beim Abschicken des Formulars die URL
> auslese und weiterverarbeiten muß, die beiden $_GET Parameter
> auslesen und in der if (isset ($_POST['submitBookChange'])
> auch verarbeiten. Geht nicht??: In der
> if (isset ($_POST['submitBookChange']) kann ich kein
> $_GET['authorid'] und $_GET['bookid'] auslesen, $_POST und
> $_GET zusammen will nicht.

Dann machst Du irgend etwas anderes falsch. Auf meinen Webseiten
funktioniert so etwas problemlos.

Gruß. Claus

Re: selectag einstellen

am 14.10.2006 17:33:20 von Andreas Bauer

Hallo,
Claus Reibenstein wrote:
>
>> Ich will beim Abschicken des Formulars mit POST in meinem
>> Code die 2 URLs mit ?authorid=Wert und ?bookid=Wert mit
>> $_GET['authorid'] und $_GET['bookid'] auslesen. Der Code
>> des Formulars liegt aber unter der
>> "if (isset ($_POST['submitBookChange']){.....}" Bedingung.
>
> Wieso "aber"? Wenn ich Dich richtig verstanden habe, liegt der Code in
> dem Block hinter dem if(isset(...)), unterliegt also ansonsten keinerlei
> weiteren Beschränkungen.
>
>> Jetzt muß ich, da ich beim Abschicken des Formulars die URL
>> auslese und weiterverarbeiten muß, die beiden $_GET Parameter
>> auslesen und in der if (isset ($_POST['submitBookChange'])
>> auch verarbeiten. Geht nicht??: In der
>> if (isset ($_POST['submitBookChange']) kann ich kein
>> $_GET['authorid'] und $_GET['bookid'] auslesen, $_POST und
>> $_GET zusammen will nicht.
>
> Dann machst Du irgend etwas anderes falsch. Auf meinen Webseiten
> funktioniert so etwas problemlos.
Vor der Bedingung bekomme ich die ?authorid= , also "Ubergabe: 2" zum Test,
ob die ?authorid mit $_GET('authorid') von der URL ausgelesen wird.
Code:
if (isset($_GET['authorid']))
{
if (($_GET['authorid'])==2)
{
$uebergabe=1;
$uebergabe=($_GET['authorid']);
echo('Uebergabe: ');echo($uebergabe);
}
else
{
echo('Fehler');
}

}

if (isset ($_POST['submitBookChange']))
{



Danach nicht, also keine "Uebergabe: 2" zum Testen,
Code:
if (isset ($_POST['submitBookChange']))
{
if (isset($_GET['authorid']))
{
if (($_GET['authorid'])==2)
{
$uebergabe=1;
$uebergabe=($_GET['authorid']);
echo('Uebergabe: ');echo($uebergabe);
}
else
{
echo('Fehler');
}

}

Grüße und Danke
Andreas

Re: selectag einstellen

am 14.10.2006 17:53:43 von Ulf Kadner

Andreas Bauer wrote:

> Danke für die Hilfe. Das müßte schon klappen. Ich habe
> noch ein anderes Problem:
> Ich will beim Abschicken des Formulars mit POST in meinem
> Code die 2 URLs mit ?authorid=Wert und ?bookid=Wert mit
> $_GET['authorid'] und $_GET['bookid'] auslesen.

Du kannst mit PHP nix beim abschicken auslesen! Du kannst maximal
empfange Daten nutzen. Der Vorgang des Abschickens geschieht auf den
Client. Davon bekommt PHP nix mehr mit.

> des Formulars liegt aber unter der
> "if (isset ($_POST['submitBookChange']){.....}" Bedingung.

Das klingt alles sehr wild was Du da schreibst. :-)

> Jetzt muß ich, da ich beim Abschicken des Formulars die URL
> auslese und weiterverarbeiten muß,

Man man Das was Du beschreibt ist mit PHP absolut unmöglich.
Evtl. willste ja Javascript dazu nutzen? Ansonsten fällt mir nix dazu ein.

MfG, Ulf

Re: selectag einstellen

am 14.10.2006 20:36:25 von Claus Reibenstein

Andreas Bauer schrieb:

> Claus Reibenstein wrote:
>
>> Dann machst Du irgend etwas anderes falsch. Auf meinen Webseiten
>> funktioniert so etwas problemlos.
>
> Vor der Bedingung bekomme ich die ?authorid= , also "Ubergabe: 2" zum Test,
> ob die ?authorid mit $_GET('authorid') von der URL ausgelesen wird.
> Code:
> if (isset($_GET['authorid']))
> {
> if (($_GET['authorid'])==2)
^ ^

Diese Klammern sind überflüssig und erschweren nur das Lesen Deines -
übrigens ziemlich wirren - Codes.

> {
> $uebergabe=1;
> $uebergabe=($_GET['authorid']);
^ ^

Auch diese Klammern sind überflüssig. Außerdem setzt Du hier 2x dieselbe
Variable hintereinander auf zwei verschiedene Werte. Welchen Sinn soll
das haben?

> echo('Uebergabe: ');echo($uebergabe);

echo 'Uebergabe: ', $uebergabe;

oder

echo "Uebergabe: $uebergabe";

echo ist keine Funktion, sondern ein Befehl.

> Danach nicht, also keine "Uebergabe: 2" zum Testen,

Sondern?

> Code:
> if (isset ($_POST['submitBookChange']))
> {
> if (isset($_GET['authorid']))
> {
> if (($_GET['authorid'])==2)
> {
> $uebergabe=1;
> $uebergabe=($_GET['authorid']);
> echo('Uebergabe: ');echo($uebergabe);
> }
> else
> {
> echo('Fehler');
> }
>
> }

Bekommst Du 'Fehler' ausgegeben oder gar nichts? Wenn gar nichts, dürfte
das daran liegen, dass $_POST['submitBookChange'] nicht gesetzt ist und
Dein Programm deshalb gar nicht erst in diesen Programmblock reinläuft.

Unabhängig davon erkenne ich an Deinem Code, dass Dir nicht nur
Grundlagen in PHP, sondern generelle Grundlagen der Programmierung
fehlen. Daran solltest Du unbedingt arbeiten. Sonst wirst Du auf keinen
grünen Zweig kommen.

Gruß. Claus

Re: selectag einstellen

am 14.10.2006 22:29:13 von Andreas Bauer

Hallo Ulf, NG,
Ulf Kadner wrote:
>> Danke für die Hilfe. Das müßte schon klappen. Ich habe
>> noch ein anderes Problem:
>> Ich will beim Abschicken des Formulars mit POST in meinem
>> Code die 2 URLs mit ?authorid=Wert und ?bookid=Wert mit
>> $_GET['authorid'] und $_GET['bookid'] auslesen.
> Du kannst mit PHP nix beim abschicken auslesen!
Endlich hat mal einer verstanden um was es geht. Tausend Dank.
Hab auch schon vermutet, dass es mit php überhaupt nicht
möglich ist, beim POSTEN eines Formulars eine URL mit
$_GET auszulesen.

Könnt man das vielleicht so lösen?:
Die URL mit dem Parameter ?authorid= Wert "vor" der
if (isset ($_POST['submitBookChange'])) Bedingung auslesen
und in einer Variablen speichern und dann diese Variable "in" die
if (isset ($_POST['submitBookChange'])) {......}Bedingung bringen,
wo ich sie dann weiter verwenden kann.
Also, erst die URL auslesen und in $authorid speichern:
if (isset($_GET['authorid']))
{
$authorid = $_GET['authorid'];


//dann die POST Bedingung setzen:
if (isset ($_POST['submitBookChange']))
{
//und die Variable $authorid hier weiter verwenden
if ($authorid > 0)
{ ................................
...................................

Ist das mit php möglich? Bei diesem Code bekomme ich im Browser die
Fehlermeldung:
Notice: Undefined variable: $authorid

Klar, $authorid ist im Namensraum der if (isset
($_POST['submitBookChange']))
Bedingung nicht deklariert und initialisiert. Wenn ich $authorid aber
initialisiere, mit $authorid=0, hab ich ja den Wert 0 für $authorid und
wieder
nicht den Wert von dem URL Parameter "?authorid=Wert", den ich in der
Bedingung if (isset ($_POST['submitBookChange'])) {...........}brauche?


Grüße
Andreas

Re: selectag einstellen

am 15.10.2006 13:35:43 von Jens Riedel

Andreas Bauer wrote:

> Endlich hat mal einer verstanden um was es geht. Tausend Dank.
> Hab auch schon vermutet, dass es mit php überhaupt nicht
> möglich ist, beim POSTEN eines Formulars eine URL mit
> $_GET auszulesen.

Hi,
ich beziehe mich mal nicht weiter auf deinen folgenden Code und die
weiteren Ausführungen, weil ich ehrlich gesagt keine Ahnung habe, was
genau du dir da zusammenbastelst und wo das eigentliche Problem liegt.

Was ich verstehe, ist folgendes: du schickst ein Formular per
POST-Request an ein PHP-Skript und hängst an die URL noch GET-Parameter.
Das müsste ja dann so aussehen, dass du im -Tag sowas hast wie


....

(Falls nicht: wo sollen deine GET-Parameter herkommen, die du neben dem
POST-Request noch auswerten möchtest?)

Erstens ist es überhaupt kein Problem, dann im PHP-Skript sowohl die
Variablen aus $_GET als auch aus $_POST zu lesen (die sollten dir
überall in jeder auch noch so verschachtelten if-Abfrage zur Verfügung
stehen), zweitens gibt es ja für dich auch die Möglichkeit, auf
GET-Variablen zu verzichten und die Parameter als hidden-Fields ins
Formular zu packen, so dass sie ebenfalls mit als POST-Variablen
verwendbar sind.

Gruß,
Jens

--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach

Re: selectag einstellen

am 19.10.2006 00:03:42 von Andreas Bauer

Hall Jens, Hallo NG,
Jens Riedel wrote:
> Was ich verstehe, ist folgendes: du schickst ein Formular per POST-Request
> an ein PHP-Skript und hängst an die URL noch GET-Parameter.
> Das müsste ja dann so aussehen, dass du im -Tag sowas hast wie
>
> (Falls nicht: wo sollen deine GET-Parameter herkommen, die du neben dem
> POST-Request noch auswerten möchtest?)
Meine GET-Parameter kommen von einer anderen Datei mit:
Neuen Autor mit Buch
anlegen

und werden durch den Link an die Datei mit dem Formular, die bookchange.php,
geschickt.
> Erstens ist es überhaupt kein Problem, dann im PHP-Skript sowohl die
> Variablen aus $_GET als auch aus $_POST zu lesen (die sollten dir überall
> in jeder auch noch so verschachtelten if-Abfrage zur Verfügung stehen),
> zweitens gibt es ja für dich auch die Möglichkeit, auf GET-Variablen zu
> verzichten und die Parameter als hidden-Fields ins Formular zu packen, so
> dass sie ebenfalls mit als POST-Variablen verwendbar sind.
Ich habe im Formular für die 2 GET Parameter 2 hidden-Fields
verwendet, mit denen klappt jetzt das Einlesen und die weitere
Verwertung des Formulars und der übergebenen Parameter und das
Eintragen der Formulardaten in die Datenbank:




Ich kann im Script dann so die GET Parameter weiterverarbeiten:
if (isset($_POST['hiddenBookId']))

{
// Setze BuchId
$bookid = $_POST['hiddenBookId'];

Dank Dir.
Jetzt habe ich ein neues Problem:
Nachdem ich die Fromulardaten über den submit Button abgeschickt habe,
und die dann auf dem Server sind, es wird an die selbe Datei bookchange.php
geschickt, sind die GET Parameter der URL, also der folgenden URL im
Browser:
http://192.168.xx.xx/php/bookchange.php?authorid=0&bookid=0,
ja nicht mehr vorhanden, da die Fromulardatei ja abgeschickt wurde und
daher in der URL keine GET Parameter mehr sind. Die URL nach dem Abschicken
des Formulars sieht dann so aus:
http://192.168.xx.xx/php/bookchange.php
Aber der Anwender des Formulars will das Formular ja vielleicht noch mal
abschicken, weil er noch einen Autor mit Buch in das Formular eingeben
will. Der Anwender will aber nicht umständlich zurückklicken bis er die
GET Parameter in der URL wieder sieht, um dann das Formular erneut
auszufüllen und abzuschicken. Er will sofort neue Einträge in das Formular
machen und nicht umständlich zu der Seite mit
http://192.168.xx.xx/php/bookchange.php?authorid=0&bookid=0,
zurückklicken. Wie könnt man mit php Code schreiben, dass ich die GET
Parameter, die ja jetzt nicht mehr in der URL
http://192.168.xx.xx/php/bookchange.php sind,
wieder in die URL bekommen. Die GET Parameter brauche ich jetzt in dem Fall
genauso als Parameter für die bookchange.php Datei zur weiteren Verwendung
in
der bookchange.php wie vorher vor dem Abschicken des Formulars.
Vielleicht hast Du oder ein Anderer verstanden, was ich meine?
Aber solche Probleme müßten bei der Validierung von php Formularen
eigentlich öfters vorkommen.

Grüße und Danke
Andreas

Re: selectag einstellen

am 19.10.2006 11:03:56 von Jens Riedel

Andreas Bauer wrote:

> Jetzt habe ich ein neues Problem:
> Nachdem ich die Fromulardaten über den submit Button abgeschickt habe,
> und die dann auf dem Server sind, es wird an die selbe Datei bookchange.php
> geschickt, sind die GET Parameter der URL, also der folgenden URL im
> Browser:
> http://192.168.xx.xx/php/bookchange.php?authorid=0&bookid=0,
> ja nicht mehr vorhanden, da die Fromulardatei ja abgeschickt wurde und
> daher in der URL keine GET Parameter mehr sind.

Logisch. Die Parameter authorid und bookid sind ja auch nun im Formular
enthalten, also als POST-Parameter (wenn auch unter anderem Namen, wozu
ich nicht weiß, warum du den gewählt hast - hättest ruhig das Original
nehmen können).

> Die URL nach dem Abschicken
> des Formulars sieht dann so aus:
> http://192.168.xx.xx/php/bookchange.php

Klar. (Übrigens: die 192.168.xx.xx-Adresse ist eine in deinem internen
Netzwerk, die musst du wahrscheinlich hier gar nicht maskieren, um sie
zu schützen ;-)).

> Aber der Anwender des Formulars will das Formular ja vielleicht noch mal
> abschicken, weil er noch einen Autor mit Buch in das Formular eingeben
> will.
> Der Anwender will aber nicht umständlich zurückklicken bis er die
> GET Parameter in der URL wieder sieht, um dann das Formular erneut
> auszufüllen und abzuschicken. Er will sofort neue Einträge in das Formular
> machen und nicht umständlich zu der Seite mit
> http://192.168.xx.xx/php/bookchange.php?authorid=0&bookid=0,
> zurückklicken. Wie könnt man mit php Code schreiben, dass ich die GET
> Parameter, die ja jetzt nicht mehr in der URL
> http://192.168.xx.xx/php/bookchange.php sind,
> wieder in die URL bekommen.

Wenn es sich bei beiden Parametern um den Wert 0 handelt, könntest du
z.B. im Skript festlegen, dass sie auf 0 gesetzt werden, wenn sie nicht
im Request vorhanden sind.
Eine andere Möglichkeit ist, sie einfach im action-Tag des Formulars mit
einzutragen.

Dann musst du natürlich aufpassen, dass du beim Auswerten des Formulars
nicht mit den "alten" GET-Werten und den POST-Werten durcheinander kommst.

> Vielleicht hast Du oder ein Anderer verstanden, was ich meine?

Ich bin mir nicht ganz sicher.

> Aber solche Probleme müßten bei der Validierung von php Formularen
> eigentlich öfters vorkommen.

Ehrlich gesagt finde ich dein Vorgehen da relativ umständlich und nicht
ganz intuitiv. Ich weiß auch nicht, was das beibehalten alter
Vorbelegungen mit Validierung zu tun hat.

Gruß,
Jens


--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach

 


Autor:

 


readAuthorNames();
array_unshift($authors, array(0 => 'Neuer Autor
mit Buch'));
$authorid = isset($_GET['authorid']) ?
$_GET['authorid'] :
$Book->getAuthorId(); print($authorid);
echo
HtmlClass::getSelectTag("selectAuthorId",$authors,$authorid) ;?>