![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Nighthawk2k7, 31. 05. 2007, 10:43
hallo @ all
Ich hab mal ne frage und zwar hab ich eine tabelle erstellt, in der Die Datensätze aus einer Mysql Datenbank eineglesen werden. in jeder zeile steht dann also Ein Datensatz. An der tabelle sind noch drei Spalten mit jeweils eine m Feld für öffnen, antworten, löschen.
Was Php betrifft, wird die Seite aufgerufen und eine PHP Methode wird ausgeführt, die Die Datensätze aus Mysql ausließt und zu jedem Datensatz mit echo eine zeile hinzufügt.
Wie amche ich das, dass wenn ich zum beispiel auf löschen oder so in einer zeile bei einem datensatz in der tabelle er auch gelöscht wird.
Also wie mach ich php generell klar, das der datensatz in der selben zeile gemeint ist?
Hier mal der Code von der Methode zur auswahl der Datenätze und ausgabe der Tabelle:
function getMessages($User,$Domain,$Receiver)
{
if ($Receiver==$User)
{
$sql = ('SELECT * FROM tbl_Messages WHERE UserID="'.$User.'" AND Domain="'.$Domain.'" AND Receiver="'.$User.'";').mysql_error();
$result = mysql_query($sql);
$i = 0;
//Tabelle konstruieren:
echo("<table border='2'>
<tr>
<td><h1>Datum</h1></td><td><h1>An</h1></td><td><h1>Betreff</h1></td><td><h1>Inhalt<h1></td>
</tr>");
//Datensätze in Tabelle eintragen:
while($i <= mysql_num_rows($result))
{
$row = mysql_fetch_array($result);
//echo $row[$i];
echo("<tr><td>".$row[DateTimeStamp]."</td><td>".$row[Receiver]."</td><td>".$row[Subject]."</td>
<td>".$row[Content]."</td>
<td><a href=NachrichtOeffnen.php>Öffnen</td>
<td><a href=NachrichtAntworten.php>Antworten</td>
<td><a href=NachrichtLöschen.php>Löschen</td>
</tr>");
$i++;
}
echo ("</table>");
}
else
{
$sql = ('SELECT * FROM tbl_Messages WHERE UserID="'.$User.'" AND Domain="'.$Domain.'" AND Receiver="'.$Receiver.'";').mysql_error();
$result = mysql_query($sql);
$i = 0;
//Tabelle konstruieren:
echo("<table border='2'>
<tr>
<td><h1>Datum</h1></td><td><h1>An</h1></td><td><h1>Betreff</h1></td><td><h1>Inhalt<h1></td>
</tr>");
//Datensätze in Tabelle eintragen:
while($i <= mysql_num_rows($result))
{
$row = mysql_fetch_array($result);
//echo $row[$i];
echo("<tr><td>".$row[DateTimeStamp]."</td><td>".$row[Receiver]."</td><td>".$row[Subject]."</td>
<td>".$row[Content]."</td>
<td><a href=NachrichtOeffnen.php>Öffnen</td>
<td><a href=NachrichtLöschen.php>Löschen</td>
</tr>");
$i++;
}
echo ("</table>");
}
}
Die folgende Nachricht zum Thema stammt von: Gerhard Knabe, 31. 05. 2007, 15:01
Die Tabelle, aus der Daten gelöscht werden sollen sollte über einen Primärschlüssel verfügen. Über diesen kannst Du dann einen Datensatz eindeutig identifizieren. In der Ausgabe erfolgt dann in jeder Zeile die Verknüpfung zum Löschen des entsprechenden Datensatzes mittels
<a href='delete.php?id=PRIMARYKEY'>
wobei PRIMARYKEY natürlich durch den Wert des Primärschlüssels des zu löschenden Datensatzes zu ersetzen ist.
Im Skript delete.php greifst Du dann auf $_GET["id"] zu und erstellst NACH VALIDIERUNG DER GET-VARIABLEN eine SQL Anweisung zum Löschen des entsprechenden Datensatzes. Die Validierung sorgt dafür, dass nicht beliebige Datensätze (z.B. durch SQL-Injektion) gelöscht werden. Gerade bei modifizierenden Abfragen ist soetwas wichtig, um einem totalen Datenverlust vorzubeugen. Ein Aufruf von delete.php?id=1%20OR%201
würde ohne Validierung aus der über
$query="DELETE FROM tabellenname WHERE id=$id"
erstellten Abfrage die Abfrage
DELETE FROM tabellenname WHERE id=1 OR 1
machen und so die gesamte Tabelle löschen. Es sollte sichergestellt sein, dass jeder nur die Datensätze löschen kann, die zu löschen er auch berechtigt ist.
Das Öffnen/Antworten/Bearbeiten funktioniert nach dem gleichen Prinzip.
MfG
GK
© 1998-2006
Impressum, Software: Classic Forum