WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Daten aus der Datenbank löschen » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von raiserle
Eine Frage zur Schreibweise: ".$_GET['del']." Ist das das Gleiche wie \"$GET_['del']\" ?


nein, es ist nicht das selbe. du willst bestimmt auf das mysql-statement hinaus.

id='wert' die einfachen hochkomma könnten an dieser stelle auch weggelassen werden, da die id ja int ist.
die ".$var." sind nur eine stringverkettung das 1. doppelhochkomma geht aus dem string raus, der punkt ist der verkettungsoperator .... und andersrum

normal werden Variablen in doppelhochkommas mit geparsed, aber ich mag es nicht.
ausserdem darfst du dann nicht das assoziativarray $_GET['del'] in einfache hochkommas setzen. es müsste dann so aussehen $_GET[del]

nochwas zur richtigen anwendung von mysql-statements.
benutze mysql_real_escape_string();
von chrisbears
So einfach kann das Leben sein...

@raiserle: Deine Lösung funktioniert. Nur nochmal zur Kontrolle:
Du lässt den ganzen Formularkram weg und hängst stattdessen "?del" an die URL. Das wiederum definierst Du im gleichen Atemzug als '.$row['id'].'
Diesen Wert holst Du dann weiter unten mit ".$_GET['del']." wieder hervor und definierst damit die id, die gelöscht werden soll.
Mehr nicht???
Mann, Mann, Mann...
Die Datensätze werden jetzt korrekt gelöscht; angezeigt wird das aber erst, wenn ich die Seite reloade. Ich nehme mal an, Dein Hinweis auf header(); zielt genau darauf. Ich guck' mir das mal an und geh' Euch in den nächsten Tagen bestimmt wieder auf den Sack damit...
Eine Frage zur Schreibweise: ".$_GET['del']." Ist das das Gleiche wie \"$GET_['del']\" ?

@progrookie: Der </form> tag stand ausserhalb des <?PHP> Bereichs; den hatte ich nicht mit gepostet. Mann, jag' mir doch nicht so einen Schrecken ein; ich war kurz davor mir den Schädel an der Tischkante einzudreschen; hab' dann aber vorsichtshalber doch noch mal nachgeschaut.

Ich dank' Euch vielmals für die Hilfe!

Viele Grüße,

chris
von raiserle
um es vorwegzunehmen. das script ist nicht grad, das was man ordentlich strukturiert
nennt, aber es sollte seine zweck jetzt erfüllen, wenn es auch zu unerwateten
FEHLERN führen kann.

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76:
<?PHP

$dp = @mysql_connect("localhost", "user", "pass") or die("keine Verbindung zu MYSQL");
@mysql_select_db("datenbank", $dp) or die("keine Verbindung zur Datenbank");
if (isset ($_POST['submit'])) {
   $sql = "INSERT INTO termine (datum, name, ort, beschreibung) VALUES ('$_POST[datum]', '$_POST[name]', '$_POST[ort]', '$_POST[beschreibung]')";

$result = mysql_query($sql);
if ($result) {
   echo "Dateneingabe erfolgreich";
   } else {
   echo "GOTTVERFLUCHTE STINKENDE DRECKSCHEISSE!!!";
   }
   }
?>

 <form action="<?PHP echo $_SERVER['PHP_SELF'] ?>" method="post">

 <h2 style="margin-left: 50px"><u>Markttermine eintragen</u></h2>
 <table>
<tr>
 <td>Datum (YYYY-MM-DD)</td>
 <td>Name des Marktes</td>
 <td>Ort</td>
 <td>Beschreibung</td>
</tr>
<tr>
 <td><input type="text" name="datum" size="20" value="<?PHP echo $POST[datum] ?>"/></td>
 <td><input type="text" name="name" size="20" value="<?PHP echo $POST[name] ?>"/></td>
 <td><input type="text" name="ort" size="20" value="<?PHP echo $POST[ort] ?>"/></td>
 <td><input type="text" name="beschreibung" size="20" value="<?PHP echo $POST[beschreibung] ?>"/></td>
