PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Einen bestimten Datensatz löschen? (http://www.selfphp.de/forum/showthread.php?t=1274)

Scope 27.04.2002 12:26:44

Einen bestimten Datensatz löschen?
 
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 13:22:38

du hast einen query, der in einer while schleife ausgewertet wird und den link generiert.

PHP-Code:

/* 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:

PHP-Code:

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 14: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 03: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 12: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 13:54:48

er gibt mir ein fehler in der guestbook.php on line 16 aus

Line 16:

PHP-Code:

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 14:52:50

while zu
 
dir fehlt nach dem zweiten while noch eine geschwungene klammer }

und statt
PHP-Code:



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.

PHP-Code:

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:47:50 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.