html parser output in sql db

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

  • html parser output in sql db

    hallo zusammen,

    schön habt ihr es hier, mein erster eintrag hier
    versuche gerade den output eines html parsers der
    mir folgenden output liefert (in einer standard for schleife) in ne sql db einzutragen
    PHP-Code:

    $treffer
    [1][$i##dieser wert =  mysql feldname

    $treffer[2][$i##dieser wert = inhalt dieses feldes

    ### leider geht folgende sql query nicht:

    $count count($treffer[0]); 
    for (
    $i=0$i $count$i++) { 
        
        
    $query="INSERT INTO sbike_products {$treffer[1][$i]} VALUES {$treffer[2][$i]}"
        
    $result=mysql_query($query); 
      

    bekomme immer folgenden fehler:
    You have an error in your SQL syntax near 'Preis: VALUES 999,- € ' at line 1

    wobei Preis und 999.- € das letzte wertepaar aus meinen arrays sind...

    ich weiss echt nicht wieso das nicht geht...
    hier noch meine tabelle falls das was hilft:

    Vielen Dank schonmal!

    CREATE TABLE sbike_products (
    typ varchar(255) NOT NULL default '',
    schaltung text NOT NULL,
    rahmen text NOT NULL,
    bremsen text NOT NULL,
    gabel text NOT NULL,
    beleuchtung text NOT NULL,
    sattel text NOT NULL,
    tretlager text NOT NULL,
    farben text NOT NULL,
    lenker text NOT NULL,
    felgen text NOT NULL,
    rahmenhöhe text NOT NULL,
    bereifung text NOT NULL,
    sattelstütze text NOT NULL,
    preis text NOT NULL,
    smallpic1 text NOT NULL,
    smallpic2 text NOT NULL,
    smallpic3 text NOT NULL,
    mainpic text NOT NULL,
    PRIMARY KEY (typ)
    ) TYPE=MyISAM;
    sellwatertoawell

  • #2
    mach mal ein "echo $query" in der Schleife.

    EDIT:
    es fehlen auch () & " ->
    PHP-Code:
    $query 'INSERT INTO sbike_products ('.$treffer[1][$i].') VALUES ("'.$treffer[2][$i].'")'
    [Test] MySQL cli Emulator

    Kommentar


    • #3
      jawohl, hab ich gemacht, ergebnis ist unter
      http://www.sbike.net/test5.php
      zu sehen...

      hmm wahrscheinlich haut das so eh nicht hin er soll ja einen datenset immer in eine zeile stecken und die nächste geparste datei dann in die nächste zeile....
      sellwatertoawell

      Kommentar


      • #4
        PHP-Code:
        INSERT INTO sbike_products (Preis:) VALUES (" 999,- € "
        ich sehe kein Feld das 'Preis:' heißt?

        Aber daran wird es nicht liegen da Du das anscheind überall so machst.

        addslashes($treffer[2][$i]) wäre auch sinnvoll.
        [Test] MySQL cli Emulator

        Kommentar


        • #5
          es lassen sich btw auch alle inserts in einer query zusammenfassen ...
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Original geschrieben von NielsRunge

            ich sehe kein Feld das 'Preis:' heißt?

            [/B]
            störst du dich an großkleinschribung , am doppelpunkt oder woran ?
            ein feld preis ist auf jeden fall da...

            hab jetzt das hier gemacht stimmt das mit dem addslashes so ?
            PHP-Code:
            $count count($treffer[0]); 
            for (
            $i=0$i $count$i++) { 
                
                
            $query 'INSERT INTO sbike_products ('.$treffer[1][$i].') VALUES ("'.addslashes($treffer[2][$i]).'")';
                echo 
            $query;
                    
            $result=mysql_query($query); 
              

            EDIT:
            oh... doppelpunkt ist auf jeden fall doof:

            doppelpunkte kommen auch nur im treffer[1][$i] wie kriege ich die weg ?
            hier ist übrigens das array print_r

            http://www.sbike.net/test5.php
            Zuletzt geändert von ran2; 25.09.2004, 10:59.
            sellwatertoawell

            Kommentar


            • #7
              heißt Dein Feld wirklich z.B. "sattelstütze" und nicht "sattelstuetze" ?
              Du arbeitest mit Umlauten in Namen?
              Ehrlich gesagt weiß ich gar nicht genau was bei MySQL für Zeichen im Namen erlaubt sind, da ich eigentlich nur A-Z0-9_ benutze.
              Ansonsten aufjedenfall Backticks verwenden `,
              also `sattelstütze`
              (Ich würde trotzdem die Felder umbennen, auch wenns mit ` funktionieren sollte)

              Zum Preis, ja ich meinte den Doppelpunkt.
              [Test] MySQL cli Emulator

              Kommentar


              • #8
                ja mit dem doppelpunkt hast du auf jeden fall recht, den haben übrigens alle felder fällt nur beim fettdruck auf

                also erstmal die preisfrage wie kriege ich den doppelpunkt aus dem treffer[1][$i] array ???

                und gleich die kompliziertere frage wie regel ich dass mit dem umlaute.

                ich parse ein html doocument dass jemand anderes erstellt hat und will es in ne datenbank eintragen, leider verwendet dieser jemand in seiner überscfhrift umlaute... ich hab mich davor schon gefürchtet allerdings weil ich ja nur mit nem suchmuster sein .html auslese bekomme ich eben genau diese überschriften in mein array.. ziemlich doof müsste also irgendwie ü durch ue ersetzen lassen im array wenn ich die sql felder umbennen soll...
                ...
                HILFE!

                EDIT:
                geht da evtl irgendwas mit ereg_replace ??
                Zuletzt geändert von ran2; 25.09.2004, 14:00.
                sellwatertoawell

                Kommentar


                • #9
                  geht da evtl irgendwas mit ereg_replace ??
                  eher mit preg_replace()
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    oh gott schon wieder ein regulärer ausdruck
                    EDIT:
                    kaum zu glauben ich habs geschafft !:
                    und zwar so ?
                    PHP-Code:
                    <?php

                    $string 
                    "sattelstütze:";


                    $string preg_replace("/:+/"" "$string); 
                    echo 
                    $string;

                    ?>
                    Zuletzt geändert von ran2; 25.09.2004, 14:23.
                    sellwatertoawell

                    Kommentar


                    • #11
                      update

                      ich habe in paar sachen geändert hab das gefühl das ich ein bisserl weitergekommen bin habe jetzt folgenden code:

                      PHP-Code:


                      $count 
                      count($treffer[0]); 
                      for (
                      $i=0$i $count$i++) { 
                          
                          
                      // entferne doppelpunkte und ö und ü aus dem treffer array für die mysql fieldnames...
                          
                      $treffer[1][$i] = preg_replace("/:+/"""$treffer[1][$i]); 
                          
                      $treffer[1][$i] = preg_replace("/&uuml;+/""ue"$treffer[1][$i]); 
                          
                      $treffer[1][$i] = preg_replace("/&ouml;+/""oe"$treffer[1][$i]); 
                          
                          
                      $query 'INSERT INTO sbike_products ('.$treffer[1][$i].') VALUES ("'.addslashes($treffer[2][$i]).'")';
                          echo 
                      $query;
                              
                      $result=mysql_query($query); 
                        


                      echo 
                      mysql_error();
                      mysql_close($connection); 
                      ergebnis gibts hier:
                      http://www.sbike.net/test5.php

                      möglicherweise liegt die sache daran dass man primary keys nicht leer lassen darf da ich den typ nach nicht eingegeben habe der soll ja später mal = dateiname sein... aber nichts eingeben und NOT NULL muss ja eigentlich schon funzen für nen primary key. auf jeden fall hab ich trotz der fehlermeldung in der ersten zeile die schaltung eingetragen und sonst nichts...
                      sellwatertoawell

                      Kommentar

                      Lädt...
                      X