Andreas: WARUM speichert PHP Fehlermeldungen in meinen Variablen

Hallo!
Habe ein Formular mit PHP, nur leider habe ich nicht immer alle Variablen, das heißt nicht nur leere Variablen, sondern manche Variablen werden gar nicht in mein Formular übergeben, aber das ist ja eigentlich kein Problem, nur leider muß ich ALLE Variablen die vorkommen könnten an das nächste Formular übertragen, leider schreibt mir PHP jedesmal die kpl. Fehlermeldung in die Variablen, so wie:

<input type="hidden" name="Hersteller" value="<br>
<b>Warning</b>:  Undefined variable:  Hersteller in <b>c:\apache1.3.20\apache\htdocs\form2.php</b> on line <b>623</b><br>
">

Wie kann ich das unterbinden, mit ein paar wenigen Variablen wäre das ja kein Problem, sind aber über 40!

Was soll ich machen???
Gruß
Andreas

  1. hallo andreas

    Hallo!
    Habe ein Formular mit PHP, nur leider habe ich nicht immer alle Variablen, das heißt nicht nur leere Variablen, sondern manche Variablen werden gar nicht in mein Formular übergeben, aber das ist ja eigentlich kein Problem, nur leider muß ich ALLE Variablen die vorkommen könnten an das nächste Formular übertragen, leider schreibt mir PHP jedesmal die kpl. Fehlermeldung in die Variablen, so wie:

    <input type="hidden" name="Hersteller" value="<br>
    <b>Warning</b>:  Undefined variable:  Hersteller in <b>c:\apache1.3.20\apache\htdocs\form2.php</b> on line <b>623</b><br>
    ">

    ich nehme an du hast es bis jetzt so gemacht oder?
    <input type="hidden" name="Hersteller" value="<?php echo $foo?>">
    <input type="hidden" name="Marke" value="<?php echo $foo2?>">

    du benutzt also eine php-"feature", dass alle übertragenen werte in global variabeln gesetzt werden.
    in deinem fall führt das zu problem, weil das formular-feld leer ist und die variable somit nicht definiert wurde.

    probier es doch so:
    <input type="hidden" name="Hersteller" value="<?php echo $HTTP_POST_VARS["foo"]?>">
    <input type="hidden" name="Marke" value="<?php echo $HTTP_POST_VARS["foo2"]?>">

    mehr infos zum ganzen auf php.net
    http://www.php.net/manual/en/language.variables.external.php
    http://www.php.net/manual/en/language.variables.predefined.php

    grüessli

    siramon, ja aus der schweiz

    1. Hallo!
      Danke für den Tip, habe aber gerade selbst noch ein bisschen probiert und habe die in meinen Augen perfekte Lösung gefunden(STOLZ:-)

      <?
      if ( isset($HTTP_POST_VARS))
          {

      reset($HTTP_POST_VARS); //Zeiger auf das erste Element im Formular setzen
            foreach ($HTTP_POST_VARS as $key=>$Feld)
                {
       echo "<input type="hidden" name="$key" value="$Feld">\n";
            }
           }
        ?>

      Gruß
      Andreas

      1. Hallo Andreas,

        Danke für den Tip, habe aber gerade selbst noch ein bisschen probiert und habe die in meinen Augen perfekte Lösung gefunden(STOLZ:-)

        ist diese vielleicht noch besser?

        <input type="hidden" name="postvars" value="<? echo urlencode( serialize( $HTTP_POST_VARS)); ?>">

        mit

        $postvars_array = unserialize( urldecode( $postvars));

        bekommst du wieder ein Array, das dem ursprünglichen HTTP_POST_VARS entspricht.

        CYa
        GONZO