</tr>
<tr>
 <td><input type="submit" name="submit" value="Termin eintragen"/></td>
 <td></td>
 <td></td>
 <td></td>
</tr>
</table>
</form>
<hr noshade/>

<?PHP
$sql2 = "SELECT * FROM termine";
$result = mysql_query($sql2);
$felder = mysql_num_fields($result);
$daten = mysql_num_rows($result);
?>
<h2 style="margin-left: 50px"><u>Termin Übersicht (<?PHP echo "<b>$daten</b>" ?>&nbsp;Termine)</u></h2>
<table>
<tr>
<?PHP
for ($i = 0;$i < $felder;$i++) {
    $feldname = mysql_field_name($result, $i);
    echo "<th><b>$feldname</b></th>";
    }
?>
</tr>
<?PHP

//$id = $_GET['id'];

while ($row = mysql_fetch_assoc($result)) {
      echo "<tr>";
      foreach ($row as $key => $value) {
      echo "<td style='border: 1px solid black; padding: 5px'>$value</td>";
      }
      echo '<td> <a href="?del='.$row['id'].'">Löschen</a></td>';
      echo "</tr>";
      }
if (isset ($_GET['del'])) {
   //mysql_select_db("datenbank", $dp);
   $query_delete = ("DELETE FROM termine WHERE id = '".$_GET['del']."'");
   $delete = mysql_query($query_delete);
}
?>


ich habe das löschen nicht über POST gelöst sondern per GET, weil es einfacher zu handhaben ist.
ich würder dir auch empfehlen mal mit
header();
zu arbeiten.denn jedesmal wenn du den browser nach einem eintrag refreshst, wird der post nochmal abgesetzt.
wenn du dafür hilfe brauchst. einfach nochmal melden.

gruß raiserle
von progrookie
also was mir noch aufgefallen ist folgendes:
Du erzeugst 2x ein FormTag. Das erste funktionier auch deshalb weil es geschlossen wurde(</form>). Beim 2ten wird es allerdings nicht geschlossen. Dadurch kann auch normalerweise kein Postback ausgelöst werden. Wenn doch, dann weiß er logischerweise nicht welcher Button gedrückt wurde. Wenn Du kurz bevor dur dein FormularTag schließt deine Hiddenfield befüllst und deklarierst kannst Du darauf zugreifen wie zuvor...!

Ich denke mir, dass war es schon
von chrisbears
Hmm, keine Ahnung, ob Du das zu einfach verstanden hast; ich weiss ja nicht, wie einfach mein Problem ist...
***grins***
Das mit dem HIDDEN-FIELD habe ich auch schon durch, leider ohne Erfolg.
Ich habe da, glaube ich, ein grundsätzliches Verständnisproblem:
Das Script holt sich brav die Daten aus der Datenbank, schreibt alles in die Tabelle und setzt den <input type="submit" name="loeschen"> an das Ende der Tabellenzeile.
Alles was ich jetzt mit
1: 
2: 
3: 
4:
if (isset ($_POST['loeschen'])) {
   mysql_select_db("datenbank", $dp);
   $query_delete = ("DELETE FROM termine WHERE id = '$id'");
   $delete = mysql_query($query_delete, $dp);

versuche, ist meiner Meinung nach Blödsinn, da das Script ja gar nicht weiss, welche id gemeint ist.
1: 
2: 
3:
	
$id = $_GET['id']

war da nur ein halbherziger Versuch ohne dass ich da genau wusste, was ich da mache.
Tja, wie hole ich diese Information und wo und wie übergebe ich sie?
Und wie schreibe ich diesen Text, ohne dass jemand merkt, dass ich überhaupt keine Ahnung habe?
Argh...

Grüße und Danke für die Antwort,

chris

Nach oben