PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppelte Einträge in Datenbank



kleinerEisbär
22-02-2007, 16:09
Hallo,
ich habe eine kleine Tagebuch-Applikation geschrieben. Es wird immer ein Eintrag mit dem aktuellen Systemdatum in die Datenbank geschrieben und anschließen können die Einträge wieder aus der DB geholt und angezeigt werden.
Code für Eintrag: (tagebucheintrag.php)



<?php
include("datenbank.php");
?>
<html>
<center>
<h1>Mein Tagebuch</h1>
<form action="<? echo $PHP_SELF; ?>" method="POST">
<textarea name="eintrag" cols="30" rows="10"></textarea><P />
<input type="submit" name="eintragen" value"Ins Tagebuch eintragen" />
</form>
<?
if($_SERVER['PHP_SELF'])
{
$timestamp = time();
$datum = date("d.m.y",$timestamp);
$zeit = date("h.i",$timestamp);

$eintrag = "Insert into tagebuch(Eintrag, Datum) values('" .$_POST['eintrag']. "','" .$datum." - ".$zeit. "')";
mysql_query($eintrag);
mysql_close($verbindung);
}
?>
</center>
</body>
</html>

Code für Anzeige der Einträge: (tagebuch.php)


<?php
include("datenbank.php");
?>
<html>
<center>
<h1>Mein Tagebuch</h1>
<?php
$abfrage = "Select Eintrag, Datum from tagebuch";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "Eintrag vom ".$row->Datum.": <p />";
echo $row->Eintrag."<p /><p />";
echo "__________________________________________________ _________________________________________<p />";
}
mysql_close($verbindung);
?>
</center>
</body>
</html>

Code für DB-Verbindung (datenbank.php):


<?php
$verbindung = mysql_connect("localhost","root","") or die ("Keine Verbindung möglich!");
mysql_select_db("Tagebuch") or die ("Keine Verbindung zur Datenbank Tagebuch möglich");
?>

Komischerweise wird immer erst das Datum separat in der DB gespeichert und danach noch einmal - so wie es sein soll - der Eintrag und das Datum zusammen in einer Zeile. Kann mir jemand verraten, wo sich der Fehler versteckt?
Vielen Dank!
Lars

JAF
22-02-2007, 20:40
1) kriegst du auf diese art ned sowieso auch problem mit eventuellen sonderzeichen - ich meine das zeichen
' wenn du es eintragen willst?
2) warum verwendest nicht gleich die datums-datentypen von mysql und laesst das damit mit mysql berechnen
3) willst du mehrere eintraege pro datum zulassen?

mfg jaf

mehlvogel
23-02-2007, 14:52
DIe if Abfrage


if($_SERVER['PHP_SELF'])

macht dort wenig Sinn. Die Variable dürfte eigentlich immer gesetzt sein, so dass du beim Aufruf der Seite alleine schon den leeren Eintrag in die Datenbank verursachst.

Du solltest in der Abfrage lieber abfragen ob
$_POST['eintrag'] gesetzt ist. Ansonsten solltest du dir die Methode mysql_escape_string() anschauen, damit niemand böses mit deinem Skript macht.