• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Meldung, wenn DB Eintrag erfolgreich

LetsDOIT

Neues Mitglied
Hallo Zusammen

Ich habe mal eine generelle Frage.

Zurzeit arbeite ich an einem kleinen Meideninventar Tool, wo ich meine Filme, Musik etc. in eine DB abspeichere (Titel usw) und dann nach Kriterien suchen kann (Genre, Titel, Interpret, Schauspieler).

Wenn ich einen einen DB Eintrag erstelle, erscheint eine Meldung, dass der Eintrag erfolgreich in die DB gespeichert wurde. Nun möchte ich, dass wenn ich z.B. 2-3 Einträge hintereinander mache, dass die Meldund immer wieder neu erscheint. So das der Benutzer immer wieder informiert ist, dass der DB-Eintrag erfolreich war. Im Moment bleibt die Meldung einfach so stehen und erscheint nicht immer wieder neu.

Wie kann man so etwas umsetzen? Welche Technologie kommt zum Einsatz? Mit PHP ist es ja nicht umsetzbar oder?

Folgend noch der entsprechende Code-Auschnitt, wo das Ganze stattfindet:

PHP:
<html>

<head>
   <title>Film hinzufügen</title>
   <meta charset="utf-8">
   <link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
   <div id="hinzufuegenFilm">
       <h3>Füge deinen Film hinzu!</h3>
      
       <form action = "hinzufuegenfilm.php" method = "post" />
           Titel:<input type = "text" name = "Titel" /><br />
           Hauptdarsteller:<input type = "text" name = "Hauptdarsteller" /><br />
           Regisseur:<input type = "text" name = "Regisseur" /><br />
           Erscheinungsjahr:<input type = "text" name = "Erscheinungsjahr" /><br />
           Genre:
               <select name="Genre" size="1">
                   <option>Action</option>
                   <option>Komödie</option>
                   <option>Thriller</option>
                   <option>Horror</option>
                   <option>Liebesfilm</option>
                   <option>Drama</option>
                   <option>Dokumentation</option>
                   <option>Andere</option>
               </select><br />
           <input type = "submit" />
       </form>
<?php
   $titel = $_POST['Titel'];
   $hauptdarsteller = $_POST['Hauptdarsteller'];
   $regisseur = $_POST['Regisseur'];
   $erscheinungsjahr = $_POST['Erscheinungsjahr'];
   $genre = $_POST['Genre'];
   require('connectDB.php');
   $db_res = mysqli_query($db_link, "INSERT INTO `filme`(`Titel`,`Hauptdarsteller`,`Regisseur`,`Erscheinungsjahr`,`Genre`) VALUES ('$titel','$hauptdarsteller','$regisseur','$erscheinungsjahr','$genre')") or die("Fehler: " . mysqli_error($db_link));
  
   if ($db_link)
   {
       echo "Datensatz wurde hinzugefügt";
      
   }
   else
   {
       "Fehler in der Datenübermittlung.";
   }
?>
   </div>
</body>

</html>

Grüsse
LetsDOIT
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Du hast einige gravierende Fehler in deinem Script.
  1. Du hälst das EVA-Prinzip nicht ein.
  2. Beim ersten Aufruf des Scriptes wird ein leerer Eintrag in die Datenbank geschrieben, da du nicht überprüfst, ob überhaupt Daten im Post-Array vorhanden sind.
  3. Du überprüfst anhand von $db_link, ob der Eintrag erfolgreich war. Diese Variable sagt das aber nicht aus, sondern $db_res
  4. Das Script ist anfällig für SQL-Injektions
Zu deiner Frage: doch, das musst du mit PHP umsetzen.
 
Werbung:
Halo Zusammen

Danke vielmal für eure Antworten.

@nu.tella:
Könntest du vielleicht etwas näher auf die von dir genannten Punkte eingehen. Nicht ein Roman :) aber vielleicht ein paar Worte zu deinen Inputs.

EVA-Prinzip:
In Bezug auf meinen Code, woran erkennst du, dass das EVA-Prinzip nicht eingehalten wird?

Daten im Post Array:
Nach welchem Stichwort soll ich suchen? Finde so direkt nichts mit Google.

