'Admincenter' für ein Gästebuch

Avariel

Erfahrenes Mitglied
Hallo zusammen :)

Ich hab mir grade mal ein Gästebuch auf Basis von NocTurN´s Tut ( http://www.tutorials.de/tutorials8664.html ) gebastelt.
Einziger Unterschied: Ich hab mir die Zeitfunktion etwas anders gebastelt und deshalb ne zusätzliche Variable 'count' eingeführt, die einfach aufwärts zählt und zum sortieren der Ausgabe dient.

Soweit so gut, funktioniert alles. Jetzt will ich aber noch sowas wie ein Admincenter dazu. Also hab ich mir die Ausgabe genommen, die ich auch schon im Gästebuch hab, hab zusätzlich noch die Variable $count ausgegeben und ein Formular dazugebaut, wo man die Nummer (also $count) des Datensatzes, den man löschen möchte eingibt, und einfach auf löschen klickt. Das schien mir die einfachste Lösung. Sieht auch richtig so aus wie ich will und produziert keine Fehler, allerdings werden auch keine Datensätze gelöscht wenn ichs ausprobier x.x'

Und so sieht das ganze aus:
PHP:
<form action="<?php echo $PHP_SELF ?>" method="post" name="loeschen">
<input type="text" name="count2" size="5">
<input type="submit" name="loeschen" value="Datensatz löschen">
</form>
<br /><br />
Mein Formular zum löschen.

PHP:
<?php
$verbindung = mysql_pconnect( "localhost", "f7", "abcdef");

if (!$verbindung) 
{
    echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>";
    exit;
}

mysql_select_db("creativeplains_de"); //Datenbank auswählen in die geschrieben werden soll

 
    $sqlkommando = "SELECT * FROM guestbook ORDER BY count DESC";

    $sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error()); 

    while($daten = mysql_fetch_object($sqlanfrage))
    {                                              
        
        echo "ID:";
        echo stripslashes($daten->count);
        echo "$zeit_und_datum <br />";
        echo stripslashes($daten->name). " | ".stripslashes($daten->ort)."\n<br>";
        echo "<a href=\"mailto:".stripslashes($daten->email)."\">".stripslashes($daten->email)."</a> | ";
        echo "<a href=\"".stripslashes($daten->homepage)."\">".stripslashes($daten->homepage)."</a>\n<br />";
        echo nl2br(stripslashes($daten->message));
        echo "<hr>";
    }
Die Ausgabe der Daten - funktioniert, kann man ja sehen.

PHP:
if(loeschen) {
 $sqlkommando = "DELETE FROM `guestbook` WHERE `count` = $count2 LIMIT 1;"; }

    
?> 
</body>
</html>
Der Rest des Ganzen mit dem Kommando das meiner Vorstellung nach die Zeile der Tabelle, zu der die ausgelesene Count-ID gehört, löschen soll.

