LosPablos: PHP Formularauswertungsproblem

Hi,

ich habe ein Problem beim Auswerten von Formularinhalten. Ich habe einmal ein kleines Formular mit einem Eingabefeld und einem Submit-Button:

echo "<center><form method='post' name='searchform' target='_self' action='saprfc_call.php?page=itemsShow'>
         <input type='text' name='suchbegriff' size='30'>
         <input type='submit' name='submit' value='Eintrag suchen' size='30'>
         </form></center>";

Danach steht hier der Inhalt in $suchbegriff.

Hier funktioniert das aber leider nicht:

echo "<table align='center' bgcolor='#C2E9FC' border='1' bordercolorlight='#2F4ACC' bordercolordark='#FFFFFF' width='35%'>";
   echo "<form method='post' name='insertform' target='_self' action='saprfc_call.php?page=itemsInsert&switch=1'>";
   echo "<tr>";
   echo "<td><strong>Vorname</strong></td>";
   echo "<td><input type='text' name='vorname' size='30'></td>";
   echo "</tr>";

Nach Submit ist $vorname trotzdem leer! Kann mir jemand sagen, woran das liegt?

  1. hi,

    bitte poste zukünftig keinen PHP-code, wenn das problem eher clientseitig liegt.

    echo "<table align='center' bgcolor='#C2E9FC' border='1' bordercolorlight='#2F4ACC' bordercolordark='#FFFFFF' width='35%'>";
       echo "<form method='post' name='insertform' target='_self'

    Nach Submit ist $vorname trotzdem leer! Kann mir jemand sagen, woran das liegt?

    du kannst <form> nicht so in <table> verschachteln.

    entweder muss form außen um die gesamte tabelle, oder in eine einzelne tabellenZELLE hinein.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke für die schnelle Antwort!
      Ich hab das Form-Tag jetzt um die gesamte Tabelle gesetzt, es geht aber trotzdem noch nicht... :o(

      Gruss Pablo

      1. hi,

        Ich hab das Form-Tag jetzt um die gesamte Tabelle gesetzt, es geht aber trotzdem noch nicht... :o(

        </faq/#Q-07b>

        und bitte mal link:http://www.php.net/manual/de/language.variables.predefined.php] lesen.

        und bitte mal kontrollausgaben machen, beispielsweise $_GET/$_POST mittels print_r() oder var_dump() betrachten.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          korrektur:

          und bitte mal http://www.php.net/manual/de/language.variables.predefined.php lesen.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. du kannst <form> nicht so in <table> verschachteln.

      man soll es nicht, aber es sollte trotzdem verschickt werden (so viel fehlertoleranz muss sein!), manchmal geht es garnicht anders
      Außerdem wurde es verschickt, sonst käme ja nicht die gesamte tabelle, nur ohne die eine variable.

      1. hi,

        man soll es nicht, aber es sollte trotzdem verschickt werden (so viel fehlertoleranz muss sein!),

        sagt wer?

        manchmal geht es garnicht anders

        halte ich für unfug.

        Außerdem wurde es verschickt, sonst käme ja nicht die gesamte tabelle, nur ohne die eine variable.

        wo von bitte redest du?
        diese information kann ich aus den postings des OP nicht entnehmen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Danach steht hier der Inhalt in $suchbegriff.

    Das ist der Fehler! Früher wurden die GETs und POSTs direkt in variablen übertragen, seit php4 werden sie das nicht mehr. Wo immer du das ausprobiert hast (und es funktioniert hat), ist wohl eine sehr alte version drauf oder http://de2.php.net/manual/de/ini.sect.data-handling.php#ini.register-globals

    Du kannst sie nur über $_GET['suchbegriff'] oder $_POST['suchbegriff'], oder mit $_REQUEST['suchbegriff'], dann ist es egal ob es mit GET oder POST kommt, wenn es aber ein cookie namens suchbegriff gibt, überschreibt es den formularwert.
    Am besten mach gleich am anfang des skripts $suchbegriff = $_GET/_POST/_REQUEST['suchbegriff'];, dann musst du es nur einmal ändern (und es wird kürzer bzw bleibt kurz).
    Eine weitere möglichkeit (find ich persönlich nicht so gut, ich nehme immer $xy = $_GET/_POST/_REQUEST['xy'], außer ich verwende es nur ein, zwei mal) ist import_request_variables(http://de2.php.net/manual/de/function.import-request-variables.php) .

    Viel Erfolg

    1. echo $begrüßung;

      Früher wurden die GETs und POSTs direkt in variablen übertragen, seit php4 werden sie das nicht mehr.

      Das ist so nicht richtig. Bis Version 3 mag der erste Teil stimmen. Seit 4.0.0 ist dieses Feature mittels register_globals schaltbar. Aus Kompatibilitätsgründen war die Standardeinstellung on, wobei immer empfohlen wurde, es auszuschalten. Mittlerweile ist es per default auf off.

      Du kannst sie nur über $_GET['suchbegriff'] oder $_POST['suchbegriff'], oder mit $_REQUEST['suchbegriff'], dann ist es egal ob es mit GET oder POST kommt, wenn es aber ein cookie namens suchbegriff gibt, überschreibt es den formularwert.

      Dieses Überschreibverhalten ist ebenfalls beeinflussbar. Diesmal mit variables_order.

      Am besten mach gleich am anfang des skripts $suchbegriff = $_GET/_POST/_REQUEST['suchbegriff'];,

      So pauschal kann man das nicht sagen. In einem einfachen Geradeaus-Script mag das zutreffen. Ansonsten muss jeder selbst entscheiden, ob eine weitere Variable sinnvoll ist oder nicht. Der große Vorteil von $_GET/etc. ist, dass sie superglobal sind und damit auch innerhalb von Funktionen angesprochen werden können. Diesen Vorteil beispielsweise verlieren sie, wenn sie in eine einfache Variable umkopiert werden.

      echo "$verabschiedung $name";