Einen Datensatz mit mehreren Artikeln vernüpfen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einen Datensatz mit mehreren Artikeln vernüpfen?

    Guten morgen zusammen..

    ich befürchte ich habe mal wieder was neues.

    Ich lege mir einen Dienstleistung an und möchte gleichzeit durch ein Multiform einzelne Mitarbeiter mit dieser Dienstleistung verknüfpen.

    Mein Code bisher:

    Quellcode

    1. if($_REQUEST[add]=='true' and $_REQUEST[insert]=='true') {
    2. if (count($REQUEST[mitarbeiter])>0)
    3. $kategorienstr = implode($REQUEST[mitarbeiter],"&Mitarbeiter[]=");
    4. $db->query("insert into vb_dienste (mid, beschreibung, artikel) values ('$_REQUEST[mitarbeiter]','$_REQUEST[beschreibung]','$_REQUEST[artikel]')");
    5. $id = mysql_insert_id();
    6. for ($i=0; $i<count($_REQUEST[mitarbeiter]); $i++) {
    7. $db->query("insert into vb_verweis (mitarbeiterid, dienstleistungid) values ('$_REQUEST[mitarbeiter][$i]','$id')");
    8. }
    9. echo "<div class='text'>Die Dienstleistung wurde angelegt.<br><br>\n";
    10. }



    Leider schreibt er immer nur einen Datensatz in die DB, so das auch immer nur ein Mitarbeiter mit dieser Dienstleistung verknüpft ist.

    Und hier eine Änderung -> wenn ich es so ändere (ich weiß nciht sehr glücklich das ganze), dann wirft er mir allen 4 mal in die Datenbank:

    Quellcode

    1. // Datensatz in DB speichern
    2. if($_REQUEST[add]=='true' and $_REQUEST[insert]=='true') {
    3. if (count($mitarbeiter)>0)
    4. $mitarbeiter = implode($mitarbeiter,"&mitarbeiter[]=");
    5. $db->query("insert into vb_dienste (beschreibung, artikel) values ('$_REQUEST[beschreibung]','$_REQUEST[artikel]')");
    6. $id = mysql_insert_id();
    7. for ($i=0; $i<count($_REQUEST['mitarbeiter']); $i++) {
    8. foreach ($_REQUEST['mitarbeiter'] as $mitarbeiter) {
    9. $db->query("insert IGNORE into vb_verweis (mitarbeiterid, dienstleistungid) values ('$mitarbeiter','$id')");
    10. }
    11. }
    12. }
    13. echo "<div class='text'>Die Dienstleistung wurde angelegt.<br><br>\n";
    Alles anzeigen



    Habt Ihr rat für mich?
  • hi, also erstmal für ich alles ordentlich einrücken
    dann fällt einem auf, dass du das array doppelt durchläufst.. wodurch die datenbankeinträge natürlich exponentiell zunehmen

    deine variablen find ich auch nicht ganz schlüssig..
    warum wandelst du $mitarbeiter denn in einen string um, wenn du $_REQUEST['mitarbeiter'], was ja eigentlich das selbe sein sollte wie ein [coderwiki]Informationen/Array[/coderwiki] behandelst

    hier mal ne überarbeitung

    Quellcode

    1. // Datensatz in DB speichern
    2. if($_REQUEST['add']=='true' and $_REQUEST['insert']=='true') {
    3. /* if(count($mitarbeiter) > 0) {
    4. * $mitarbeiter = implode($mitarbeiter,"&mitarbeiter[]=");
    5. }*/
    6. $db->query("insert into vb_dienste (beschreibung, artikel) values ('$_REQUEST[beschreibung]','$_REQUEST[artikel]')");
    7. $id = mysql_insert_id();
    8. foreach ($mitarbeiter as $arbeiter) {
    9. $db->query("insert IGNORE into vb_verweis (mitarbeiterid, dienstleistungid) values ('$arbeiter','$id')");
    10. }
    11. }
    12. echo "<div class='text'>Die Dienstleistung wurde angelegt.<br><br>\n";
    Alles anzeigen