GB Fehler

nDeedy

Erfahrenes Mitglied
Hoi. Also ich habe nach dem Nokturn GB-Tut (http://www.tutorials.de/tutorials8664.html) ne GB-page gebastellt, alerdings funzt da was nicht und ich weiss nicht was ich falsch gemacht habe :( Die daten werden einfach nicht ins DB eingetragen... Wenn ich sie manual per myphpadmin eintrage dann werden sie angeblendet, aber nicht durch das formular. Könnt ihr vielleicht das mal angucken udn mir n bisschen helfen ? ;D

PHP:
<body bgcolor="0E0A00" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> 
<center>

  <table width="550" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td> <form action="<?php echo $PHP_SELF ?>" method="post" name="eintragung">
          <table width="100%" border="0" cellspacing="0" cellpadding="5">
            <tr> 
              <td width="130" class="text">Name:</td>
              <td width="479"> <input name="name" type="text" class="inputfield" size="50"></td>
            </tr>
            <tr> 
              <td width="130" class="text">E-mail:</td>
              <td> <input name="email" type="text" class="inputfield" size="50"></td>
            </tr>
            <tr> 
              <td width="130" class="text">Url:</td>
              <td> <input name="url" type="text" class="inputfield" size="50"></td>
            </tr>
            <tr> 
              <td width="130" valign="top" class="text">Text:</td>
              <td> <textarea name="message" cols="75" rows="10" class="inputfield"></textarea></td>
            </tr>
            <tr> 
              <td class="text"></td>
              <td> <input name="neueintrag" type="submit" class="inputfield" value="Eintragen"> 
                <input type="reset" class="inputfield" value="L&ouml;schen"></td>
            </tr>
          </table>
        </form><?php 
include("dbconnect.inc.php");

$verbindung = mysql_connect("$mysql_server", "$mysql_user", "$mysql_password");

if (!$verbindung)
{
    echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>";
    exit;
}

mysql_select_db("$mysql_db");

if($neuintrag) 
{ 

    $id = time(); 
    $name = addslashes($name);
    $email = addslashes($email);
    $url = addslashes($url);
    $message = addslashes($message);
    
    $sqlkommando = "INSERT INTO guestbook (id, name, email, url, message) VALUES ('$id', '$name', '$email', '$url', '$message')";

    mysql_query($sqlkommando) or die("Error: " . mysql_error());
	
    echo "Vielen Dank f&uuml;r Ihren Eintrag."; // Bestätigung ausgeben
}

?></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td align="center" valign="top"> 
        <?php
    $sqlkommando = "SELECT * FROM guestbook ORDER BY id DESC";
    
    $sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error()); 
	
    while($daten = mysql_fetch_object($sqlanfrage)) 
    {                                               
        $datum = getdate($daten->id);

		echo "<table width=\"500\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\" bordercolor=\"282807\" style=\"BORDER-COLLAPSE: collapse\">";
		echo "<tr>";
        echo "<td><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"text\">";
		echo "<tr>";
        echo "<td width=\"30%\"><b>Name:</b> <a href=\"mailto:".stripslashes($daten->email)."\">". stripslashes($daten->name)."</a></td>";
		echo "<td><b>Url:</b> <a href=\"".stripslashes($daten->url)."\">".stripslashes($daten->url)."</a></td>";
		echo "</tr>";
        echo "</table></td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td class=\"text\">".nl2br(stripslashes($daten->message))."</td>";
        echo "</tr>";
		echo "<tr>";
		echo "<td class=\"text\"><b>Date:</b> $ndate[mday].$ndate[mon].$ndate[year] $ndate[hours]:$ndate[minutes]";
        echo "</table>";
		echo "\n<br><br>\n";
    }
?>
      </td>
    </tr>
  </table>


</center>
</body>

thx im vorraus :D
 
Das Tut ist schon älter.
Seit den neueren PHP-Versionen ist eine Variablen-Übergabe per Formular aber nicht mehr so ohne weiters möglich,
wie es damals der Fall war.

Wenn du eine Variable per POST aus einem Formular in eine verarbeitende Datei bringen willst,
musst die diese dort mit
PHP:
 $_POST['variable']
abfragen.

Folgendermaßen sollte es funktionieren:
PHP:
$id = time(); 
$name = addslashes($_POST['name']);
$email = addslashes($_POST['email']);
$url = addslashes($_POST['url']);
$message = addslashes($_POST['message']);
hth
 
so ich habe diese $_POST's eingefügt und es funzt immer noch net :( Vielleicht sind da noch irgendwelche Variablien die eändert sein müssen?

[edit]
ehm ich hab da eine Idee :D

PHP:
if($neuintrag)
{ 

    $id = time(); 
    $name = addslashes($_POST["$name"]);
    $email = addslashes($_POST["$email"]);
    $url = addslashes($_POST["$url"]);
    $message = addslashes($_POST["$message"]);
    
    $sqlkommando = "INSERT INTO guestbook (id, name, email, url, message) VALUES ('$id', '$name', '$email', '$url', '$message')";

    mysql_query($sqlkommando) or die("Error: " . mysql_error());
	
    echo "Vielen Dank f&uuml;r Ihren Eintrag."; // Bestätigung ausgeben
}

diese Variable $neueintrag, die hab ich sonst nirgendwo! diese if-schleife soll soweit ich's verstanden habe kontrollieren ob es die "Eintragen"-Taste gedrückt wurde und wenn ja dann die daten schicken. Und ich glaube einfach irgendeine Variable zu setzen, die nicht mal einen Wert hat bringt nix, oder? Kann mir vieleicht jemand sagen was da hin muss? :D

[/edit]

P.S: big thx @ Dick Starbuck
 
Zuletzt bearbeitet:
Dein Script kommt garnicht erst in die if Abfrage hinein, weil die Bedingung nicht erfüllt wird.

Wie du richtig bemerkt hast gibt es die Variable $neueintrag nicht. In der alten PHP Version, hättest du jetzt einfach die Variable in $eintragung (Der Name deines Formulars!!) ändern können. Jetzt muss die Bedingung einfach $_POST["eintragung"] heissen. (Glaube ich.)
 
hmmm... hab's geändert:

PHP:
if($_POST["$neuintrag"])

aber es funzt immer noch net... Vielleicht muss da noch irgendwas stehen? kA was :D Kenn mich mit php ja auch nicht aus ^^ ich hoffe ihr könnt mir helfen :D

[edit]
kann man das vielleicht ohne dieser if-schleife hinbekommen, wenn keiner weiss, was das prob ist :D ?
[/edit]
 
Zuletzt bearbeitet:
Mach einfach ins Forumular ein Hidden Inout rein, dann müsste es klappen:
PHP:
<input type="hidden" name="step" value="2">

Und dann statt
PHP:
if ($_POST["eintrag"])
folgendes nehmen:
PHP:
if (@$_POST["step"] == "2")
 
hmm, hab's. funzt net :(((( Hab ich vielleicht diesen Hidden Inout falsh gesezt? Wo muss er hin? (btw: was ist das? ^^)
 
Sorry, hab mich verschreiben, heist Hidden Input!

Zwischen die <form>-Tags!

<eeeeeeedit: Es muss cor allem nicht heißen: $_POST["$neueintrag"]; sondern, ohne $: $_POST["neueintrag"];!
 
Zuletzt bearbeitet von einem Moderator:
Ein hidden Feld ist eine Möglichkeit eine Variable an ein Script zu übermitteln ohne das es der User sieht. Du fügst innerhalb deines Formulars einfach <input type="hidden" name="NameDerVariableImPHPScript" value="WertDenDieVariableHat"> ein.
 
Zurück