Datensätze erzeugen

visiondpc

Erfahrenes Mitglied
Hallo.
Eine kleine Frage hab ich mal und durch die Ergebnisse der Suche hab ich leider meinen Fehler nicht gefunden.

Ich versuche grade das erste Mal einen Datenbank eintrag über PHP vorzunehmen ohne auf eine submit Datei zu verweisen. In meinem PHP5-Handbuch hbe ich dafür zwar ein Script gefunden das ich angepasst habe aber das funktioniert nicht.
Wenn ich das Dokument aufrufe kommt gleich zu Anfang die Meldung, das ein ( natürlich leerer ) Datensatz erfolgreich eingefügt wurde.

Hier mal das Script vieleicht sieht ja jemand den Fehler.

PHP:
<?php
if (isset($gesendet));
{
        $headline = $_POST['headline'];
	$eintrag = $_POST['eintrag'];	
        $Datum = date("d.m.Y");
	mysql_connect( "localhost","root","assassin" );
	mysql_select_db( "SUM" );

	$dbnewentry = "INSERT themen ( Datum, Titel, Inhalt ) VALUES ( '$Datum', '$headline', '$eintrag' )";
	mysql_query($dbnewentry);

	$newentrynum = mysql_affected_rows();
	if ( $newentrynum > 0 )
	{
		echo $headline.' wurde erfolgreich hinzugefügt.';
	}
	else
	{
		echo "Es ist ein Fehler aufgetreten, ";
		echo "es wurde kein Datensatz hinzugefügt";
	}
}
?>
<div>
<h1>Neuen Eintrag erstellen</h1>
<form method="post" action="admin.php?res=new_entry">
  Überschrift
  <p><input name="headline" type="text" class="newentry_input" />
  </p>
  Beitrag
  <p><textarea name="eintrag" class="newentry_textarea"></textarea>
  </p>
  <p align="center"><input name="gesendet" type="submit" class="admin_submit" value="Senden" /></p>
</form>
<br />
</div>

Das Script wird über include in einem Bereich der Seite angezeigt.

Danke schonmal im Vorraus für die Hilfe.
 
Zuletzt bearbeitet:
Also das mySQL-PW für deinen lokalen Server habe ich schonmal.
Das Wissen über deine Vorgehensweise habe ich auch.
Auch "deinen" Quelltext kann ich lesen und verstehen, kann dort aber keine Fehler entdecken...

Hier mal einige Kommentare zu dem was da geschrieben steht:
PHP:
<?php
if (isset($gesendet)) // Wenn die Variable "gesendet" gesetzt ist (POST? GET?)...
{ // dann...
        $headline = $_POST['headline'];   // ?
    $eintrag = $_POST['eintrag'];    // ? egal...
        $Datum = date("d.m.Y");   // der Variable Datum ein formatiertes aktuelles Datum zuweisen
    mysql_connect( "localhost","root","assassin" );    // mySQL Verbindung herstellen
    mysql_select_db( "SUM" );   // Datenbank auswählen

    $dbnewentry = "INSERT themen ( Datum, Titel, Inhalt ) VALUES ( '$Datum', '$headline', '$eintrag' )";   // SQL-Insert (einfügen)
    mysql_query($dbnewentry);   // SQL-Abfrage ausführen

    $newentrynum = mysql_affected_rows();   // bestimmen der betroffenen Zeilen
    if ( $newentrynum > 0 )   // wenn mehr als 0 betroffene Zeilen, ...
    {
        echo $headline.' wurde erfolgreich hinzugefügt.';   // dann Ausgabe über Erfolg
    }
    else
    {
        echo "Es ist ein Fehler aufgetreten, ";   // ansonsten Ausgabe von Fehlermeldung
        echo "es wurde kein Datensatz hinzugefügt";
    }
}
?>
<div>
<h1>Neuen Eintrag erstellen</h1>
<form method="post" action="admin.php?res=new_entry">
  Überschrift
  <p><input name="headline" type="text" class="newentry_input" />
  </p>
  Beitrag
  <p><textarea name="eintrag" class="newentry_textarea"></textarea>
  </p>
  <p align="center"><input name="gesendet" type="submit" class="admin_submit" value="Senden" /></p>
</form>
<br />
</div>

Also, wenn die Variable "gesendet" gesetzt ist, dann wird so und so IMMER ein mySQL-Insert durchgeführt!
Nur ein Fehler an anderer Stelle kann dies verhindern (Stromausfall?). Also wenn dein mySQL-Passwort nicht stimmt, dann wird auch nichts eingefügt werden, alles klar?

Der Quelltext ist soweit ich sehe fehlerfrei (bis auf das Semikolon hinter der ersten IF-Verzweigung), aber so würde ich ihn nicht verwenden.
 
Soweit ist das schon klar. Nur beim ersten Aufruf der Seite ist die Variable ja nicht gesetzt. Das sollte ja erst nach dem Abschicken des Formulars der Fall sein.

Das mit Dem Semikolon hab ich jetzt rausgenommen. jetzt kommt zwar am Anfang nichtmehr die Meldung aber es wird auch nichts mehr an die DB übergeben.

EDIT: Habs gefunden.

$gesendet kann der ja nicht kennen.
Ganz am Anfang muß stehen
PHP:
$gesendet = $_POST['gesendet'];

Aber danke für die Hilfe.
 
Zuletzt bearbeitet:
Ich danke dem Herrn, dass es doch noch Menschen gibt die lesen und denken können.
Markiere dieses Thema bitte noch als erledigt ;)
 
Zurück