Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Homepage Tipps und Tricks PHP Daten an Mysql Datenbank senden und ausgeben.

    Nobody is reading this thread right now.

KHGrigo

Meister
Registriert
1. November 2008
Beiträge
966
Reaktionspunkte
330
Punkte
123
Ort
Münsterland
Hallo
Ich habe angefangen mich mit HTML,PHP,Css und mysql zu beschäftigen.
Ich habe mir nun eine Homepage gebastelt, auf der man daten eingeben kann, die dann an eine Mysql Datenbank gesendet werden sollen. Diese Daten sollen dann (nach Aktualisierung auf der selben Seite ausgegeben werden.
Rein von der Funktion habe ich es hinbekommen.
Das Problem ist, wenn mehrmals auf speichern gedrückt wird, oder die Seite mehrmals aktualisiert wird, werden die Datensätze auch mehrmals in die Datenbank und auf die Homepage geschrieben.
Das Eingabe Formular ist aber leer.
PHP:
             <!-- Bereich der Ausgabe -->

<?php
    $verbindung = mysql_connect("xxxxxx", "xxxxxxx", "xxxxxxxx");
    mysql_select_db("xxxxxxxxxx");
    $abfrage = "SELECT * FROM abgabe";
    $ergebnis = mysql_query($abfrage);
 echo "<table align=center bordercolor=#ffcc00 border=4>";
    while($row = mysql_fetch_object($ergebnis))
{
   $res = mysql_query('select * from abgabe', $link);
   echo "<tr align=left>";
   echo "<td width=100 bgcolor=#cecece><b>$row->Vorname</b>";
   echo "<td width=100 bgcolor=#cecece><b>$row->Zuname</b>";
   echo "<td width=100 bgcolor=#cecece><b>$row->Abzugeben</b>";
   echo "<td width=100 bgcolor=#cecece><b>$row->Tag</b>";
   echo "<td width=100 bgcolor=#cecece><b>$row->Datum</b>";
   echo "<td width=100 bgcolor=#cecece><b>$row->Tourwunsch</b>";
   echo "</tr>";
}
   echo "</table>";
   mysql_close($verbindung);
?>

             <!-- Bereich der eingabe und senden zu mysql -->

           <h3>M&ouml;chtet ihr eine Tour tauschen?<br />Dann bitte hier eintragen und speichern.</h3>
    <form name="myForm" id="myForm" action="flk.php" method="post" >
        <div>
            <label>Vorname</label>
            <input type="text" name="Vorname" />
        </div>
        <div>
            <label>Zuname</label>
            <input type="text" name="Zuname" />
        </div>
        <div>
            <label>Abzugeben</label>
            <input type="text" name="Abzugeben" />
        </div>
        <div>
            <label>Tag</label>
            <input type="text" name="Tag" />
        </div>
        <div>
            <label>Datum</label>
            <input type="text" name="Datum" />
        </div>
        <div>
            <label>Tourwunsch</label>
            <input type="text" name="Tourwunsch" />
        </div>
        <br />
        <br />
        <input type="submit" value="Speichern"/>
    </form>

    <!-- Senden an Mysql -->

<?php
    $verbindung = mysql_connect("xxxxxxxx", "xxxxxxx", "xxxxxx");
    mysql_select_db("xxxxxxxxxx[SPOILER="script"][/SPOILER]");

$Vorname = $_POST["Vorname"];
$Zuname = $_POST["Zuname"];
$Abzugeben = $_POST["Abzugeben"];
$Tag = $_POST["Tag"];
$Datum = $_POST["Datum"];
$Tourwunsch = $_POST["Tourwunsch"];

if($Vorname == "" or $Zuname == "" or $Abzugeben == "" or $Tag == "" or $Datum == "" or $Tourwunsch == "") {
    echo "Du hast nicht alle Felder ausgef&uuml;llt...";
    } else {

    $eintrag = "INSERT INTO abgabe
    (Vorname, Zuname, Abzugeben, Tag, Datum, Tourwunsch)

    VALUES
    ('$Vorname', '$Zuname', '$Abzugeben', '$Tag', '$Datum', '$Tourwunsch')";

    $eintragen = mysql_query($eintrag);

    if($eintragen == true) {
    echo "Dein Wunsch wurde gespeichert...";
    } else {
    echo "Fehler im System. Konnte nicht gespeichert werden...";
    }
    }
    mysql_close($verbindung);
?>

Wie kann ich nun verhindern, das sich die Einträge wiederholen obwohl die Eingabefelder leer sind und nur eine Eingabe gemacht wurde?
Wenn jemand eine einfache Lösung hätte, wäre ich dankbar, da meine Kenntnisse doch noch gegen Null tendieren.

m.f.G.
 
Hi,

Wenn die F5 oder aktualisieren drückst, wird das Formular immerwieder gesendet.
Drück mal im Browser F12 da siehst du alles was zwischen Client und Server passiert.

Das könnte man mit einer Sessionvariable lösen die beim Absenden leer gemacht wird. Speichern geht dann nur bei aktiver Session.
Oder nach dem Absenden die Seite per META-Refresh neu laden dann ist das POST auch weg.

Schau dir bitte unbedingt das Thema SQL Injection an. Wenn man in deinem Formular bei Tourwunsch blubb'; truncate abgabe ; #' eingibt ist deine DB leer.
mysql_real_escape_string oder Prepared Statements sind deine Freunde.

/LG DF
 
mache 2 Scripte draus, eines für das Formular, das andre zum speichern in die DB.
mit dem sende Button rufst du das 2. Script auf.

hier dann eine abfrage
PHP:
if (isset($_POST["Vorname"])){
    echo "hier trägst du in die DB ein";
    }
else echo "nichts eingetragen";


mit so was kommst wieder auf deine Startseite zurück am ende des input-Scripts
PHP:
header("Location: index.php");
 
Zuletzt bearbeitet:
Hi,

Schau dir bitte unbedingt das Thema SQL Injection an. Wenn man in deinem Formular bei Tourwunsch blubb'; truncate abgabe ; #' eingibt ist deine DB leer.
mysql_real_escape_string oder Prepared Statements sind deine Freunde.

/LG DF

Dazu muss man aber den Tabellennamen kennen.

Besser wäre doch DROP TABLE, wobei man sich vorher die Tabellennamen aus information_schema.tables holt und zusätzlich die Foreignkeys abschaltet. ;)
 
Zurück
Oben