Lösch-Vorgang wird nicht richtig ausgeführt.

Wie schon von Alex_T angeführt, wird deine Variable $id nicht belegt. Wie wär's denn mit $_REQUEST['loeschid'] ;-) ?
 
Wie schon von Alex_T angeführt, wird deine Variable $id nicht belegt. Wie wär's denn mit $_REQUEST['loeschid'] ;-) ?

Und wo muss ich das REQUEST hinpacken, in die loeschen.php vor den eigentlichen DELETE-Vorgang?

So:
PHP:
<?php
$db = mysqli_connect('localhost', 'web84', '7r3p7kSH', 'usr_web84_6')
or die('Fehler beim Verbinden mit MySQL-Server.');
mysqli_set_charset($db, "utf8");

$_REQUEST['loeschid']
$sql = "DELETE FROM `usr_web84_6`.`termine` WHERE `termine`.`id` = '$id'" ;

  $ergebnis = mysqli_query($db, $sql)
    or die('Fehler bei Datenbankabfrage.' . mysqli_error($db));
	
echo "Hier gibt es nichts zu sehen, sondern hier wird eine Aktion ausgeführt.";
?>

Ach man, mir fehlt da so an Kenntnis :D
 
Tut mir Leid, wenn du mit meiner Antwort nichts anzufangen weißt...

Also: Dein verstecktes Input-Element in der Datei termine_anzeigen.php heißt ja "loeschid". Wenn du dann die Formulardaten an die loeschen.php schickst, befindet sich deine ID je nach Art des Formulars (Post/Get) in $_GET["loeschid"] bzw. $_POST["loeschid"], sowie auf jeden Fall in $_REQUEST["loeschid"]. Du musst nur deiner Variable $id diesen Wert zuweisen oder direkt im SQL-String einbauen...
Hoffe, das war jetzt verständlicher.
 
Verstanden habe ich das, ich verstehe auch wie das alels ablaufen soll, mir fehlts nur an der richtigen Zusammensetzugn des Codes.

Du meinst also etwa so:
PHP:
$id = $_REQUEST["loeschid"]

?

:-)
 
Das öffnende Formtag ist doch da
- mhmh da hab ich die Augen wohl nicht richtig aufgemacht :-)

So wie dus jetzt hast müsste es funktionieren - es geht auch folgendermaßen:
termine_anzeige.php (mal folgende Änderungen vornehmen):

PHP:
   echo "<td>"."<form action=\"loeschen.php\" method=\"POST\">";
   echo "<imput type=\"hidden\" name=\"loeschid\" value=\".$row[id]\">";
   echo "<input type='submit' value='löschen' id='button'>";
   echo "</form>"."</td>";

und dann nimmst du das ganze gleich mit in die Query rein (spart Platz ;)):
löschen.php:

PHP:
<?php
$db = mysqli_connect('localhost', 'web84', '7r3p7kSH', 'usr_web84_6')
or die('Fehler beim Verbinden mit MySQL-Server.');
mysqli_set_charset($db, "utf8");

$sql = "DELETE FROM `usr_web84_6`.`termine` WHERE `termine`.`id` = '$_POST['loeschid']'" ;

  $ergebnis = mysqli_query($db, $sql)
    or die('Fehler bei Datenbankabfrage.' . mysqli_error($db));
    
echo "Hier gibt es nichts zu sehen, sondern hier wird eine Aktion ausgeführt.";
?>

Ansonsten kannst du es auch mit REQUEST machen, so wie Ceppi das schon beschrieben hat:

PHP:
<?php
$db = mysqli_connect('localhost', 'web84', '7r3p7kSH', 'usr_web84_6')
or die('Fehler beim Verbinden mit MySQL-Server.');
mysqli_set_charset($db, "utf8");

$sql = "DELETE FROM `usr_web84_6`.`termine` WHERE `termine`.`id` = '$_REQUEST['loeschid']'" ;

  $ergebnis = mysqli_query($db, $sql)
    or die('Fehler bei Datenbankabfrage.' . mysqli_error($db));
    
echo "Hier gibt es nichts zu sehen, sondern hier wird eine Aktion ausgeführt.";
?>
 