Ich wäre dir um ein paar Worte dazu sehr dankbar.

Grüsse
LetsDOIT
 
EVA-Prinzip:
In Bezug auf meinen Code, woran erkennst du, dass das EVA-Prinzip nicht eingehalten wird?

Eingabe - Verarbeitung - Ausgabe.

Bei dir trifft eher zu:
Eingabe - Ausgabe - Verarbeitung - Ausgabe.

PHP Programmlogik (== Verarbeitung) hat in einem HTML Dokument nichts zu suchen. Wenn dann höchstens in der ersten Zeile bevor HTML anfängt.
Einzig PHP Code welcher zur Ausgabe von Daten notwendig ist (echo, if/else, for/foreach-Schleifen) sollte mit HTML gemischt werden. Aber auch nur wenn es nicht anders geht. Besser wäre es eine Templating Engine zu verwenden, das ist aber für einen Anfänger zu kompliziert.

Daten im Post Array:
Nach welchem Stichwort soll ich suchen? Finde so direkt nichts mit Google.
Er meint damit nur, dass du unabhängig davon ob das Formular abgesendet wurde, mysqli_query() ausführst.
Du solltest deine Programmlogik in bspw. folgendes wrappen und natürlich auch die übermittelten Daten validieren...
Code:
if ($_SERVER['REQUEST_METHOD'] == 'POST')
 
Ok vielen Dank für die Antwort. Ich werde das mal anschauen.

Bezüglich der doppelten DB-EInträge. Ich habe das nun folgendermasen gelöst:

PHP:
<html>

<head>
   <title>Film hinzufügen</title>
   <meta charset="utf-8">
   <link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
   <div id="hinzufuegenFilm">
       <h3>Füge deinen Film hinzu!</h3>
      
       <form action = "hinzufuegenfilm.php" method = "post" />
           Titel:<input type = "text" name = "Titel" /><br />
           Hauptdarsteller:<input type = "text" name = "Hauptdarsteller" /><br />
           Regisseur:<input type = "text" name = "Regisseur" /><br />
           Erscheinungsjahr:<input type = "text" name = "Erscheinungsjahr" /><br />
           Genre:
               <select name="Genre" size="1">
                   <option>Action</option>
                   <option>Komödie</option>
                   <option>Thriller</option>
                   <option>Horror</option>
                   <option>Liebesfilm</option>
                   <option>Drama</option>
                   <option>Dokumentation</option>
                   <option>Andere</option>
               </select><br />
           <input type = "submit" />
       </form>
<?php
   if ($_POST)
   {
       $titel = $_POST['Titel'];
       $hauptdarsteller = $_POST['Hauptdarsteller'];
       $regisseur = $_POST['Regisseur'];
       $erscheinungsjahr = $_POST['Erscheinungsjahr'];
       $genre = $_POST['Genre'];
       require('connectDB.php');
       $db_res = mysqli_query($db_link,"INSERT INTO `filme`(`Titel`,`Hauptdarsteller`,`Regisseur`,`Erscheinungsjahr`,`Genre`) VALUES ('$titel','$hauptdarsteller','$regisseur','$erscheinungsjahr','$genre')") or die("Fehler: " . mysqli_error($db_link));
  
       if ($db_res)
       {
           echo "Datensatz wurde hinzugefügt";
       }
       else
       {
           echo "Fehler in der Datenübermittlung.";
       }
   }
?>
   </div>
</body>

</html>

So gibt es keine doppelten Einträge mehr wenn ich den Script neu starte. Passt das so als Lösung?

