zum Datensatz hinzufügen

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

  • zum Datensatz hinzufügen

    moin, moin,
    ich habe ein script geschrieben, wekches eine csv-datei in eine datenbank einliest, nun möchte ich, dass in der letzten spalte meiner datenbank atomatisch eingetragen wird, um welche csv-datei es sich handelt.

    PHP-Code:
    <?php
    $db_Hostname     
    "localhost";
    $db_UserName     "";
    $db_Password     "";
    $db_Database     "abrechnung";
    $db_Table         "partner";
    $db_Fields         "Prg_Nr, Prg, Datum, SubID, Prov, Sts";    // hier müssen noch die Felder eingetragen werden, in die alles 
                                                                //eingetragen werden soll, in der Reihenfolge, wie sie in der csv 
                                                                //auftauchen
    $db_File         "c:/xampp/htdocs/test/adbutler.csv";        // hier muss der genaue Pfad zum Download rein


    $select_db 0;
    if (isset (
    $select_db)) 
    {
        
    mysql_connect($db_Hostname$db_UserName$db_Password) || die("Can't Connect to Database: ".mysql_error());
        
    mysql_select_db($db_Database);
        
    $sql "LOAD DATA INFILE '$db_File' INTO TABLE $db_Table FIELDS TERMINATED BY ';' IGNORE 1 LINES ($db_Fields)";
        if (
    mysql_query ($sql)) 
        {
            echo  
    "&Uuml;bertragung erfolgreich";
        }
        else 
        {
            echo  
    "&Uuml;bertragung fehlgeschlagen. Grund: "mysql_error ();
        }
    }
    exit();
    ?>
    ich habe es mit INSERT INTO versucht, dabei wird aber immer eine neue Zeile geschrieben, das soll aber nicht, sondern immer mit jedem Datensatz

    Ich hoffe Ihr versteht, was ich meine
    Gruß Stoner

  • #2
    Soweit ich das jetzt verstanden habe, willst du $db_file austauschen, oder?

    Also du hast ja sicherlich für jeden Datensatz eine ID.
    Rein logisch müsste das ganze funktionieren, wenn du noch ein 'WHERE' an den 'INSERT'-Befehl hängst.

    Also z.B. so:

    Code:
    INSERT INTO table (file) VALUES ("pfad") WHERE id=001;
    Wichtig ist dabei nur, dass jeder Datensatz eine eigene ID hat, was er aber normal haben sollte.
    Hoffe das ich dein Problem richtig verstanden hab, sonst schreien
    Greetings
    badsmiley

    Kommentar


    • #3
      ne, das ist glaub ich etwas missverständlich,
      ich habe 4 verschiedene CSV-Dateien, die ich mit vier Scripten in eine Datenbank einlese. Die vier Scripte sind bis auf den Pfad für die CSV-datei identisch.Bis hier funktioniert alles prima. Nun möchte ich in meiner Datenbank erkennen können welcher Datensatz aus welcher CSV-Datei kommt. Dafür habe ich als letzte Spalte PartnerID eingefügt.
      Nun soll in diese Spalte, wenn die Datensätze in die Datenbank eingetragen werden, lediglich hinzugefügt werden, um welche CSV-Datei es sich handelt.
      Wenn ich es so mache, wie Du es vorgeschlagen hast, wird zu Beginn der Datenübertragung eine separate Zeile geschrieben, in der zwar in der letzten Spalte das gewünschte Ergebnis steht, aber ich möchte es eigentlich hinter jedem datensatz haben.

      ich hoffe nun ist mein Problem klarer geworden
      Gruß Stoner

      Kommentar


      • #4
        wenn die separate spalte nicht in der csv ist, musst du die datei zeilenweise einlesen und die letzte spalte mithilfe deines scriptes hinzufügen.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Naja, da du ja schon LOAD machst wirds schwer.

          könntest, vorrausgesetzt, zu jedem DS muss eine partnerID angegeben werden, einfach ein UPDATE tab SET pid = 'pid' WHERE pid = '' machen.

          Kommentar


          • #6
            Also den Namen der CVS-Datei?
            Hmm... cutte doch einfach den Namen aus '$db_File'.

            PHP-Code:
            $filename strrchr($db_File"/"); 

            strrch(string, srchstr)

            Sucht nach dem letzten Vorkommen von 'srchstr' in 'string' und gibt den Rest von 'string' zurück.

            Die Variable $filename legst du dann mit jedem Datensatz ab.

            Wenn ich's jetzt nicht richtig verstanden hab geb ich's auf.
            Greetings
            badsmiley

            Kommentar


            • #7
              Die Variable $filename legst du dann mit jedem Datensatz ab.
              Gut dass hier mit LOAD DATA gearbeitet wird

              Aber ist natürlich auch ne Möglichkeit: Das File einfach "von Hand" einfügen.

              Kommentar


              • #8
                Original geschrieben von TobiaZ
                Gut dass hier mit LOAD DATA gearbeitet wird

                Aber ist natürlich auch ne Möglichkeit: Das File einfach "von Hand" einfügen.
                Ist das kompliziert?
                Man braucht doch nur am Ende die Datensätze zählen (neue Abfrage), ne Schleife machen die an jeden Datensatz den Namen anfügt.
                Selbst wenn alles in eine Tabelle kommt, nachdem die Datensätze eingefügt sind ist die Spalte für die Namen erstmal leer, daran kann man sie dann auch erkennen und zählen.
                Greetings
                badsmiley

                Kommentar


                • #9
                  Ich mag ja vielleicht blöd sein, aber ich hab nicht so ganz verstanden, was Ihr da meint.

                  Ich habe nun folgendes versucht:
                  PHP-Code:
                  ...
                  if (
                  mysql_query ($sql)) 
                      {
                          for (
                  $i 1$i <= eof$i++) 
                          {
                              
                  $res "INSERT INTO $db_Table('PartnerID') values ('adbutler')";
                          }
                      }
                      else 
                      {
                          echo  
                  "&Uuml;bertragung fehlgeschlagen. Grund: "mysql_error ();
                          
                      }
                      
                  exit(); 
                  aber das scheint auch nichzt zu funktionieren
                  Es werden zwar alle Datensätze eingetragen, aber immer noch nicht die PartnerID

                  Könntet Ihr mir bitte helfen?

                  Gruß Stoner

                  Kommentar


                  • #10
                    naja, einen datensatz hinzuzufügen setzt natürlich vorraus, dass du auch weißt, wie mysql funktioniert.

                    du definierst eine query:
                    $res = "INSERT INTO $db_Table('PartnerID') values ('adbutler')";
                    sendest die aber nie ab! was soll das bringen?

                    Kommentar

                    Lädt...
                    X