Variablenübergabe in function

mkoeni1

Erfahrenes Mitglied
Hallo Community,

ich habe folgendes Problemchen mit der Variablenübergabe der Eingabe-Felder von einem Gästebuch-Formular an das Script des Gästebuch-Insert ;-)

ich habe eine index.php Datei in der ich verschiedene Funktionen (die dann auf den includierten Seiten aufgerufen werde):

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>

<?php 
// session_start(); 
// $_SESSION["ip"] = $_SERVER["REMOTE_ADDR"]; 
// $ip = $_SESSION["ip"]; 
// $sid = session_name(sess);

// Errors auf der Seite anzeig
error_reporting(E_PARSER | E_ALL);

$_POST['Name'];
$_POST['Email'];
$_POST['Homepage'];
$_POST['Text']; 

//Datenbank-Verbindung aufbauen 
include("sites/dbconnect.php"); 

//includierte sites 
include("sites/navi.php"); 
include("sites/area.php"); 
include("sites/lastupdate.php"); 
include("sites/language.php"); 
include("sites/wirbeide.php"); 
include("sites/contact_form.php"); 

// ----------------------------------------------------------------------------------- 
// Es wird ueberprueft ob POST oder GET Variablen gesetzt sind und wenn ja neu zugeordnet 
if (isset($_POST['id'])) { 
    $id = $_POST['id']; 
} else 
{ if (isset($_GET['id'])) { 
    $id = $_GET['id']; 
    } 
    else { 
        $id = "home" ; 
    } 
} 


....
// ##########################################################################################################

if($id == gbook){ 
    navi_guestbook();
    guestbook();
    navi_language();
    navi_randompic();
    navi_footer();
}

// ##########################################################################################################

if($id == form_insert){ 
    navi_guestbook();
    insert();
    navi_language();
    navi_randompic();
    navi_footer();
}

// ##########################################################################################################


if($id == gb_insert){
    navi_guestbook();
    gb_insert($_POST['Name'], $_POST['Email'], $_POST['Homepage'], $_POST['Text']);
    navi_language();
    navi_randompic();
    navi_footer();
}

...

// ##########################################################################################################

if (!(($id == gbook)|($id == form_insert)|($id == gb_insert)))
    {
         navi_home();
         area_home();
         navi_randompic();
         navi_language();
         navi_footer();
    }

// ##########################################################################################################

?>
Soweit die index.php. In der area.php (die oben includiert wird) habe ich folgende Funktionen ausprogrammiert:

PHP:
...

function guestbook(){
?>
<div class="navi-line">
Du bist
hier:&nbsp;<a href="index.php?id=home">Home</a>&nbsp;/&nbsp;<a href="index.php?id=gbook">G&auml;stebuch</a> </div>

<div class="inside">
<div class="area">

<?php
echo 'Bitte schnell einen Gru&szlig; hinterlassen:<br /><br />';
    echo "Ins G&auml;stebuch <a href=\"index.php?id=form_insert\">schreiben</a>\n";

    $sql = "SELECT
                Name,
                Datum,
                Email,
                Homepage,
                Inhalt
            FROM
                gaestebuch
            ORDER BY
                Datum DESC";
    $result = mysql_query($sql) OR die(mysql_error());
    echo "\n<hr />";
    echo "<p>Eintr&auml;ge im G&auml;stebuch: <b>".mysql_num_rows($result)."</b></p>\n";

    
    while($row = mysql_fetch_assoc($result)) {
        if(trim($row['Email']) == "") {
            echo $row['Name'];
        } else {
            echo "<a href=\"mailto:".$row['Email']."\">".$row['Name']."</a>\n";
        }
        if(trim($row['Homepage']) != "") {
            if(strtolower(substr($row['Homepage'], 0, 7)) == "http://") {
                // Wenn der Teilstring gleich "http://" ist, so
                // soll er den Link ohne "http://" erzeugen, denn
                // der Steht ja schon drin
                echo " (<a href=\"".$row['Homepage']."\">Homepage</a>)";
            } else {
                // Wenn nicht, so soll er das "http://" manuell hinzufügen
                echo " (<a href=\"http://".$row['Homepage']."\">Homepage</a>)";
            }
        }

        echo " schrieb um ".$row['Datum']."\n";
        echo "".nl2br($row['Inhalt'])."<br />";
    }
?>
</div>
</div>
<?php
}

// ##########################################################################################################


