html parser output in sql db

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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

      Comment


      • #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

        Comment


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

          Comment


          • #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
            Last edited by ran2; 25-09-2004, 10:59.
            sellwatertoawell

            Comment


            • #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

              Comment


              • #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 ??
                Last edited by ran2; 25-09-2004, 14:00.
                sellwatertoawell

                Comment


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

                  Comment


                  • #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;

                    ?>
                    Last edited by ran2; 25-09-2004, 14:23.
                    sellwatertoawell

                    Comment


                    • #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

                      Comment

                      Working...
                      X