Samantha: Löschen/einfügen von Daten aus einer Datenbank

Hy!!
Mal abgesehen davon, dass es nicht die eleganteste und schon gar nicht alltagstauglichste Lösung ist (Ist nur ein Schulprojekt)! Aber ich hab da ein kleines Problem. Ich habe ein paar Kurse in einer Datenbank und zu diesen Kursten kann ich Teilnehmer zu ordnen. Jezt will ich zu jedem Kurs auch die für diesen Kurs angemeldeten Teilnehmer ausgeben und es soll auch möglich sein diese Teilnehmer wieder zu löschen!

<?php  
$x= "SELECT patientID FROM termin WHERE kursID = $k";  
  
   $ergebnis = mysql_query("$x");  
   while ($reihe = mysql_fetch_assoc($ergebnis))  
{  
	$t = $reihe["patientID"];  
  
$q = "SELECT * FROM patient WHERE patientID = $t AND patientID != 0";  
  
;  
   $erg = mysql_query("$q");  
   $r = mysql_fetch_array($erg);  
  
	$v = $r["vorname"];  
	$n = $r["nachname"];  
  
	echo "<table><tr>  
<td><a href=\"remove_Kursinfo_Patient.php?patient_id=$t&kurs_id=$k\">löschen</a> <td>$v $n</td> </td></tr></table>";  
} ?>

das ist die Datei kursinfo.php!! Hier werden die angemeldeten Teilnehmer ausgegeben. Aber irgendwie klappt dass nicht richtig! Kann mir jemand sagen warum!!

<form name="formular" method="post" action="http://inflamp.technikum-wien.at/~WS09_smog/medical/Kurse/rem.php">  
<?php  
	error_reporting(E_ALL);  
	include("dbanbindung.php");  
	$k = $_GET["pv"];  
	$p = $_GET["pn"];  
  
echo "<input type=\"hidden\" name=\"kid\" value=\"$k\">";  
echo "<input type=\"hidden\" name=\"pid\" value=\"$p\">";  
	?>  
Wollen Sie den Patient wirklich löschen?<br>  
<input type="submit" value="Ja" name="ja"> <input type="submit" value="Nein" name="nein">  
<br>  
</form>

Das ist die remove_Kursinfo_Patient.php! Hier wird nochmal nachgefragt ob wirklich gelöscht werden soll!!

<?php  
	if (isset($_POST["ja"]))  
	{  
		include("dbanbindung.php");  
  
		$db_k = $_POST["kid"];  
		$db_p = $_POST["pid"];  
  
		$query="UPDATE termin SET  
		status = 'inaktiv'  
		WHERE kursID = '$db_k' AND patientID = '$db_p' AND status = 'aktiv'";  
  
		$result = mysql_query($query);  
		$row = mysql_fetch_assoc($result); //line 14  
	}  
	else if (isset($_POST["nein"]))  
	{  
		header ("Location: kursinfo.php?kurs_id=$db_k");  
	}  
?>  
<?php echo"<tr><td>";  
	echo "<a href=\"kursinfo.php?kurs_id=$db_k\"><b> Zurück zur Kursinfo</b></a>";  
	echo"</td></tr>"; ?>
~~~das ist rem.php!  
Hier wird der Datensatz dann "gelöscht" bzw. auf inaktiv gesetzt! Aber das funtioniert auch nicht... immer wenn ich dann zurück drücke gibt es nur Fehler zurück bei den Kursinformationen wird nichts mehr angezeigt! Absolut gar nichts, weder die nicht gelöschten Teilnehmer noch die Kursinformationen! Es wird in der Datenbank zwar auf inaktiv gesetzt, aber der betreffende Teilnehmer wird trotzdem nicht angezeigt!!  
  
Kann jemand Licht in mein Dunkel bringen?  
  
Lg Samantha
  1. Ich habs mal überflogen. Aus den Beschreibungen "funktioniert nicht richtig" ist nicht so wirklich ersichtlich, worauf man achten müsste. Vielleicht schreibst du ja etwas mehr Details, was nicht geht und was stattdessen passiert.
    Auch die Fehlermeldung könnte den Schlüssel zu deinem Problem enthalten.

    Hier wird der Datensatz dann "gelöscht" bzw. auf inaktiv gesetzt! Aber das funtioniert auch nicht...

    Später sagst du dann

    Es wird in der Datenbank zwar auf inaktiv gesetzt

    hats dann nicht doch funktioniert?

    WHERE patientID = $t AND patientID != 0
    Hier ist übrigens der zweite Teil überflüssig.

  2. Hi Samantha!

    <?php

    $x= "SELECT patientID FROM termin WHERE kursID = $k";

    $ergebnis = mysql_query("$x");
       while ($reihe = mysql_fetch_assoc($ergebnis))
    {
    $t = $reihe["patientID"];

    $q = "SELECT * FROM patient WHERE patientID = $t AND patientID != 0";

    ;

      
    Was hat denn das verwaiste Semikolon da verloren? Und diese Abfragen kann man genausogut in einem Select zusammenfassen.  
      
    »»`    $erg = mysql_query("$q");`{:.language-php}  
      
    Die Anführungszeichen sind überflüssig.  
      
    
    > das ist die Datei kursinfo.php!! Hier werden die angemeldeten Teilnehmer ausgegeben. Aber irgendwie klappt dass nicht richtig!  
      
    Soso!  
      
    
    > Kann mir jemand sagen warum!!  
      
    Bestimmt?? Aber warum erzählst Du uns denn nicht, was nicht klappt!!  
      
    
    > ~~~php
    
    		$db_k = $_POST["kid"];  
    
    > 		$db_p = $_POST["pid"];  
    >   
    > 		$query="UPDATE termin SET  
    > 		status = 'inaktiv'  
    > 		WHERE kursID = '$db_k' AND patientID = '$db_p' AND status = 'aktiv'";
    
    

    Herzlichen Glückwunsch, indem Du POST-Daten ungeprüft in ein SQL-query einbaust, gibst Du einem Angreifer freien Zugriff auf Deine Datenbank.

    Hier wird der Datensatz dann "gelöscht" bzw. auf inaktiv gesetzt! Aber das funtioniert auch nicht... immer wenn ich dann zurück drücke gibt es nur Fehler zurück bei den Kursinformationen wird nichts mehr angezeigt! Absolut gar nichts, weder die nicht gelöschten Teilnehmer noch die Kursinformationen! Es wird in der Datenbank zwar auf inaktiv gesetzt, aber der betreffende Teilnehmer wird trotzdem nicht angezeigt!!

    Bitte definiere die Ausdrücke "funktioniert nicht", "zurück drücken", "Fehler" und "wird nichts mehr angezeigt"(wo?)

    mfG
    Benjamin

    --
    For animals, the entire universe has been neatly divided into things to (a) mate with, (b) eat, (c) run away from, and (d) rocks.