Doty: Falsche ID

Hy!!
In meinen Code wird die falsche ID in die Datenbank eingetragen!
Von der Tabelle kurse sollten die Daten in die Tabelle Termin übertragen werden zusammen mit der patientenID und der kursID!

<form name="zuweisen" method="post" action="zuweisen.php">  
<p>  
<?php  
	include("dbanbindung.php");  
	$result = mysql_query("SELECT * FROM kurse WHERE status = 'aktiv'");  
 	  
	//echo"$p";  
	echo"<table><tr><td><h3>Kurs zum Patienten zuweisen...</h3></td></tr>  
	<tr><td>Kreuzen Sie die gew&uuml;nschten Kurse an</td></tr>";  
  
	while ($row = mysql_fetch_assoc($result)) {  
  
	$p = $_GET["id"];  
	$ku = $row["kursID"];  
	$name = $row["kursname"];  
	$datum = $row["datum"];  
   	$ort = $row["ort"];  
	$beginn = $row["beginn"];  
	$ende = $row["ende"];  
	$leiter = $row["kursleiter"];  
  
	  
	  
	echo"<tr><td><input type=\"checkbox\" name=\"kurs\" value=\"$name\"> $name";echo"hey: $ku";  
	 print "<input type=\"text\" name=\"ist\" value=\"$ku\">";  
	 print "<input type=\"hidden\" name=\"patient_id\" value=\"$p\">";  
	 print "<input type=\"hidden\" name=\"datum\" value=\"$datum\">";  
	 print "<input type=\"hidden\" name=\"ort\" value=\"$ort\">";  
	 print "<input type=\"hidden\" name=\"beginn\" value=\"$beginn\">";  
	 print "<input type=\"hidden\" name=\"ende\" value=\"$ende\">";  
	 print "<input type=\"hidden\" name=\"leiter\" value=\"$leiter\">";  
	 echo"</td></tr>";  
	  
}  
?>  
  
		</p>  
<tr><td> </td></tr>  
<tr><td> </td></tr>  
           <tr><td><input  align="right" type="submit" value="Zuweisen" name="weisen"></td></tr></table>  
</form>  
</body>
~~~hier werden die Daten aus der Kurs tabelle ausgegeben und man kann sich die kurs aussuchen, welche übertragen werden sollte...  
  
~~~php
<?php  
	include("dbanbindung.php");  
  
	$db_ku = $_POST["ist"];  
	$db_id = $_POST["patient_id"];  
  
   	$db_name = $_POST["kurs"];  
	$db_datum = $_POST["datum"];  
   	$db_ort = $_POST["ort"];  
	$db_beginn = $_POST["beginn"];  
	$db_ende = $_POST["ende"];  
	$db_leiter = $_POST["leiter"];  
	  
	echo"$db_ku";e  
	echo"Kurs wurde erfolgreich zugewiesen...<br>";  
?>  
<a href="patientenliste.php"> Zur&uuml;ck zur Patientenliste </a>
~~~hier werden die Daten dann übertragen!! Aber plötzlich steht in der Variable wo die KursId stehen sollte nicht mehr die richtige Nummer. Sonder die vom untersten Kurs aus der Auswahlliste!!  
  
Kann mir jemand sagen, warum das so ist? Und wie ich es ändern kann?  
  
Danke!!  
  
MFG Doty
  1. hi,

    In meinen Code wird die falsche ID in die Datenbank eingetragen!

    Kann mir jemand sagen, warum das so ist? Und wie ich es ändern kann?

    Welches wäre denn die richtige ID?

    Hotti

    1. Na die von dem Kurs, den man ausgewählt hat, aber es wird immer die von untersten Kurs genommen!!

  2. Dein Formular ist seltsam. Du hast einige hidden Fields die du nicht brauchst. Warum soll Ort usw. übertragen werden? Die ID reicht doch. Außerdem haben die Felder alle den gleichen Namen, d.h. mehrere Werte mit selbem Namen. Daher steht die unterste KursID im Ergebnis, weil halt irgendeine der vielen Möglichkeiten genommen wird.
    Die Checkbox sollte die ID als Name enthalten, alle weiteren Felder solltest du weglassen. Bilde den Namen als gültigen Bezeichner, z.B. ID_234 oder so. Dann kommt nur die angehakte Checkbox zurück, aus der du die ID auslesen kannst.

  3. Moin!

    In meinen Code wird die falsche ID in die Datenbank eingetragen!

    Dein Code ist ja auch schrecklich!

    Du hast beispielsweise in deiner Datenbank die Spalte "kursID".

    Diese KursID kopierst du in deinem ersten Skript in die Variable $ku.

    Dann schreibst du sie in ein Formularfeld namens "ist".

    Beim abgeschickten Formular wird dieser Wert dann in die Variable $db_ku kopiert.

    Warum erfindest du für ein-und-denselben Wert insgesamt vier verschiedene Namen? Kein Wunder, dass alles durcheinandergeht. Dein Code ist auch deshalb sehr schwierig zu verstehen, weil derselbe inhaltliche Wert überall unterschiedlich benannt ist. Dadurch erkennt man sehr schwierig die Zusammenhänge.

    Abgesehen davon enthält dein Code keinerlei Berücksichtigung von Kontextwechseln, ist also böse angreifbar für Cross-Site-Scripting, SQL-Injection, Cross-Site-Request-Forgery etc. Bitte lies unbedingt diesen Artikel und behebe alle die Probleme in deinem Code. Ansonsten kriegst du über kurz oder lang ein Problem - du weißt es nur noch nicht.

    - Sven Rautenberg