Announcement

Collapse
No announcement yet.

php und das olle Formular

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • php und das olle Formular

    Halle Team,

    immer wieder plage ich mich mit den Formularen und ihren Weiterleitungen herum. Hier mal mein neuester Schicksalsschlag:

    belegung.php:
    Code:
    <?php
    //Formular zur Auswahl von Jahr und Monat
    echo('
    	<form>
    	
    		<select style="width: 150px;" name="monat" size="1">
    			<option value="1" selected="selected">Januar</option>
    			<option value="2">Februar</option>
    			<option value="3">März</option>
    			<option value="4">April</option>
    			<option value="5">Mai</option>
    			<option value="6">Juni</option>
    			<option value="7">Juli</option>
    			<option value="8">August</option>
    			<option value="9">September</option>
    			<option value="10">Oktober</option>
    			<option value="11">November</option>
    			<option value="12">Dezember</option>
    		</select>
    
    		<select style="width: 150px;" name="jahr" size="1">
    			<option value="2009">2009</option>
    			<option value="2010" selected="selected">2010</option>
    			<option value="2011">2011</option>
    			<option value="2012">2012</option>
    			<option value="2013">2013</option>
    			<option value="2014">2014</option>
    		</select>
    		
    		<input type="submit" value="Absenden" action="localhost/ferienwohnung/index.php?site=gaestebuch.php&amp;monat='.$_GET[monat].'&amp;jahr='.$_GET[jahr].'" method="get" />
    
    	</form>
    ');
    ?>
    Egal, ob ich nun
    Code:
    <input type="submit" value="Absenden" action="localhost/ferienwohnung/index.php?site=gaestebuch.php&amp;monat='.$_GET[monat].'&amp;jahr='.$_GET[jahr].'" method="get" />
    oder
    Code:
    <input type="submit" value="Absenden" action="localhost/ferienwohnung/index.php?site=gaestebuch.php&amp;monat='.$_GET[monat].'&amp;jahr='.$_GET[jahr].'" />
    oder
    Code:
    <input type="submit" value="Absenden" />
    eintrage, es kommt am Ende immer folgender Link zur index.php mit den sprechenden Werten bei "monat" und "jahr" heraus:
    Code:
    http://localhost/ferienwohnung/index.php?monat=1&amp;jahr=2010
    Stehen sollte dort aber:
    Code:
    http://localhost/ferienwohnung/index.php?site=belegung.php&amp;monat=1&amp;jahr=2010
    Tut er nicht, will er nicht, macht er nicht...

    Hinzu kommt, dass meine index.php die Eingabe des Wertes "site" überprüft (Hier ganz primitiv und ungeschützt gegen Angriffe, aber das tut jetzt ja nicht zur Sache):
    Code:
    if(isset($_GET['site']))
    				{
    					if(!file_exists("dateien/contentseiten/".$_GET['site']))
    					{
    						include("dateien/contentseiten/startseite.php");
    					}
    					else
    					{
    						include("dateien/contentseiten/".$_GET['site']);
    					}
    				}
    				else
    				{
    					include("dateien/contentseiten/startseite.php");
    				}
    Wieso klappt das mit dem Formular nicht? Wie muss der action-Befehl denn aussehen, damit der Link zur belegung.php klappt?

    Gruß,
    Martin

  • #2
    Version 1 & 2 sind falsch. Die Parameter werden automatisch mit übermittelt die extra Angabe ist nicht erforderlich

    Version 3 ruft, da der action Parameter nicht angegeben wurde die Ursprungsseite selbst nochmal auf

    Warum nun

    site=belegung.php

    das als Parameter geliefert werden soll, erschließt sich mit nicht. Wenn du kein entsprechendes Formularfeld (ggf. ein Hidden-Feld mit diesem festen Eintrag) hast, wird dieser Wert auch nicht geliefert.
    Christian

    Comment


    • #3
      Okay, danke erst einmal.

      Es muss deshalb die belegung.php geladen werden, weil sonst automatisch die startseite.php geliefert wird. Zudem soll nach dem Formularaufruf auch wieder die belegung.php erscheinen; das ist der Zweck des Formulars. Was muss ich denn bei action eintragen, damit der Link
      Code:
      http://localhost/ferienwohnung/index.php?site=belegung.php
      ausgeführt und beide Parameter aus dem Formular bei dem Link angehängt werden?

      Comment


      • #4
        In dem action-Value den Pfad zur belegung.php Datei. Damit wird dieser allerdings NICHT gleichzeitig als Parameter geliefert. Dies ist auch nicht erforderlich, da du dieses mit

        http://php.net/manual/de/reserved.variables.server.php

        SCRIPT_NAME

        bekommst
        Christian

        Comment


        • #5
          *ähem* *räusper* Es tut mir ja nun echt Leid, doch ich muss noch einmal stören... Die Variable $_SERVER ist mir bekannt, doch ist mir nicht klar, wie ich damit nun mein action hinbiegen kann, damit als Variable zusätzlich site=belegung.php geladen wird. Wäre es möglich - auch wenn es heißt "selbst ist der Mann" und "Google ist dein Freund" - dass du mir den action-Link geben kannst und mir auch noch sagst, wo ich den einfügen muss? Ich nehme ja mal an, dass der auch weiterhin im input stehen soll?

          Dass mit dem versteckten (hidden) Feld versteh ich, find ich aber doof^^ Dann möchte ich doch lieber herausfinden, wie man generell das Formular richtig hinbiegen muss, denn diesen Fehler werd ich nöch öfters haben.

          Gruß,
          Becks... auf der Suche nach der Antwort auf alle Fragen

          Comment


          • #6
            Es werden über einen Submit-Button nur Formulardaten übermittelt die vorhanden sind. Deswegen ist da nichts mit "hinbiegen", wenn du kein Formularfeld Names site hast, welches deinen Inhalt hat.

            Du kannst SERVER benutzen um damit das gerade aktuelle Script abzufragen und brauchst dann keine Übermittlung über die Formulardaten. Dann hast du die gewünschte Info

            Alternativ kannst du auf den Submit-Button verzichten und einen Link setzen. Dieser weist auf das PHP-Script und dort können dann beliebige Parameter angehängt werden

            Der übliche Weg ist über ein Hidden-Feld.


            auf der Suche nach der Antwort auf alle Fragen
            42
            Zuletzt editiert von Christian Marquardt; 26.06.2010, 13:23.
            Christian

            Comment


            • #7
              Oh yeah, krasses Teil, das geht ja wirklich! Habe das mal mit dem hidden-Feld versucht und wie mir das Internet auch mitgeteilt hat, ist es ja tatsächlich dazu gedacht, einem Script weitere Variablen mitzuteilen. Schönes Ding, läuft einwandfrei! Danke schön!

              Mein Formular sieht nun wie folgt aus:
              Code:
              <form>
              	<p>
              		<input type="hidden" name="site" value="belegung.php" />
              		
              		<select style="width: 150px;" name="monat" size="1">
              			<option value="1" selected="selected">Januar</option>
              			<option value="2">Februar</option>
              			<option value="3">März</option>
              			<option value="4">April</option>
              			<option value="5">Mai</option>
              			<option value="6">Juni</option>
              			<option value="7">Juli</option>
              			<option value="8">August</option>
              			<option value="9">September</option>
              			<option value="10">Oktober</option>
              			<option value="11">November</option>
              			<option value="12">Dezember</option>
              		</select>
              
              		<select style="width: 150px;" name="jahr" size="1">
              			<option value="2009">2009</option>
              			<option value="2010" selected="selected">2010</option>
              			<option value="2011">2011</option>
              			<option value="2012">2012</option>
              			<option value="2013">2013</option>
              			<option value="2014">2014</option>
              		</select>
              		
              		<input type="submit" value="Absenden" />
              	</p>
              </form>
              Bei der Validierung stelle ich noch fest, dass im <form> ein action eingetragen werden muss. Was kann/sollte man dort für action eintragen?

              Comment


              • #8
                Siehe Beitrag 2,4,ff

                http://de.selfhtml.org/html/formular...en.htm#bereich
                Zuletzt editiert von Christian Marquardt; 27.06.2010, 08:34.
                Christian

                Comment


                • #9
                  Alles klar, hab nun action="index.php" eingetragen. War nur verwundert, was ich hätte eintragen sollen, denn er verweist ja automatisch auf die index.php, da ich über die alle Seiten aufrufe. Aber nun gut, nun passt es Herzlichsten Dank für die vielen Hilfestellungen!

                  Comment


                  • #10
                    Hallo,
                    Originally posted by =[KKB]=Becks View Post
                    ...War nur verwundert, was ich hätte eintragen sollen, denn er verweist ja automatisch auf die index.php
                    Das stimmt so nicht! Das action-Attribut des <form>-Tag ist nicht umsonst "required". Es ist in jedem Fall ein Fehler es nicht anzugeben. Die Browser sind nur so kulant auf ein Fehlen nicht mit einer lapidaren Fehlermeldung zu reagieren, sondern stattdessen "irgendeine" Seite aufzurufen. Das ist i.a.R. nicht die index.php, sondern die gerade aktuelle URL (über die das Formular aufgerufen wurde). In deinem Fall also mehr oder wenig zufällig index.php.

                    Gruß Falk
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment

                    Working...
                    X