| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

30-06-2010, 07:55
|
|
MExitus
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 17
|
|
Einfacher Button zum löschen
Hallo zusammen,
ich lese meine Daten aus der mySQL Datenbank aus und schreibe diese in eine Tabelle. Zusätzlich habe ich zu jeder Zeile einen Button zum löschen des Datensatzes angelegt. Leider funktioniert dieser nicht. Ich seh irgendwie den Fehler nicht. Ich hoffe jemand kann mir helfen.
PHP-Code:
<?php
// Löschen if(isset($_POST['delete'])) { mysqli_query("DELETE FROM daten WHERE id='".$_POST['id']."'") OR die(mysqli_error()); echo "<strong>Datensatz erfolgreich gelöscht</strong>"; }
$sql = "SELECT * FROM daten";
// Anfrage an die DB schicken und die Rueckmeldung in eine Variable ablegen $abfrageergebnis = mysqli_query($db, $sql);
//Anzahl der Einträge ausgeben $anzahl = mysqli_num_rows( $abfrageergebnis ); echo "<div class=\"datensatz\">$anzahl Einträge:</div>\n";
// Tabelle definieren: echo "<table id=\"report\" class=\"tablesorter\" cellspacing='1'>\n";
// Kopfzeilen der Tabelle anlegen: echo "<thead id=\"report\"><tr> <th>id</th> <th><span class=\"ausgabeStarttermin\">Starttermin</th> <th><span class=\"ausgabeBemerkung\">Bemerkungen</th> <th><span class=\"ausgabeLoeschen\">Loeschen</th> <th><span class=\"ausgabeEditieren\">Editieren</th></tr></thead>";
// Ab hier werden die Datensaetze zeilenweise ausgeben while ($datensatz = mysqli_fetch_array( $abfrageergebnis )) { echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo" <tr>"; echo" <td>".htmlspecialchars( $datensatz['Starttermin'] )."</td>"; echo" <td>".htmlspecialchars( $datensatz['Notizen'] )."</td>"; echo '<td><input type="hidden" name="id" value="'.$datensatz['id'].'" /></td>','<td><input type="submit" name="delete" value="Entfernen" /></td>'; echo" <td>"."'Editieren</a></td>"; echo" </tr>"; echo "</form>"; } echo "</table>\n"; // Tabelle schließen mysqli_close($db); ?>
|

30-06-2010, 07:58
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
var_dump($_POST)!
|

