[KLUG Members] Inserting data into MySQL]

bill members@kalamazoolinux.org
Wed, 07 Aug 2002 16:34:29 -0400


Errata: In the else portion of the if statement, an extra dot has appeared.

        // the first ones don't need a comma
        $fields  =    trim($parts[0]);
        $values.=  addslashes(trim($parts[1]));

should be

        // the first ones don't need a comma
        $fields  =    trim($parts[0]);
        $values =  addslashes(trim($parts[1]));

Debug definition: the process of removing one bug to add two more.

bill wrote:

> Need to clarify what you're doing a bit.
>
> You have a file or several files with similar data?  It's rather important to be clear on what is coming in.
>
> Your looking for a "solution" to "format the text and precede it with insert into cards"?
>
> If by format you mean get the text ready for a mysql insert here's how I would do it with php:
>
> Break each file down until you get to the Card Name: and the Card #:  Those seem to be the beginning and end of each record.
>
> For illustration, let's assume each record was a different file, each field and value are on a single line, and that you have a database with fields that match the fields in the records..
>
> $lines=fopen (record.txt);
> // we've opened the record and read each line into an element in an array.
> // $lines[0] is line 1, $lines[1] is line 2, etc.
>
> //walk through the record line by line (each line contains a field: value)
> for ($i=0;$i<count($lines);$i++) {
>
>      // separate each line on the colon
>     $parts=explode (": ",$lines[$i]);
>     // now $parts[0] is what's before the colon, $parts[1] is what's after the colon
>
>     //build up the sql
>
>     if ($fields) {
>
>         $fields .= ", " . trim($parts[0]);
>         $values .= ", " . addslashes(trim($parts[1]));
>
>         // trim just removes whitespace from the beginning and end
>         // addslashes escapes certain characters that ruin an SQL statement (like quotes).
>         // We're -assuming- perfect input here (a mythological beast) just for illustration.
>         // You should add other error checks for the values.  This is rather important.
>
>     } else {
>
>         // the first ones don't need a comma
>         $fields  =    trim($parts[0]);
>         $values.=  addslashes(trim($parts[1]));
>
>     } // end if
>
> } // end for
>
> $sql="INSERT INTO
> $mydatabase
> ($fields) VALUES ($values)";
>
> $result=mysql_query($sql);
>
> // do your MySQL error checking here, etc.
>
> randy perry wrote:
>
> > Yeah, I could post this to a SQL group, but I trust the noodledge in
> > this group. (Besides, I don't belong to any SQL list).
> >
> > We need to be able to parse text files similar to the following:
> >
> > <text data>
> > Judgment Spoiler List
> > Wizards of the Coast, Inc.
> > (Released May 21, 2002)
> >
> > 143 Cards Total
> > Color: 16 Black, 26 Blue, 33 Green, 27 Red, 33 White, 3 Land,
> > 4 Multicolored
> >
> > Rarity: 55 Common, 44 Uncommon, 44 Rare
> >
> > Card Name:      Ancestor's Chosen
> > Card Color:     W
> > Mana Cost:      5WW
> > Type & Class:   Creature - Cleric
> > Pow/Tou:        4/4
> > Card Text:      "First strike When Ancestor's Chosen comes into play,
> >                 you gain 1 life for each card in your graveyard."
> > Flavor Text:    Empowered by generations of strength.
> > Artist:         Pete Venters
> > Rarity:         U
> > Card #:         1/143
> >
> > Card Name:      Aven Warcraft
> > Card Color:     W
> > Mana Cost:      2W
> > Type & Class:   Instant
> > Pow/Tou:        n/a
> > Card Text:      Creatures you control get +0/+2 until end of turn.
> >                 Threshold - Creatures you control also gain protection
> >                 from the color of your choice until end of turn. (You
> >                 have threshold if seven or more cards are in your
> >                 graveyard.)
> > Flavor Text:    n/a
> > Artist:         Roger Raupp
> > Rarity:         U
> > Card #:         2/143
> > </text data>
> >
> > Ok, the tags aren't going to be there, just what is in between them.  I
> > snipped it down to 2 to show you, but there are really hundreds.  There
> > are also a lot of other lists that each have a hundred or so records.
> >
> > I know that it won't port directly, so I am looking for any solution of perl, php, whatever. The solution should format the text and precede it with insert into cards values(....whatever).  (php on webpage
> > PHP is preferred, but I could set that up as a front end to any solution.
> > Ideas??? Anyone?? Anyone?
> >
> > Randall Perry
> >
> > _______________________________________________
> > Members mailing list
> > Members@kalamazoolinux.org
> > 
>
> _______________________________________________
> Members mailing list
> Members@kalamazoolinux.org
>