PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einen bestimten Datensatz löschen?


Scope
27.04.2002, 13:26:44
Hi, ich weiss nicht ob ich das richtige Forum erwischt habe, aber ich versuche es hier mal...

Es geht darum einen Datensatz von vielen aus einer DB zu löschen? Am liebsten würde ich das mit einem normalen link machen.

ingo
27.04.2002, 14:22:38
du hast einen query, der in einer while schleife ausgewertet wird und den link generiert.


/* db connect muss hier rein */
...
...
/* db connect ende */

$ergebnis=mysql_query("SELECT id FROM tabelle") or die("Fehler");

while($row=mysql_fetch_array($ergebnis))

{

$id=$row["id"];

echo "$id: <a href="loeschen.php?id=$id">loeschen<br>";

}

die datei loeschen.php sieht dann folgendermaßen aus:


if($id)

{

/* db connect muss hier rein */
...
...
/* db connect ende */

mysql_query("DELETE * FROM tabelle WHERE id=$id") or die("Fehler beim Löschen");

echo "Datensatz wurde geloescht!";

}

//wenn die datei ohne ?id= aufgerufen wurde.
else

{

echo "Geben Sie die id des Datensatzes an, der geloescht werden soll!";

}

würd ich aber sehr unter verschluss halten sowas. oder mit passwortschutz arbeiten....

lg, ingo

Progman
27.04.2002, 15:09:55
abgesehen davon das es
mysql_query("DELETE FROM*tabelle*WHERE*id=$id")*or*die("Fehler beim Löschen");
und nicht
mysql_query("DELETE * FROM*tabelle*WHERE*id=$id")*or die("Fehler beim Löschen");
heißen muss ;)

Scope
28.04.2002, 04:47:25
Ich weiss das es funktionieren kann, aber anscheinend peile ich da was nicht :( (sorry, bin erst seit 3 Monaten im Internet!)

Ich füge mal hier beide Sources ein....

guestbook.php:

<?php
$host="...";
$admin="...";
$password="...";

$db=mysql_connect($host,$admin,$password);
mysql_select_db("...");
$befehl="SELECT * FROM guestbook ORDER BY id DESC";
$result=mysql_query($befehl,$db);
$anzahl = mysql_num_rows($result);

$ergebnis=mysql_query("SELECT id FROM guestbook") or die("Fehler");

while($row=mysql_fetch_array($ergebnis))

{

$id=$row["id"];

?>
<DIV ID="BODY">
<TABLE border="0" cellpadding="0" cellspacing="5" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<TR><TD><FONT ID="HOME">Total Entrys: <? echo "$anzahl"; ?></FONT></TD><TD>&nbsp;</TD></TR>
</TABLE>
<?php
while($field = mysql_fetch_array($result))
{
?>

<table border="0" cellpadding="0" cellspacing="5" style="border-collapse: collapse" bordercolor="#000000" width="100%">
<tr><td width="100%"><font id="HOME"><?php echo "$id: <a href="guestbookloeschen.php?id=$id">Eintrag löschen</a>"; ?> | <b><a href="mailto:<?php echo($field["email"]); ?>"><?php echo($field["name"]); ?></a></b> schrieb am <b><?php echo($field["datum"]); ?></b> - <a href="http://<?php echo($field["www"]); ?>" target="_blank"><?php echo($field["www"]); ?></a></font></td></tr>
</table>
<?
}
?>



guestbookloeschen.php

<?php

if($id)

{

$host="...";
$admin="...";
$password="...";

$db=mysql_connect($host,$admin,$password);
mysql_select_db("...");

mysql_query("DELETE * FROM con_guestbook WHERE id=$id") or die("Fehler beim Löschen");

include('index.php?do=guestbook&title=Guestbook');

}

//wenn die datei ohne ?id= aufgerufen wurde.
else

{

echo "Geben Sie die id des Datensatzes an, der geloescht werden soll!";

}
?>

Progman
28.04.2002, 13:16:43
> include('index.php?do=guestbook&title=Guestbook');
so ein include(); geht nicht
http://php4.globe.de/manual/en/function.include.php (Beispiel 11-5)

> mysql_query("DELETE * FROM con_guestbook WHERE id=$id") or die("Fehler beim Löschen");
mach das * zwischen DELETE und FROM weg

und mach ganz oben in deinen Scripten ein error_reporting(E_ALL); rein

Scope
28.04.2002, 14:54:48
er gibt mir ein fehler in der guestbook.php on line 16 aus

Line 16:


while($row=mysql_fetch_array($ergebnis))

{ // 16. Zeile

$id=$row["id"];

?>



Ja, ich weiss, Peanuts für euch! ;)~
Jeder hat mal angefangen, oder?

ingo
28.04.2002, 15:52:50
dir fehlt nach dem zweiten while noch eine geschwungene klammer }

und statt { gehört ein { gesetzt.

was ich auch noch machen würde:

die <table>-tags würd ich außerhalb der while schleife geben, und nur jeweils eine row (<tr>) für jeden datensatz machen.

also z.b.

echo "<table>
<tr>
<td>id</td>
<td>loeschen</td>
</tr>";

while(......($ergebnis))

{

$id=$row["id"];

echo "<tr>
<td>$id</td>
<td><a href="loeschen.php?id=$id"></td>
</tr>";

}

echo "</table>";

ist zwar nicht übermäßig wichtig, aber einfach schöner, einfacher und übersichtlicher.

lg, ingo