So, das ist der ganze Haufen.. kann mir jemand erklären warums nicht funktioniert? Und seid etwas gnädig, ich weiß dass ich eigentlich kein PHP kann :(
Bin nur leider gezwungen das nicht nur hinzukriegen, sondern auch noch schnell hinzukriegen x.x
Also fummel ich fröhlich und völlig respektlos drauflos und hoffe dass es klappt. Funktioniert erstaunlich gut.

Gruß
Avariel
 
Zuletzt bearbeitet:
Wenn du uns jetzt noch sagt, was genau nicht geht, kann man dir besser helfen.

1. if(loeschen) Woher kommt das? Ist loeschen eine Konstante? Oder meinst du damit den Submitbutton. Wenn ja, schreibe mal if($_POST['loeschen'])

2. Mach mal aus
PHP:
$sqlkommando = "DELETE FROM `guestbook` WHERE `count` = $count2 LIMIT 1;";
das
PHP:
$sqlkommando = "DELETE FROM `guestbook` WHERE `count` = '".$_POST['count2']."' LIMIT 1;";
 
Zuletzt bearbeitet:
Was nicht geht:
Ich gebe die Count-ID eines Datensatzes den ich löschen will ein, klicken auf 'Datensatz löschen' und der Datensatz ist weiterhin da.

Und deine beiden Änderungen produzieren bei mir dann einen Parse-Error in Line 57. Das ist die Zeile, wo das mit dem sqlkommando steht.
 
Ich habe das Dollarzeichen vergessen. Geht es dann?.

Übrigens. Wenn es einen Fehler gibt, immer die Meldung mitposten.
 
Jetzt gibts keine Fehlermeldung mehr, allerdings löscht er genausowenig Datensätze wie bei meiner Version.
 
Führst du den Query auch aus? Mir fällt gerade auf, dass nach dem $sqlkommando keine mysql_query() kommt.
 
Ups..der fehlte tatsächlich. Ich war mir jetzt nicht ganz sicher wo´s hingehört, also hab ichs mal jeweils zu beiden $sqlkommandos gepackt. Und weil so langsam ja doch ein paar Änderungen da waren, hier nochmal der Code, denn geändert hat das leider auch nix :(

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form action="<?php echo $PHP_SELF ?>" method="post" name="loeschen">
<input type="text" name="count2" size="5">
<input type="submit" name="loeschen" value="Datensatz löschen">
</form>
<br /><br />
<?php
$verbindung = mysql_pconnect( "localhost", "f7", "abcdefg");

if (!$verbindung)
{
    echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>";
    exit;
}

mysql_select_db("creativeplains_de"); //Datenbank auswählen in die geschrieben werden soll


    $sqlkommando = "SELECT * FROM guestbook ORDER BY count DESC";

    $sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error()); 
    mysql_query($sqlkommando) or die("Error: " . mysql_error()); 

    echo "Datensatz erfolgreich gelöscht."."\n<br /><br />"; 


    while($daten = mysql_fetch_object($sqlanfrage)) 
    {                                                

        echo "ID:";
        echo stripslashes($daten->count);
        echo "$zeit_und_datum <br />";
        echo stripslashes($daten->name). " | ".stripslashes($daten->ort)."\n<br>";
        echo "<a href=\"mailto:".stripslashes($daten->email)."\">".stripslashes($daten->email)."</a> | ";
        echo "<a href=\"".stripslashes($daten->homepage)."\">".stripslashes($daten->homepage)."</a>\n<br />";
        echo nl2br(stripslashes($daten->message));
        echo "<hr>";


    }

if($_POST['loeschen']) {
 $sqlkommando = "DELETE FROM `guestbook` WHERE `count` = '".$_POST['$count2']."' LIMIT 1;";  }

$sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error()); 
    mysql_query($sqlkommando) or die("Error: " . mysql_error()); 
?>
</body>
</html>
 
Zuletzt bearbeitet:
Habs grad auch schon gemerkt.. ich hab den ganzen Code nochmal so umgebastelt das er Sinn ergibt, er war durch das ganze rumprobieren ja doch schon etwas verwirrend geworden:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form action="<?php echo $PHP_SELF ?>" method="post" name="loeschen">
<input type="text" name="count2" size="5">
<input type="submit" name="loeschen" value="Datensatz löschen">
</form>
<br /><br />

<?php //Datenbankverbindung
$verbindung = mysql_pconnect( "localhost", "sad", "adbcdr");
if (!$verbindung) 
{
    echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>";
    exit;
}
mysql_select_db("creativeplains_de");
?>

<?php //Ausgabe der Datensätze
 $sqlkommando = "SELECT * FROM guestbook ORDER BY count DESC";
 $sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error()); 
while($daten = mysql_fetch_object($sqlanfrage)) {
        echo "ID:";
        echo stripslashes($daten->count);
        echo "$zeit_und_datum <br />";
        echo stripslashes($daten->name). " | ".stripslashes($daten->ort)."\n<br>";
        echo "<a href=\"mailto:".stripslashes($daten->email)."\">".stripslashes($daten->email)."</a> | ";
        echo "<a href=\"".stripslashes($daten->homepage)."\">".stripslashes($daten->homepage)."</a>\n<br />";
        echo nl2br(stripslashes($daten->message));
        echo "<hr>";
    }
?>

<?php //Löschen eines Datensatzes
if($_POST['loeschen']) {
 $sqlkommando = "DELETE FROM `guestbook` WHERE `count` = '".$_POST['$count2']."' LIMIT 1;";  }
 $sqlanfrage = mysql_query($sqlkommando) or die("Error: " . mysql_error());
?>

Gehen tuts allerdings immernoch nicht :(

\\edit: Habs!
Viertletzte Zeile, statt
PHP:
$sqlkommando = "DELETE FROM `guestbook` WHERE `count` = '".$_POST['$count2']."'

gehört:
PHP:
$sqlkommando = "DELETE FROM `guestbook` WHERE `count` = '".$_POST['count2']."'

Bleibt noch ein letzter, kleiner Schönheitsfehler. Ich bekomme nicht gleich angezeigt, dass der Datensatz auch wirklich gelöscht wurde, erst nach nochmaligem aktualisieren ist er dann weg. Das ganze müsste also nach erfolgtem löschen nochmal automatisch aktualisieren *überleg*
 
Zuletzt bearbeitet:
Zurück