:-(

Jetzt kommt folgender Fehler:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\loeschen.php on line 15

line 15:
PHP:
$sql = "DELETE FROM `usr_web84_6`.`termine` WHERE `termine`.`id` = '$_POST['loeschid']'" ;
 
PHP:
$sql = "DELETE FROM `usr_web84_6`.`termine` WHERE `termine`.`id` = '".$_POST['loeschid']."'";

Die Angabe der Datenbank vor dem Tabellennamen ist bei PHP übrigens nicht nötig.
 
Geht immer noch nicht, trotz deines Codes....

jetzt kommt aber keine Fehlermeldung mehr, aber der DB Eintrag wird trotzdem ncith gelöscht..
 
Also wir rekapitulieren nochmal:

termine_anzeigen.php:

PHP:
<?php
$host = "localhost";
$user = "USR";
$pass = "PW";
$dbase = "MEINEDB1";
$db = mysql_connect($host, $user, $pass) or die ("verbindung fehlgeschlagen");
      mysql_select_db($dbase, $db) or die ("verbindung zur datenbank fehlgeschlagen");


      
$result = mysqli_query($db, "SELECT * FROM termine");
if($result){
 echo "<table cellspacing='10'>";
   echo "<tr>";
   echo "<td>Was?</td>";
   echo "<td>Wann?</td>";
   echo "<td>Wo?</td>";
   echo "<td>Beginn</td>";
   echo "<td>&nbsp;</td>";
   echo "</tr>";
   
 while($row = mysql_fetch_array($result)){
  
   
   echo"<tr>";
   echo "<td>".$row['veranstaltungsart']."</td>" ;
   echo "<td>".date("d.m.Y",$row["veranstaltungsdatum"])."</td>";
   echo "<td>".$row['veranstaltungsort']."</td>";
   echo "<td>".date("H:i",$row["veranstaltungsdatum"])."</td>";
   
    if(!empty($row['id'])) {

   echo "<td>"."<form action='loeschen.php' method='POST'>";
   echo "<imput type='hidden' name='loeschid' value=\"$row['id']\">";
   echo "<input type='submit' name='löschen' value='löschen' id='button'>";
   echo "</form>"."</td>";
  }
 }
   echo "</table>";
}

?>

was mir hier schleierhaft ist, warum du das Formular auch nur dann erzeugen lässt, wenn die Variable $row['id'] leer ist. Das würde dann nämlich keinen Sinn machen, denn in diesem Falle ist es ja klar, dass das hidden-Feld keinen Wert erhält (id ist ja leer).

Deshalb nehm ich mal an, dass da ein "!" fehlt (im obigen Code schon berichtigt.)

Weiter im Text.
Die loeschen.php:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Senden</title>
</head>

<body>
<?php
$db = mysqli_connect('localhost', 'USR', 'PW', 'MEINEDB1') or die ('Fehler beim Verbinden mit MySQL-Server.');
mysqli_set_charset($db, "utf8");

//Prüfen ob das Formular überhaupt abgeschickt wurde
if(isset($_POST['löschen'])) {

$sql = "DELETE FROM termine WHERE id = '".$_POST['loeschid']."'"; 

  $ergebnis = mysqli_query($db, $sql)
    
echo "Hier gibt es nichts zu sehen, sondern hier wird eine Aktion ausgeführt.";
}
?>
</body>
</html>

...hier wurde ein ' nach MEINEDB1 vergessen (berichtigt).
Weiterhin habe ich den Code mal ein bisschen umgeschrieben.

So jetzt nochmal drüber schauen ausprobieren und bei ausbleibendem Erfolg nochmal melden.
 
Also wenn du in der loeschen.php nach dem
PHP:
$ergebnis = mysqli_query($db, $sql)
kein " ; " vergessen hast kommt dieser Fehler:
Parse error: syntax error, unexpected T_ECHO in C:\xampp\htdocs\loeschen.php on line 21

Und wenn man eins hin macht kommt dann für die termin_anzeigen.php folgender Fehler:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\termine_anzeigen.php on line 52

wahrscheinlich ist es ohne richtig, oder ?
 
Zurück