Probleme mit Solo zu Liedern hinzufügen

Kalma

Erfahrenes Mitglied
Hallo,

ich habe ein Problem. Ich habe 4 Tabellen:

Termine
- termin_id
- termin_anliegen
- und andere unwichtige

Lieder
- lied_id
- lied_name

Setlist
- se_id
- se_termin_id
- se_lied_id

Sololist
- so_id
- so_setlist_id
- so_lied_id
- so_artist_id


Jetzt habe ich hier ein Formular, bei dem die Lieder eines Auftrittes angezeigt werden:
Z.b.


Copacabana: [ Input name = solo_1 ] Solisten hinzufügen
Mambo Jambo: [ Input name=solo_2 (wird aus der ID des Liedes erschlossen)] Solisten hinzufügen

Klickt man jetzt auf "Copacabana" wird ein Popup geöffnet. Dort werden dann die Artisten angezeigt.
Klicke ich jetzt auf "Klaus" erscheint die ID von Klaus in dem Input von Copacabana:

Copacabana: [1,] Solisten hinzufügen
So weit, so gut.


Jetzt kommt das Problem.
Ich muss jetzt diese Daten in die Sololist Tabelle schreiben.
Das heißt, die Artisten in die Spalte artist_id, und die ID des Liedes in die Spalte lied_id

Mein Code sieht bisher so aus:
PHP:
	for($i=1; $i<=1000; $i++)
	{
		if(isset($_POST['solo_'.$i])) {
			$solo = 'INSERT INTO
						sololist(`so_setlist_id`, `so_lied_id`, `so_artist_id`)
					VALUES
						("'.$id.'", "'.$lied_id.'", "'.$
		}
	}

Aber wie krieg ich es jetzt hin, dass er genau die ID des Liedes zusammen mit den Solis hinzufügt?
Ich hoffe ihr versteht mein Problem...
 
Ich denke es mal richtig verstanden zu haben, http://de.php.net/manual/de/function.mysql-insert-id.php sollte dir helfen. Es Liefert die ID des letzten eingefügten Datensatzes zurück. Und die kannst du für die nächsten inserts und die beziehungen verwenden.

Des weiteren empfehle ich dir nicht mit einer schleife zu schauen ob 1000 Variablen existieren sondern eine Array-Übergabe aus dem Formular heraus indem du viele input felder hast die alle solo[] heißen. Das kannst du dann einfach mit einem foreach durchgehen.
 
Zuletzt bearbeitet:
Ja, du kannst gleich auch die Lied_id verwenden. Dann hast du sie genau an der richtigen stelle noch als bezug.

Ansonsten noch per explode(',',$artisten); die Daten Splitten. Das wieder nur einer pro zeile steht. Oder wie auch immer du dir das gedacht hattest.

PHP:
if(is_array($_POST['solo']) foreach($_POST['solo'] as $lied_id => $artisten){
// explode
// eintragen
}
 
Also,

mein Html Input sieht nun so aus:

<input size="10" type="text" name="solo['.$lied['l_id'].']" readonly />
der Name ist nun solo[die Id des Liedes]
Richtig?

Mein PHP Teil
PHP:
	if(is_array($_POST['solo'])) {
		foreach($_POST['solo'] as $soli => $soli) 
		{
			$solos		= explode(",", $soli);

			for($i=0; $i<count($solos); $i++) {
				$setlist_query = 'INSERT INTO
									sololist(`so_setlist_id`, `so_lied_id`, `so_artist_id`)
								 VALUES
									("'.$last_termin_id.'", "'.$_POST['solo'].'", "'.$solos[$i].'")';

				$setlist_result = mysql_query($setlist_query) or die(mysql_error());

				echo $setlist_query.' <br />';
			}
		}
	}

Ich komme nur grad mit der foreach nich klar.
Was heißt $lied_id => $artisten? :-[
 
Zuletzt bearbeitet:
Über genaue Begriffe war ich mir nicht klar ,)



foreach($_POST['solo'] as $lied_id => $soli)

solo[die Id des Liedes] -> Das Innerhalb der Eckigen Klammern landet in der Variablen "lied_id" der wert des Feldes in "$soli" also zB: "1,2,3,4,"

damit solltest du ja alle angaben haben um die insertes machen zu können.
 
Wär mein Query denn so richtig?

//Edit
aaaah, so ises richtig :)
PHP:
	if(is_array($_POST['solo'])) {
		$solos		= explode(",", $soli);
		foreach($_POST['solo'] as $lied_id => $soli) 
		{
			for($i=0; $i<count($solos); $i++) {
				$setlist_query = 'INSERT INTO
									sololist(`so_setlist_id`, `so_lied_id`, `so_artist_id`)
								 VALUES
									("'.$id.'", "'.$lied_id.'", "'.$soli.'")';

				$setlist_result = mysql_query($setlist_query) or die(mysql_error());

				echo $setlist_query.' <br />';
			}
		}
	}

Jetzt noch ne If-Abfrage rein, dann is fertig :)
 
Zuletzt bearbeitet:
Da auf jeden fall noch statt $_POST['solo'] die $lied_id rein, denn sonst steht nur "array" da. Aber ansonsten sieht es soweit ganz ok aus.

Code:
    ("'.$id.'", "'.$_POST['solo'].'", "'.$solos[$i].'")';
 
Jetzt hätte ich noch ne Frage, ich weiß, das gehört nicht hier rein, aber vielleicht weißt du das ja auch :)

Da das Input jetzt solo[] heißt, weiß ich nicht, wie ich mit javascript dort daten einfügen kann.
 
Zurück