30-06-2010, 08:43
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
nach eigenen Erfahrungen ...
PHP-Code:
function form() { $aus='<form action="'.$PHP_SELF.'" method="post">'; $aus.='<input type="hidden" name="sent" value="2">'; $aus.='<input type="hidden" name="datensatz" value="'.$datensatz['id'].'">'; //ID $aus.='<input type="submit" value="Löschen">'; return $aus; }
und aufruf des ganzen mit
PHP-Code:
if ($_POST[sent]==2) { $erg=delete(); // die führt das DELETE from tabelle WHERE id=_POST[datensatz] aus } echo '<html><head>'; echo '</head><body><div align=center>'; echo form(); // das Formular der Funktion form einblenden echo '</div></body></html>'; }
__________________
Wer LESEN kann, ist klar im Vorteil!
|

30-06-2010, 08:51
|
|
MExitus
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 17
|
|
Danke für deine schnelle Antwort.
|

30-06-2010, 09:01
|
|
MExitus
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 17
|
|
Hallo,
irgedwie bringt mich das nicht wirklich weiter, oder ich sehe den Wald vor leuter Bäumen nicht... Ich würde gern nochmal auf var_dump($_POST) eingehen. Wie und wo müsste ich das den einbauen? Das könnte ja eine schnelle Lösung des Problems sein.
LG
|

30-06-2010, 09:07
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
Hi.
Zum Beispiel direkt vor
PHP-Code:
mysqli_query("DELETE FROM daten WHERE id='".$_POST['id']."'") OR die(mysqli_error());
streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

30-06-2010, 09:12
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
bei meinem Code-Beispiel .. natürlich vor
if ($_POST['sent'])==2) { .....
__________________
Wer LESEN kann, ist klar im Vorteil!
|

30-06-2010, 13:46
|
|
MExitus
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 17
|
|
hmm ich habe es nun davor gesetzt. Es funktioniert aber trotzdem nichts. Nach Klick auf den Button tut sich gar nichts.
|

30-06-2010, 13:50
|
|
asipak4you
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 11
|
|
Wie sieht denn dein Code mitlerweile aus?
|

30-06-2010, 13:53
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
@MExitus: Du hast nicht mal irgendeine Ausgabe?
streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

30-06-2010, 14:17
|
|
MExitus
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 17
|
|
So sieht es nun aus.
PHP-Code:
<div id="gesamtausgabe">
<?php // Löschen
if(isset($_POST['delete'])) { var_dump($_POST); mysqli_query("DELETE FROM daten WHERE id='".$_POST['id']."'") OR die(mysqli_error()); echo "<strong>Shop erfolgreich gelöscht</strong>"; }
$sql = "SELECT * FROM daten";
// Anfrage an die DB schicken und die Rueckmeldung in eine Variable ablegen $abfrageergebnis = mysqli_query($db, $sql);
//Anzahl der Einträge ausgeben $anzahl = mysqli_num_rows( $abfrageergebnis ); echo "<div class=\"datensatz\">$anzahl Einträge:</div>\n";
// Tabelle definieren: echo "<table id=\"report\" class=\"tablesorter\" cellspacing='1'>\n";
// Kopfzeilen der Tabelle anlegen: echo "<thead id=\"report\"><tr> <th>id</th> <th><span class=\"ausgabeStarttermin\">Starttermin</th> <th><span class=\"ausgabeBemerkung\">Bemerkungen</th> <th><span class=\"ausgabeLoeschen\">Loeschen</th> <th><span class=\"ausgabeEditieren\">Editieren</th></tr></thead>";
// Ab hier werden die Datensaetze zeilenweise ausgeben
while ($datensatz = mysqli_fetch_array( $abfrageergebnis )) { echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo" <tr>"; echo" <td>".htmlspecialchars( $datensatz['id'] )."</td>"; echo" <td>".htmlspecialchars( $datensatz['Starttermin'] )."</td>"; echo" <td>".htmlspecialchars( $datensatz['Notizen'] )."</td>"; echo '<td><input type="hidden" name="id" value="'.$datensatz['id'].'" /></td>','<td><input type="submit" name="delete" value="Entfernen" /></td>'; echo" <td>"."'Editieren</a></td>"; echo" </tr>"; echo "</form>"; } echo "</table>\n"; // Tabelle schließen mysqli_close($db); ?> </div>
|

30-06-2010, 14:21
|
|
MExitus
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 17
|
|
@Streuner Doch, die Tabelle mit Inhalten wird tedellos angezeigt. Nur der Button zum löschen geht halt net.
|

30-06-2010, 14:26
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 461
|
|
Ähm
PHP-Code:
echo" <td>"."'Editieren</a></td>";
Warum schreibst Du das " immer direkt ans echo? Da fehlt das öffnende <a href=... zudem und was soll das ' ?
streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

30-06-2010, 14:37
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Platziere das var_dump() mal ganz am Anfang des Scripts!
Und schau dir die Ausgabe nach dem Absenden des Formulars an!
|

30-06-2010, 14:45
|
|
MExitus
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 17
|
|
@streuner
Ja, du hast Recht. Das habe ich in der Zwischenzeit bereits geändert. Hat aber mit dem Problem nichts zu tun.
Zudem habe ich das var_dump($_POST); direkt ganz oben im Skript. Es liefert folgende Ausgabe: array(0) { }
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|