Grüsse
LetsDOIT
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Bin selber noch nicht so fit in PHP, aber ich würde es so machen:
PHP:
<?php
   $hinweis = "";
  
   if (isset($_POST['Titel']))
   {
       require('connectDB.php');
      
       $titel = mysqli_real_escape_string($db_link, $_POST['Titel']);
       $hauptdarsteller = mysqli_real_escape_string($db_link, $_POST['Hauptdarsteller']);
       $regisseur = mysqli_real_escape_string($db_link, $_POST['Regisseur']);
       $erscheinungsjahr = mysqli_real_escape_string($db_link, $_POST['Erscheinungsjahr']);
       $genre = mysqli_real_escape_string($db_link, $_POST['Genre']);
      
       mysqli_query($db_link, "INSERT INTO `filme`
                              (`Titel`,`Hauptdarsteller`,`Regisseur`,`Erscheinungsjahr`,`Genre`)
                              VALUES
                              ('$titel','$hauptdarsteller','$regisseur','$erscheinungsjahr','$genre')")
                     or die("Fehler: " . mysqli_error($db_link));
 
       $hinweis = "Datensatz wurde hinzugefügt";
   }
?>
<html>
 <head>
   <title>Film hinzufügen</title>
   <meta charset="utf-8">
   <link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
   <div id="hinzufuegenFilm">
       <h3>Füge deinen Film hinzu!</h3>
<?php echo $hinweis; ?>     
       <form action = "hinzufuegenfilm.php" method = "post" />
           Titel:<input type = "text" name = "Titel" /><br />
           Hauptdarsteller:<input type = "text" name = "Hauptdarsteller" /><br />
           Regisseur:<input type = "text" name = "Regisseur" /><br />
           Erscheinungsjahr:<input type = "text" name = "Erscheinungsjahr" /><br />
           Genre:
               <select name="Genre" size="1">
                   <option>Action</option>
                   <option>Komödie</option>
                   <option>Thriller</option>
                   <option>Horror</option>
                   <option>Liebesfilm</option>
                   <option>Drama</option>
                   <option>Dokumentation</option>
                   <option>Andere</option>
               </select><br />
           <input type = "submit" />
       </form>
   </div>
</body>
</html>
 
Bin selber noch nicht so fit in PHP, aber ich würde es so machen:
PHP:
<?php
   $hinweis = "";
 
   if (isset($_POST['Titel']))
   {
       require('connectDB.php');
     
       $titel = mysqli_real_escape_string($db_link, $_POST['Titel']);
       $hauptdarsteller = mysqli_real_escape_string($db_link, $_POST['Hauptdarsteller']);
       $regisseur = mysqli_real_escape_string($db_link, $_POST['Regisseur']);
       $erscheinungsjahr = mysqli_real_escape_string($db_link, $_POST['Erscheinungsjahr']);
       $genre = mysqli_real_escape_string($db_link, $_POST['Genre']);
     
       mysqli_query($db_link, "INSERT INTO `filme`
                              (`Titel`,`Hauptdarsteller`,`Regisseur`,`Erscheinungsjahr`,`Genre`)
                              VALUES
                              ('$titel','$hauptdarsteller','$regisseur','$erscheinungsjahr','$genre')")
                     or die("Fehler: " . mysqli_error($db_link));
 
       $hinweis = "Datensatz wurde hinzugefügt";
   }
?>
<html>
 <head>
   <title>Film hinzufügen</title>
   <meta charset="utf-8">
   <link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
   <div id="hinzufuegenFilm">
       <h3>Füge deinen Film hinzu!</h3>
<?php echo $hinweis; ?>    
       <form action = "hinzufuegenfilm.php" method = "post" />
           Titel:<input type = "text" name = "Titel" /><br />
           Hauptdarsteller:<input type = "text" name = "Hauptdarsteller" /><br />
           Regisseur:<input type = "text" name = "Regisseur" /><br />
           Erscheinungsjahr:<input type = "text" name = "Erscheinungsjahr" /><br />
           Genre:
               <select name="Genre" size="1">
                   <option>Action</option>
                   <option>Komödie</option>
                   <option>Thriller</option>
                   <option>Horror</option>
                   <option>Liebesfilm</option>
                   <option>Drama</option>
                   <option>Dokumentation</option>
                   <option>Andere</option>
               </select><br />
           <input type = "submit" />
       </form>
   </div>
</body>
</html>

Jep, geht schon in die richtige Richtung.
 
Was heisst geht schon in die richtige Richtung? :)

was könnte man den noch anderst machen?

Grüsse
LetsDOIT
 
Werbung:
Den POST Request per AJAX senden. Wenn als Status Code 200 zurückkommt, erhält der User eine Confirm Message, ansonsten eine Fehlermeldung.
 
Zurück
Oben