Array (eindimensional), Einzelwerte in db speichern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array (eindimensional), Einzelwerte in db speichern

    Hallo,

    ich versuche gerade folgendes:

    ich frage aus einer db eine Reihe von IDs ab, die in einem Array gespeichert werden. Diese Werte möchte ich nun einzeln wieder in eine Tabelle speichern und versuche mich dabei an einer Schleife. Irgendwas mache ich aber gewaltig falsch - ich bekomme eine Fehlermeldung

    Warning: Invalid argument supplied for foreach() in xxxxxxxx on line 61

    Mein Code inclusive der Abfrage der Daten lautet wie folgt


    PHP-Code:

    $sql 
    "SELECT * FROM `tags` WHERE `Name` = '$tag'";
    $sql_result mysql_query($sql$db) or die ("----");
    while (
    $daten mysql_fetch_array($sql_result)){
    $tagIDarray=$daten[id];
    }

    foreach (
    $tagIDarray as $tagID) {
    $sql "INSERT INTO tag2book (bookID,tagID) VALUES ('3','$tagID')";
    $result mysql_query($sql);

    Vermutlich ist das totaler Krampf - ich weiß es aber nicht besser und habe weder über Google noch im Forum irgendetwas gefunden, das mir weiterhilft.

    Also bitte..habt Nachsicht ;-)

    tm

  • #2
    Re: Array (eindimensional), Einzelwerte in db speichern

    Wie soll aus der Zeile
    PHP-Code:
    $tagIDarray=$daten[id]; 
    auch ein Array werden? Fehlen da nicht zwei eckige Klammern?!

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      oh..stimmt...


      PHP-Code:
      $tagIDarray[] 
      steht da jetzt. Jetzt wird auch ein Wert in die Tabelle eingetragen. Aber nur einer (der erste) .. und das Array enthält aktuell vier Werte...

      danke

      tm

      Kommentar


      • #4
        Hi,

        .. und das Array enthält aktuell vier Werte...
        Beweis dafür?

        LG

        Kommentar


        • #5
          ich habe sie mir vorher ausgeben lassen ;-)

          PHP-Code:
          echo $daten[id]; 
          Darauf hin steht dort:

          17
          18
          19
          20

          aber nur die 17 wird in die tag2book Tabelle eingetragen..

          tm

          Kommentar


          • #6
            Hi,

            print_r($tagIDarray) wäre besser.
            Bitte mal Regeln lesen und befolgen.

            LG

            Kommentar


            • #7
              wegen des print_r? Ich finde in den Regeln nichts dazu.
              Was immer ich falsch gemacht habe ;-): sorry

              bei print_r kommt folgendes raus:

              Array ( [0] => 17 [1] => 18 [2] => 19 [3] => 20 )
              Zuletzt geändert von Typomaniac; 07.08.2007, 20:51.

              Kommentar


              • #8
                Dann ab zu den Regeln (error_reporting, mysql_error,...)

                Kommentar


                • #9
                  wäre es hier nicht vielleicht sinnvoller, alles in der while-schleife abzuarbeiten? also:
                  PHP-Code:
                  while ($daten mysql_fetch_array($sql_result))
                  {
                      
                  $sql 'INSERT INTO tag2book (bookID,tagID) VALUES ('."'3','.".$daten['id']."')";
                      
                  $result mysql_query($sql);

                  gruß
                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    wäre es hier nicht vielleicht sinnvoller, alles in der while-schleife abzuarbeiten? also:...
                    Du willst sagen, die zweite Schleife ist überflüssig, wie ein Kropf? *SCNR*
                    Na ja, stimmt natürlich. Aber ob's das Problem löst? Wenn das Array gefüllt ist, aber nur ein Datensatz eingetragen wird, müssen die restlichen Queries fehlgeschlagen sein. Kann man aber wohl erst etwas zu sagen, wenn der TS die Hinweise in den Regeln befolgt hat.

                    LG

                    Kommentar


                    • #11
                      du hast natürlich recht Kropff.

                      Erstmal vorweg. Ich konnte das Problem lösen! Es lag daran, dass die bookID als Primary Key angelegt war und dadurch unique sein musste! (was natürlich in meinem beispiel bei dem 3 als Platzhalter eingesetzt war überhaupt nicht gehen konnte. Aber ich wäre ohne euch nicht drauf gekommen. Vielen dank! Seltsamerweise klappt die Lösung innerhalb der Schleife wie von Kropff vorgeschlagen nicht. Es wird zwar alles eingetragen, allerdings nur mit 0en als würde die DB vom Array gar keine Daten bekommen...

                      vielen Dank an alle!

                      tm
                      Zuletzt geändert von Typomaniac; 07.08.2007, 21:16.

                      Kommentar


                      • #12
                        Seltsamerweise klappt die Lösung innerhalb der Schleife wie von Kropff vorgeschlagen nicht. Es wird zwar alles eingetragen, allerdings nur mit 0en als würde die DB vom Array gar keine Daten bekommen...
                        Und wenn Du wissen willst warum, dann beherzige meine vorherigen Antworten.

                        Kommentar


                        • #13
                          ;-)

                          Fehlermeldung nach Error Reporting:

                          Warning: Use of undefined constant id - assumed 'id' in xxxxx on line 60

                          bei dieser

                          PHP-Code:
                          $result mysql_query($sql) or die(mysql_error().'<hr />'.'$sql'.'<hr />'); 
                          ... Geschichte kommt nichts raus bzw wird nix angezeigt. Oder ich hab auch das wieder falsch gemacht. Ich wollte hier nicht endlos nerven daher habe ich nicht noch einmal nachgefragt

                          Kommentar


                          • #14
                            ich rate mal.du hast
                            PHP-Code:
                            $daten[id
                            anstelle von
                            PHP-Code:
                            $daten['id'
                            gesetzt

                            gruß
                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              das dachte ich auch zuerst...aber ist alles so wie von dir beschrieben. 1:1 ...

                              Kommentar

                              Lädt...
                              X