PHP + MySQL: Einträge editieren und löschen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP + MySQL: Einträge editieren und löschen

    Hallo Forum,

    befasse mich erst seit kurzem mit MySQL und ich steig noch nicht so ganz durch, wie man Einträge aus der Datenbank editieren oder löschen kann. Ich habe mir nach einem Tutorial eine Buchdatenbank gemacht und mit einer Gesamtbuchliste erweitert. Natürlich wäre eine Adminfunktion ganz schön daz. Wie kann ich jetzt diese Gesamtbuchliste durch einen Link Editieren und Löschen hinter jedem Eintrag erweitern? Ich habe im Netz was über den Befehl "Update" gelesen. Hier ist die PHP-Datei, die ich gebaut habe:

    Quellcode

    1. <?php include ("./header.php"); ?>
    2. <?php include ("./navi.php"); ?>
    3. <?php include ("./db.php"); ?>
    4. <center>
    5. <b>Liste sortiert nach:</b> <a href="gesamt.php">Titel</a> - <a href="gesamt_author.php">Autor</a> - <a href="gesamt_genre.php">Genre</a>
    6. </center>
    7. <?php
    8. $sql = "SELECT * FROM `books`;"; //Anstatt 'Tabelle' natürlich die betreffende Tabelle auswählen
    9. $eintrage = mysql_num_rows(mysql_query($sql)); //Die Einträge der Tabelle herausholen
    10. $maxproseite = 10; //Statt der 5 die maximale Anzahl der Einträe pro Seite angeben
    11. $i = 0;
    12. $seiten = $eintrage / $maxproseite; //Anzahl der Seiten errechnen
    13. if (!isset($_GET['page'])) { //normalabfrage, wenn keine Seite gegeben ist.
    14. $sql = "SELECT * FROM `books` ORDER BY `title` LIMIT 0,".$maxproseite.";";
    15. } else { //Abfrage, wenn eine Seitenzahl gegeben ist.
    16. $abeintrag = $_GET['page'] * $maxproseite - $maxproseite;
    17. $sql = "SELECT * FROM `books` ORDER BY `title` LIMIT ".$abeintrag.",".$maxproseite.";";
    18. }
    19. $result = mysql_query($sql);
    20. echo '<p>';
    21. echo '<hr noshade size=1 width=100% color=#FF0000>';
    22. echo'Anzahl aller Bücher in der Datenbank: <font color=#FF0000><b>' . $eintrage . ' Bücher</b></font>';
    23. echo '<hr noshade size=1 width=100% color=#FF0000>';
    24. while($row = mysql_fetch_assoc($result)){
    25. echo '<table cellspacing=2 cellpadding=2 border=0><tr><td valign=top><img src="img/buch1.jpg"></td><td><font face="verdana" size=-1>';
    26. echo '<strong><b> Titel: </b>';
    27. echo htmlspecialchars(stripslashes($row['title']));
    28. echo '</strong><br /><b>Autor: </b>';
    29. echo stripslashes($row['author']);
    30. echo '<br /><b>ISBN: </b>';
    31. echo stripslashes($row['isbn']);
    32. echo '<br /><b>Genre: </b>';
    33. echo stripslashes($row['genre']);
    34. echo '<br /><b>Inhalt: </b>';
    35. echo '<i>';
    36. echo stripslashes($row['inhalt']);
    37. echo '</i> ';
    38. echo '<br /><b>Buchformat: </b>';
    39. echo stripslashes($row['buch']);
    40. echo '<br /><b>Preis: </b>';
    41. echo stripslashes($row['price']);
    42. echo '<br /><b>Besitzer: </b>';
    43. echo stripslashes($row['Besitzer']);
    44. echo '</td></tr></table>';
    45. echo '<hr noshade size=1 width=100% color=#C0C0C0>';
    46. }
    47. echo "Seite ";
    48. for($i = 1; $i - 1< $seiten; $i++){ //Ausgabe der Linkliste
    49. echo "<a href=\"gesamt.php?section=gb&page=".$i."\">".$i."</a> ";
    50. }
    51. ?>
    52. <br /><br />
    53. <?php include ("./footer.php"); ?>
    Alles anzeigen


    Gruß tron
  • hi, vermutlich hast du auch eine Spalte mit einer eindeutigen ID, oder?
    Diese übergibst du... zum Beispiel in #30.. echo '<a href="edit.php?id='.$row['title'].">edit</a>'
    Und auf der edit.php liest du die id und die daten aus... gibst die daten in einem formular aus und schickst die daten dann ab... ein weiteres script speichert die $_POST Daten dann mit dem UPDATE.

    Hier die deutsche Doku: dev.mysql.com/doc/refman/5.1/de/update.html
  • Oh, eindeutige ID. Da gibt es wohl ein Problem. Die Tabelle sieht so aus:

    Quellcode

    1. create table books (
    2. isbn char(20) not null primary key,
    3. author char(50),
    4. title char(100),
    5. genre char(100),
    6. inhalt text(990),
    7. buch char(100),
    8. Besitzer char(100),
    9. price float(4,2)
    10. );


    Das ganze stammt aus dem Buch "PHP 5 & MySQL 5" von Markt&Technik. Geht es mit dem Wert "isbn" auch oder kann ich eine Spalte "ID" mit einfügen? Dann wäre aber "isbn" nicht mehr der primäre Wert oder?

    Gruß tron
  • Ich habe es jetzt geschafft, dass die Daten übernomen werden, jedoch werden sie nicht editiert, bzw. upgedatet:

    edit.php:

    PHP-Quellcode

    1. <?php
    2. include ("checkuser.php");
    3. ?>
    4. <?php include ("./header.php"); ?>
    5. <?php include ("./navi.php"); ?>
    6. <?php include ("./adminnavi.php"); ?>
    7. <?php include ("./db.php");
    8. $id = $_GET['id'];
    9. $sql = "SELECT * FROM books WHERE isbn ='$id'";
    10. $ausgabe = mysql_query($sql);
    11. $data = mysql_fetch_array($ausgabe);
    12. ?>
    13. <form action="eintrag_editieren.php" method="post">
    14. <table border="0">
    15. <tr>
    16. <td>ISBN</td>
    17. <td><input type="text" name="isbn" value="<?php echo $data['isbn']; ?>" maxlength="30" size="30"></td>
    18. </tr>
    19. <tr>
    20. <td>Autor</td>
    21. <td> <input type="text" name="author" value="<?php echo $data['author']; ?>" maxlength="30" size="30"></td>
    22. </tr>
    23. <tr>
    24. <td>Titel</td>
    25. <td> <input type="text" name="title" value="<?php echo $data['title']; ?>" maxlength="100" size="65"></td>
    26. </tr>
    27. <tr>
    28. <td>Genre</td>
    29. <td>
    30. <input type="text" name="genre" value="<?php echo $data['genre']; ?>" maxlength="30" size="30">
    31. </td>
    32. </tr>
    33. <tr>
    34. <td valign="top">Inhalt</td>
    35. <td><textarea name="inhalt" cols="50" rows="5"><?php echo $data['inhalt']; ?>
    36. </textarea></td>
    37. </tr>
    38. <tr>
    39. <td>Buchformat</td>
    40. <td>
    41. <input type="text" name="buch" value="<?php echo $data['buch']; ?>" maxlength="30" size="30">
    42. </td>
    43. </tr>
    44. <tr>
    45. <td>Preis €</td>
    46. <td><input type="text" name="price" value="<?php echo $data['price']; ?>" maxlength="7" size="7"></td>
    47. </tr>
    48. <tr>
    49. <td>Besitzer</td>
    50. <td><input type="text" name="Besitzer" value="<?php echo $data['Besitzer']; ?>" maxlength="30" size="30"></td>
    51. </tr>
    52. <tr>
    53. <td colspan="2" align=center><input type="submit" value="Eintrag bearbeiten"></td>
    54. </tr>
    55. </table>
    56. </form>
    57. <?php include ("./footer.php"); ?>
    Alles anzeigen


    eintrag_editieren.php:

    PHP-Quellcode

    1. <?php
    2. include ("checkuser.php");
    3. ?>
    4. <?php include ("./header.php"); ?>
    5. <?php include ("./navi.php"); ?>
    6. <?php include ("./adminnavi.php"); ?>
    7. <?php include ("./db.php");
    8. $sql = "SELECT * FROM books";
    9. $id = $_POST["isbn"];
    10. $author = $_POST["author"];
    11. $title = $_POST["title"];
    12. $genre = $_POST["genre"];
    13. $inhalt = $_POST["inhalt"];
    14. $buch = $_POST["buch"];
    15. $Besitzer = $_POST['besitzer'];
    16. $price = $_POST["price"];
    17. $sql="UPDATE books SET author = '".$author."', title = '".$title."', genre = '".$genre."', inhalt = '".$inhalt."', buch ='".$buch."', Besitzer ='".$Besitzer."', price = '".$price."' WHERE isbn = ".$id;
    18. echo '<center><font color=#008040><b>Eintrag erfolgreich bearbeitet</b></font><br /><br /><a href="adminliste.php">zurück</a><br /><br />';
    19. $result = mysql_query($sql) OR
    20. die("Query: <pre>".$sql."</pre>\n".
    21. "Fehler: ".mysql_error());
    22. ?>
    23. <?php include ("./footer.php"); ?>
    Alles anzeigen


    Irgendwo ist da noch ein Fehler in der "eintrag_editieren.php" aber ich finde ihn nicht.

    Gruß tron

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tron ()

  • Oh, sorry, werde ich das nächste mal machen. Ich habe es jetzt hinbekommen. Ich habe ein sehr schönes Tutorial auf tutotials.de mit einem Gästebuch gefunden. Anhand dieses Tutorials habe ich es jetzt hinbekommen mit der Editier- und Löschfunktion. Allerdings mußte ich eine neue Spalte "ID" in der MySQL-Tabelle anlegen. Dann gings auf einmal sofort. Mit der Spalte "isbn" hat das leider nicht funktioniert.

    Soe sieht es jetzt aus und es funktioniert:

    adminliste.php

    Quellcode

    1. <?php
    2. include ("checkuser.php");
    3. ?>
    4. <?php include ("./header.php"); ?>
    5. <?php include ("./navi.php"); ?>
    6. <?php include ("./adminnavi.php"); ?>
    7. <?php include ("./db.php"); ?>
    8. <?php
    9. $sql = "SELECT * FROM `books`;"; //Anstatt 'Tabelle' natürlich die betreffende Tabelle auswählen
    10. $eintrage = mysql_num_rows(mysql_query($sql)); //Die Einträge der Tabelle herausholen
    11. $maxproseite = 10; //Statt der 5 die maximale Anzahl der Einträe pro Seite angeben
    12. $i = 0;
    13. $seiten = $eintrage / $maxproseite; //Anzahl der Seiten errechnen
    14. if (!isset($_GET['page'])) { //normalabfrage, wenn keine Seite gegeben ist.
    15. $sql = "SELECT * FROM `books` ORDER BY `author` LIMIT 0,".$maxproseite.";";
    16. } else { //Abfrage, wenn eine Seitenzahl gegeben ist.
    17. $abeintrag = $_GET['page'] * $maxproseite - $maxproseite;
    18. $sql = "SELECT * FROM `books` ORDER BY `author` LIMIT ".$abeintrag.",".$maxproseite.";";
    19. }
    20. $result = mysql_query($sql);
    21. echo '<p>';
    22. echo '<hr noshade size=1 width=100% color=#FF0000>';
    23. echo'Anzahl aller Bücher in der Datenbank: <font color=#FF0000><b>' . $eintrage . ' Bücher</b></font>';
    24. echo '<hr noshade size=1 width=100% color=#FF0000>';
    25. while($row = mysql_fetch_assoc($result)){
    26. echo '<table width=100% cellspacing=2 cellpadding=2 border=0><tr><td valign=top><img src="img/buch1.jpg"></td><td width=100%><font face="verdana" size=-1>';
    27. echo '</strong><b>ID: </b>';
    28. echo stripslashes($row['ID']);
    29. echo '<br /><strong><b> Titel: </b>';
    30. echo htmlspecialchars(stripslashes($row['title']));
    31. echo '</strong><br /><b>Autor: </b>';
    32. echo stripslashes($row['author']);
    33. echo '<br /><b>ISBN: </b>';
    34. echo stripslashes($row['isbn']);
    35. echo '<br /><b>Genre: </b>';
    36. echo stripslashes($row['genre']);
    37. echo '<br /><b>Inhalt: </b>';
    38. echo '<i>';
    39. echo stripslashes($row['inhalt']);
    40. echo '</i> ';
    41. echo '<br /><b>Buchformat: </b>';
    42. echo stripslashes($row['buch']);
    43. echo '<br /><b>Preis: </b>';
    44. echo stripslashes($row['price']);
    45. echo '<br /><b>Besitzer: </b>';
    46. echo stripslashes($row['Besitzer']);
    47. echo '</td><td valign=top width=200 bgcolor=#FFDDDD>&nbsp;<b>Auswahl:</b>&nbsp;<br /><br /> &nbsp;<a href="bookedit.php?id='.$row['ID'].'">Editieren</a> <br /><br /> &nbsp;<a href="bookdelete.php?id='.$row['ID'].'">Löschen</a>';
    48. echo '</td></tr></table>';
    49. echo '<hr noshade size=1 width=100% color=#C0C0C0>';
    50. }
    51. echo "Seite ";
    52. for($i = 1; $i - 1< $seiten; $i++){ //Ausgabe der Linkliste
    53. echo "<a href=\"adminliste.php?section=gb&page=".$i."\">".$i."</a> ";
    54. }
    55. ?>
    56. <br /><br />
    57. <?php include ("./footer.php"); ?>
    Alles anzeigen


    bookedit.php

    Quellcode

    1. <?php
    2. include ("checkuser.php");
    3. ?>
    4. <?php include ("./header.php"); ?>
    5. <?php include ("./navi.php"); ?>
    6. <?php include ("./adminnavi.php"); ?>
    7. <?php include ("./db.php");
    8. $id = $_GET['id'];
    9. $sql = "SELECT * FROM books WHERE id ='$id'";
    10. $ausgabe = mysql_query($sql);
    11. $data = mysql_fetch_array($ausgabe);
    12. ?>
    13. <form action="eintrag_editieren.php" method="post">
    14. <table border="0">
    15. <tr>
    16. <td>ISBN</td>
    17. <td> <input type="text" name="author" value="<?php echo $data['isbn']; ?>" maxlength="30" size="30"></td>
    18. </tr>
    19. <tr>
    20. <td>Autor</td>
    21. <td> <input type="text" name="author" value="<?php echo $data['author']; ?>" maxlength="30" size="30"></td>
    22. </tr>
    23. <tr>
    24. <td>Titel</td>
    25. <td> <input type="text" name="title" value="<?php echo $data['title']; ?>" maxlength="100" size="65"></td>
    26. </tr>
    27. <tr>
    28. <td>Genre</td>
    29. <td>
    30. <input type="text" name="genre" value="<?php echo $data['genre']; ?>" maxlength="30" size="30">
    31. </td>
    32. </tr>
    33. <tr>
    34. <td valign="top">Inhalt</td>
    35. <td><textarea name="inhalt" cols="50" rows="5"><?php echo $data['inhalt']; ?>
    36. </textarea></td>
    37. </tr>
    38. <tr>
    39. <td>Buchformat</td>
    40. <td>
    41. <input type="text" name="buch" value="<?php echo $data['buch']; ?>" maxlength="30" size="30">
    42. </td>
    43. </tr>
    44. <tr>
    45. <td>Preis €</td>
    46. <td><input type="text" name="price" value="<?php echo $data['price']; ?>" maxlength="7" size="7"></td>
    47. </tr>
    48. <tr>
    49. <td>Besitzer</td>
    50. <td><input type="text" name="Besitzer" value="<?php echo $data['Besitzer']; ?>" maxlength="30" size="30"></td>
    51. </tr>
    52. <tr>
    53. <td colspan="2" align=center>
    54. <input type="submit" value="Eintrag bearbeiten">
    55. <input type="hidden" name="id" value="<?php echo $data['ID'] ?>" />
    56. </td>
    57. </tr>
    58. </table>
    59. </form>
    60. <?php include ("./footer.php"); ?>
    Alles anzeigen


    eintrag_editieren.php

    Quellcode

    1. <?php
    2. include ("checkuser.php");
    3. ?>
    4. <?php include ("./header.php"); ?>
    5. <?php include ("./navi.php"); ?>
    6. <?php include ("./adminnavi.php"); ?>
    7. <?php include ("./db.php");
    8. $sql = "SELECT * FROM books ORDER BY author DESC";
    9. $id = $_POST["id"];
    10. $isbn = $_POST["isbn"];
    11. $author = $_POST["author"];
    12. $title = $_POST["title"];
    13. $genre = $_POST["genre"];
    14. $inhalt = $_POST["inhalt"];
    15. $buch = $_POST["buch"];
    16. $Besitzer = $_POST['Besitzer'];
    17. $price = $_POST["price"];
    18. $sql="UPDATE books SET author = '".$author."', title = '".$title."', genre = '".$genre."', inhalt = '".$inhalt."', buch ='".$buch."', Besitzer ='".$Besitzer."', price = '".$price."' WHERE ID = ".$id;
    19. echo '<center><img src="img/ok.jpg" border=0> <font color=#008040><b>Eintrag erfolgreich bearbeitet</b></font><br /><br /><a href="adminliste.php">zurück</a><br /><br />';
    20. $result = mysql_query($sql) OR
    21. die("Query: <pre>".$sql."</pre>\n".
    22. "Fehler: ".mysql_error());
    23. ?>
    24. <?php include ("./footer.php"); ?>
    Alles anzeigen


    bookdelete.php

    Quellcode

    1. <?php
    2. include ("checkuser.php");
    3. ?>
    4. <?php include ("./header.php"); ?>
    5. <?php include ("./navi.php"); ?>
    6. <?php include ("./adminnavi.php"); ?>
    7. <?php include ("./db.php");
    8. $sql = "SELECT * FROM books ORDER BY author DESC";
    9. $id = $_GET["id"];
    10. echo '<center>Lösche ID '. $_GET['id'].'</center><br />';
    11. $sql = "DELETE FROM `books` WHERE `books`.`ID` =$id";
    12. echo '<center><img src="img/ok.jpg" border=0> <font color=#008040><b>Eintrag erfolgreich gelöscht</b></font><br /><br /><a href="adminliste.php">zurück</a><br /><br />';
    13. $result = mysql_query($sql) OR
    14. die("Query: <pre>".$sql."</pre>\n".
    15. "Fehler: ".mysql_error());
    16. ?>
    17. <?php include ("./footer.php"); ?>
    Alles anzeigen


    Vielleicht hätte man das auch schöner lösen können, jedoch bin ich froh, dass ich das erste Script mit MySQL so gut hinbekommen habe.

    Gruß tron