SQL Datenbank UPDATE mehrerer Datensätze mit unbestimmter Anzahl

phpameise

Mitglied
Ausgangssituation: 2 Tabellen - eine wird mit UserDaten gefüllt und die Zweite 'tblReferenzen' mit user_id aus Tabelle 1 und Referenzen.
PHP:
$refs = array(array($data['RefJahr1'], $data['RefVeranstaltung1'], $data['RefDozent1']),
 array($data['RefJahr2'], $data['RefVeranstaltung2'], $data['RefDozent2']),
 array($data['RefJahr3'], $data['RefVeranstaltung3'], $data['RefDozent3']));
$values=array();
foreach($refs as $ref) {
  if (!empty($ref[0]) || !empty($ref[1]) || !empty($ref[2])) {
    $values[]='('.$user_id.', "'.$ref[0].'", "'.$ref[1].'", "'.$ref[2].'")';
  }
}
if (count($values)) {

$ref_sql = 'INSERT INTO `tblReferenzen` 
(`user_id`, `RefJahr`, `RefVeranstaltung`, `RefDozent`) VALUES '.implode($values, ',').';';

mysql_query($ref_sql,$link) or die("Dateneinspielung der Referenzen fehlgeschlagen:" . mysql_error());       
}
Nun muss der User seine Daten auch per Formular ändern können. Kann mir jemand nun einen Tip geben, wie ich die unbestimmte Anzahl von Datensätzen in einem Formular ändern kann?
Ich kenne zwar das UPDATE statement, aber das einfache hilft mir hier ja nicht weiter, da ich erstens nicht weis, wieviele Datensätze ich ändere bzw. ob ich einen Datentensatz im Änderungsmodus ganz lösche.
PHP:
mysql_query("UPDATE tblReferenzen SET
			`RefJahr` = '$data[RefJahr]',
			`RefVeranstaltung` = '$data[RefVeranstaltung]',
			`RefDozent` = '$data[RefDozent]'					
			 WHERE id='$_SESSION[user_id]'
			") or die(mysql_error());
 
habe es jetzt mal so probiert:
Code:
$refs = array(array($data['RefJahr1'], $data['RefVeranstaltung1'], $data['RefDozent1']),
 array($data['RefJahr2'], $data['RefVeranstaltung2'], $data['RefDozent2']),
 array($data['RefJahr3'], $data['RefVeranstaltung3'], $data['RefDozent3']));
$values=array();
foreach($refs as $ref) {
  if (!empty($ref[0]) || !empty($ref[1]) || !empty($ref[2])) {
    $values[]='('.$user_id.', "'.$ref[0].'", "'.$ref[1].'", "'.$ref[2].'")';
  }
}
if (count($values)) {
mysql_query("UPDATE tblReferenzen SET user_id='".$values["user_id"]."', 
RefJahr='".$values["ref[0]"]."', 
RefVeranstaltung='".$values["ref[1]"]."',
RefDozent='".$values["ref[2]"]."'
WHERE user_id='$_SESSION[user_id]'
			") or die(mysql_error());	   
}

Ergebnis: jetzt werden alle Werte der entsprechenden Datensätze aus der tblReferenzen gelöscht, also die Zeilen bleiben erhalten:( Hat jemand für mich vielleicht einen Link, wo ich mich zu dem Thema belesen kann?
 
Zuletzt bearbeitet:
Ich halte es mittlerweile für den falschen Weg, da für mich zu komplex. Werde jetzt immer eine bestimmte Anzahl Datensätze in die Tabelle ausgeben (z.B. 8). So kann der User beim ersten Ausfüllen der Tabelle z.B. 3 Datensätze füllen. Und später beim Update werden auch die leere Datensätze (hier 5) mit angeboten und der User kann nicht nur die alten Datensätze ändern, sondern auch bisher von ihm nicht benutzte Sätze ausfüllen. Alles andere ist für mich zu schwer und unrealistisch. Ich poste die Lösung später.
 
Zurück