function insert(){
?>
<div class="navi-line">
Du bist
hier:&nbsp;<a href="index.php?id=home">Home</a>&nbsp;/&nbsp;<a href="index.php?id=gbook">G&auml;stebuch</a> </div>

<div class="inside">
<div class="area">
   <form action="index.php?id=gb_insert" method="post" enctype="text/plain">
 
 <table>
    <tr>
            <td>Name:</td>
            <td><input type="text" name="Name" size="35px" /></td>
        </tr>
    <tr>
            <td>E-Mail:</td>
            <td><input type="text" name="Email" size="35px"/></td>
        </tr>
    <tr>
            <td>Homepage:</td>
            <td><input type="text" name="Homepage" size="35px"/></td></tr>
    <tr>
            <td valign="top">Text:</td>
            <td><textarea name="Text" rows="10" cols="35"></textarea></td>
        </tr>
    <tr>
            <td colspan="2">
            <input type="submit" name="Absenden" size="2" style="color: #0000FF; font-family: Verdana; font-size: 10;" />
            <input type="reset" name="Zurücksetzen" size="2" style="color: #0000FF; font-family: Verdana; font-size: 10;" />
            </td>
        </tr>
</table>
</form>
<hr />
<?php 
  $sql = "SELECT
                Name,
                Datum,
                Email,
                Homepage,
                Inhalt
            FROM
                gaestebuch
            ORDER BY
                Datum DESC";
    $result = mysql_query($sql) OR die(mysql_error());
    echo "\n<hr />";
    echo "<p>Eintr&auml;ge im G&auml;stebuch: <b>".mysql_num_rows($result)."</b></p>\n";

    
    while($row = mysql_fetch_assoc($result)) {
        if(trim($row['Email']) == "") {
            echo $row['Name'];
        } else {
            echo "<a href=\"mailto:".$row['Email']."\">".$row['Name']."</a>\n";
        }
        if(trim($row['Homepage']) != "") {
            if(strtolower(substr($row['Homepage'], 0, 7)) == "http://") {
                // Wenn der Teilstring gleich "http://" ist, so
                // soll er den Link ohne "http://" erzeugen, denn
                // der Steht ja schon drin
                echo " (<a href=\"".$row['Homepage']."\">Homepage</a>)";
            } else {
                // Wenn nicht, so soll er das "http://" manuell hinzufügen
                echo " (<a href=\"http://".$row['Homepage']."\">Homepage</a>)";
            }
        }

        echo " schrieb um ".$row['Datum']."\n";
        echo "".nl2br($row['Inhalt'])."<br />";
    }
?>
</div>
</div>
<?php
}
......

// ##########################################################################################################


function gb_insert($name, $email, $homepage, $text){
?>
<div class="navi-line">
Du bist
hier:&nbsp;&nbsp;&nbsp;<a href="index.php?id=home">Home</a>&nbsp;/&nbsp;<a href="index.php?id=gbook">G&auml;stebuch</a>
</div>

<div class="inside">
<div class="area">

<?php
 if(!isset($name, $email,
              $homepage, $text)) {
        die("Bitte Benutzen sie das Formular f&uuml; aus G&auml;stebuch\n");
    }
    echo $name;

    if(trim($name) == "") {
        die("Bitte geben sie einen Namen ein");
    }
    if(trim($text) == "") {
        die("Bitte geben sie einen Text ein");
    }

    $sql = "INSERT INTO gaestebuch
                (Name, Email, Homepage, Inhalt, Datum)
            VALUES
                ('".addslashes(htmlspecialchars($name))."',
                '".addslashes(htmlspecialchars($email))."',
                '".addslashes(htmlspecialchars($homepage))."',
                '".addslashes(htmlspecialchars($text))."',
                NOW())";

    mysql_query($sql) OR die(mysql_error());

    echo "<p>Vielen Dank f&uuml;r ihren Eintrag.</p>\n";
    echo "<p>Zurück zum <a href=\"index.php?id=gbook\">G&auml;stebuch</a>";
?>
</div> 
</div>
<?php
}
Als Antwort bekomme ich nach dem Ausfüllen des Formulars immer folgende Ausgabe auf der Browserseite angezeigt:

Code:
Bitte Benutzen sie das Formular f&uuml; aus Gästebuch
d.h. für mich er bekommt die Variablen:
PHP:
$_POST['Name'];
$_POST['Email'];
$_POST['Homepage'];
$_POST['Text'];
nicht richtig übergeben, bzw. er bekommt sie gar nicht. Die Variablen verlieren sich irgendwo im Sript !
Wo habe ich meinen Denkfehler. Hat jmd. das gleiche Problem oder kennt jmd. eine Antwort?

Für jede Hilfe bin ich sehr dankbar ;-)

Gruß
Matze
 
Zuletzt bearbeitet:
Probiers doch aus mit
PHP:
$_GET
// oder
var_dump()
dann siehst du ja wo sie verloren gehen.

Edit: Oh.. hab wohl ein Kommentar überlesen o_O .. werds mal austesten.
 
Zuletzt bearbeitet:
Dumme Frage aber warum steht mitten im Script sowas da
PHP:
$_POST['Name'];
$_POST['Email'];
$_POST['Homepage'];
$_POST['Text'];

Seltsam -.-
 
Hi,

Dumme Frage aber warum steht mitten im Script sowas da

das ist eine berechtigte Frage ;-)

mittlerweile sieht das ganze so aus:
PHP:
$name = $_POST['Name'];
$email = $_POST['Email'];
$homepage = $_POST['Homepage'];
$text = $_POST['Text'];

und der Methodenaufruf damit so:
PHP:
gb_insert($name, $email, 
              $homepage, $text);

und es funktioniert bestens.

Gruß
M
 
^^ hatte mir irgendwie soetwas gedacht -.-
Aber naja, dass nächstemal sollte ich mich doch etwas mehr drauen ... nicht nur fragen
 
Zurück