"form action" mit include

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • "form action" mit include

    hallo

    ich habe eine startseite auf der ich mit include($main) meine seiten einbinde.
    Verlinkt werden sie über main.php?page=seite.php
    PHP-Code:
        if($_SERVER['REQUEST_METHOD'] == 'GET'
        {
             
    $main $_GET['page'];
        } 
    auf verschienden Seiten, die eingebunden werden sind Formuare, die über POST daten in die Datenbank schreiben.
    mit dem include funktioniert nun mein $_SERVER["PHP_SELF"] im action Teil nicht mehr.
    Die Daten werden erst geschreiben, wenn die Seite neu geladen wird und sich die $_REQEUST["do"] in der Session befindet.

    Wie bekomme ich es nun hin, dass die Seite wie gewohnt läd?

    Hier der Quelltext der Seite:

    PHP-Code:
    <?php

        
    //ID Festlegen
        
    $id date("Ymd-His");
        
    $id_view date("Ymd-His");

        
    //Prüfen, ob Seite sich selbst aufruft
        
    if (isset ($_REQUEST["do"]) && $_REQUEST["do"] == "check")
        {
            
    //Datum festlegen
            
    $datum date("d.m.Y");
            
            
    //Festlegen der Pflichtfelder
            
    $error_msg "";
            
            if ( !isset (
    $_REQUEST["form_abteilung"]) || $_REQUEST["form_abteilung"] == "")
            {
                
    $error_msg "Bitte geben Sie eine Abteilung an.</br>";
            }
        
            if ( !isset (
    $_REQUEST["form_name"]) || $_REQUEST["form_name"] == "")
            {
                
    $error_msg .= "Bitte geben Sie einen Namen an.</br>";
            }

            if ( !isset (
    $_REQUEST["form_artikel"]) || $_REQUEST["form_artikel"] == "")
            {
                
    $error_msg .= "Bitte geben Sie einen Artikel an.</br>";
            }

            if ( !isset (
    $_REQUEST["form_anzahl"]) || $_REQUEST["form_anzahl"] == "")
            {
                
    $error_msg .= "Bitte geben Sie eine Anzahl an.</br>";
            }    
            
            if ( 
    $error_msg == "")
            {
                
    $weiter "Ihre Bestellung wurde eingetragen. Sie können nun eine weitere Bestellung aufgeben.<br /><br /><br />";
                
                
    //Zugriff auf die Datenbank
                
    mysqlconnect();
                
                
    //Datensätze in Datenbank übertragen
                
    $query  "INSERT INTO drucker (ID,Abteilung,Name,Artikel,Anzahl,Datum) VALUES (";
                
    $query .= "'".$id."',";
                
    $query .= "'".$_REQUEST["form_abteilung"]."',";
                
    $query .= "'".$_REQUEST["form_name"]."',";
                
    $query .= "'".$_REQUEST["form_artikel"]."',";
                
    $query .= "'".$_REQUEST["form_anzahl"]."',";
                
    $query .= "'".$datum."'";
                
    $query .= ")";
                
                
    // In die Datenbank eintragen
                
    $result    =    mysql_query$query );
                
                if ( ! 
    $result )
                {
                die(
    "Konnte den Datensatz nicht eintragen: " mysql_error() );
                }
            }
            
        }    
        
    // Datensätze für die Materialwahl zählen
    //$query_dm = "SELECT * FROM druckermaterial ORDER BY Bezeichnung";
    //$result_dm = mysql_query($query_dm);

    //if (! $result_dm)
    //{
    //    echo ("Konnte Tabelle Abteilungen nicht auslesen");
    //}

    //$anzahl_dm = mysql_num_rows($result_dm);

    // Auslesen der Daten für die Abteilungen
    $query_abteilungen  "SELECT * FROM abteilungen ORDER BY Name";
    $result_abteilungen mysql_query($query_abteilungen);

    if (! 
    $result_abteilungen)
    {
        echo (
    "Konnte Tabelle Abteilungen nicht auslesen");
    }

    $anzahl_abteilungen    mysql_num_rows($result_abteilungen);

    ?>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" href="css.css" type="text/css" />
    <title>Navigation</title>
    <style type="text/css">
    body {
        margin-left: 0px;
        margin-top: 0px;
        margin-right: 0px;
        background-color: #dbdbdb;
    }
    .Stil1 {color: #FFFFFF}
    </style>
    <script>
    <!-- Drucken des Frames
    function printframe() {
    window.print();
    }
    -->
    </script>
    </head>

    <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="29" background="images/design_09.png">Bestelleingabe Druckerverbrauchsmatrial : Tinte </td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <center>
    <form method="POST" <?php echo(" action=\"main.php?page=module/bestellungen/druckermaterial/drucker.php\" "); ?> >
    <?php
        
    if ( isset ($weiter))
        {
            echo 
    $weiter;
        }
        
        if ( isset (
    $error_msg))
        {
            echo 
    $error_msg;
        }
    ?>
    <table width="600" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="120" height="20" bgcolor="#3b4650"><span class="Stil1"><strong>&nbsp;Bestellnummer</strong></span></td>
        <td height="20" bgcolor="#3b4650"><span class="Stil1"><?php echo $id_view?></span></td>
      </tr>
      <tr>
        <td width="120"><input name="site" type="hidden" class="Stil1" value="startseite.php" border="0"></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td bgcolor="#718598">&nbsp;</td>
        <td bgcolor="#718598">&nbsp;</td>
      </tr>
      <tr>
        <td width="120" bgcolor="#718598"><strong>&nbsp;Abteilung</strong></td>
        <td bgcolor="#718598">  <label>
      <select name="form_abteilung">
        <option>--- Bitte Abteilung wählen ---</option>
        <?php
        
    for ($i=1$i <= $anzahl_abteilungen$i++)
            {
                
    $abteilungen mysql_fetch_array($result_abteilungen);    
        
    ?>
        <option value="KD-30001 Einkauf">Einkauf</option>
        <?php
            
    }
        
    ?>    
      </select>
      </label></td>
      </tr>
      <tr>
        <td width="120" bgcolor="#718598"><strong>&nbsp;Name</strong></td>
        <td bgcolor="#718598"><input name="form_name" type="text" id="anzahl2" size="30" border="0"></td>
      </tr>
      <tr>
        <td width="120" bgcolor="#718598">&nbsp;</td>
        <td bgcolor="#718598">&nbsp;</td>
      </tr>
      <tr>
        <td width="120" bgcolor="#718598"><strong>&nbsp;Artikel</strong></td>
        <td bgcolor="#718598"><label>
          <select name="form_artikel" id="artikel">
              <option>--- Bitte Artikel wählen ---</option>
            <option value="firmenname">Hewlett-Packard</option>
            </select>
        </label>    </td>
      </tr>
      <tr>
        <td width="120" bgcolor="#718598"><strong>&nbsp;Anzahl</strong></td>
        <td bgcolor="#718598"><input name="form_anzahl" type="text" id="anzahl" size="10"></td>
      </tr>
      <tr>
        <td bgcolor="#718598">&nbsp;</td>
        <td bgcolor="#718598">&nbsp;</td>
      </tr>
      <tr>
        <td width="120">&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td width="120"><input name="do" type="hidden" class="Stil1" value="check" border="0"></td>
        <td><input type="submit" name="submitButtonName" value="versenden" border="0"></td>
      </tr>
    </table>
    </form>
    <p>&nbsp;</p>
    </center>
    </body>
    </html>
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

  • #2
    Hi,

    verstehe Dein Problem nicht ganz. Wo setzt Du denn $_SERVER['PHP_SELF'] ein?
    Sprichst Du vielleicht von diesem Problem?

    LG

    Kommentar


    • #3
      ja... PHP_SELF ruft die seite main.php auf. geht also nicht, da keine variablen.
      action="main.php?page?=bestellung.php" bringt zwar den richtigen link in die leiste, aber es gibt eine fehlermeldung, weil er die variable $main damit nicht belegt und diese somit unbelegt ist.
      ich muss im grunde das selbe script (bestellung.php) erneut aufrufen, damit die variable übergeben wird und das ganze in die db eingetragen wird.
      Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

      Kommentar


      • #4
        Hi,

        ja... PHP_SELF ruft die seite main.php auf. geht also nicht, da keine variablen.
        Ja, dann häng die benötigten Parameter halt dran. Hast Du den verlinkten Thread gelesen?

        LG

        Kommentar


        • #5
          1. Kürze deinen Code auf das wesentliche und brich ihn gemäß unserer Regeln um!

          2. main.php?page?=bestellung.php da ist ein Fragezeichen hinter page zu viel.

          3. Wie und wo belegst du die variable $main??

          Kommentar


          • #6
            also... die variable $main befindet sich auf der startseite (main.php). eine tabelle mit 3 feldern, in welchen verschiedene php mit include eingebunden werden.
            definiert wird die Variable auf der main.php wie folgt:

            PHP-Code:
                if($_SERVER['REQUEST_METHOD'] == 'GET'
                    {
                         
            $main $_GET['page'];
                    } 
            Das ganze funktioniert auch so lange, bis ich versuche das Formular über POST abzuschicken. Ich müsste erreichen, dass er nach dem Abschicken die main.php wieder mit den Parametern main.php?page=formular.php aufruft.
            Das schaffe ich auch. Allerdings bekomme ich die Fehlermeldung die Variable $main sei nicht belegt. In der URL-Eingabeleiste des Browsers steht die richtige Adresse, bei einem Klick auf Enter ruft er auch die richtige Seite auf. Allerdings steht im Browser nur, dass die Variable $main nicht belegt wurde.
            Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

            Kommentar


            • #7
              wenn in der url die variable drin ständ, würdest du keinen fehler erhalten. was steht genau in der url drin???

              Kommentar


              • #8
                da steht die url, die er aufrufen soll..

                aber im Browser steht:

                Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.;C:\Programme\xampp\php\pear\') in C:\Programme\xampp\htdocs\service demo\main.php on line 41
                Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

                Kommentar


                • #9
                  Hi,

                  was soll denn überhaupt die Abfrage der REQUEST_METHOD? Habe ich noch nie benutzt. Steht da vielleicht "POST" drin, da Du ein Formular per POST versendet hast? Das ist sowieso höchst unsauber, weil $_GET['page'] nicht gefüllt sein muss, nur weil die REQUEST_METHOD "GET" war. Frage stattdessen doch einfach ab, ob $_GET['page'] gesetzt ist.

                  LG

                  Kommentar


                  • #10
                    Frage stattdessen doch einfach ab, ob $_GET['page'] gesetzt ist.
                    Und prüfe daneben auch noch ob die Datei, welche durch den Parameter definiert wurde, überhaupt angezeigt werden darf (sprich nicht .htaccess oder sonst was in der Richtung ist)

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      is ja wirklich nett, dass hier jemand helfen will, aber wie gesagt: ich hab php vor ca. 2 wochen angefangen. Dass das nicht sauber ist, kann ich mir denken.
                      Und bevor einer fragt: Ich musste in Visio ein ERM erstellen, in Access vererbeiten und nun als Php machen. Und nein. Übernehmen von Access geht nicht, da andere Aufgabenstellung.

                      Also nochmal.. was und wie muss ich wo ergänzen? Was is falsch an method?

                      Wie binde ich eine php-Seite mit Formular auf der Index dann ein? Im Prinzip hab ich mir mit der include("variable") eine frameseite nachgebaut....
                      Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

                      Kommentar

                      Lädt...
                      X