coolwinter
New Members-
Posts
1 -
Joined
-
Last visited
Never
Profile Information
-
Gender
Not Telling
coolwinter's Achievements
Newbie (1/5)
0
Reputation
-
Hi, I have written a php routine which parses a xml file and puts the data in the database the script goes into a certain folder looks for .xml files and then parses them one by one and does the database entry. I have written this code so far however I am not able to get the right sql queries . Each xml file will have one order id and several images associated with that orderid and there maybe several such xml files. Now for each orderid I have to insert the order id and imagenames and other data into the database. HERE IS MY CODE. [code]<?php include("/home/caskie/www/demos/laserlight/includes/global_vars.php"); require_once("/home/caskie/www/demos/laserlight/includes/cls_db.php"); $db=new db(_DB_HOST_,_DB_NAME_,_DB_USER_NAME_,_DB_USER_PASSWORD_,true); $db->db_connect(); $db->db_select_db(); $newDirectory = "/home/caskie/www/demos/laserlight/samples/php/photo/"; $xml_orderid_key = "*ORDER*ORDERID"; $xml_ordernumber_key = "*ORDER*ORDERNUMBER"; $xml_custname_key = "*ORDER*CUSTOMER*NAME"; $xml_qty_key = "*ORDER*ITEMS*ITEM*QUANTITY"; $xml_img_key = "*ORDER*ITEMS*ITEM*IMAGES*IMAGE*NAME"; $xml_retailsku_key = "*ORDER*ITEMS*ITEM*PRODUCT*RETAILSKU"; $xml_coaddress1_key = "*ORDER*SHIPTOADDRESS*LINE1"; $xml_coaddress2_key = "*ORDER*SHIPTOADDRESS*LINE2"; $xml_cocity_key = "*ORDER*SHIPTOADDRESS*CITY"; $xml_costate_key = "*ORDER*SHIPTOADDRESS*STATE"; $xml_cozipcode_key = "*ORDER*SHIPTOADDRESS*ZIPCODE"; $story_array = array(); $counter = 0; class xml_story{ var $orderid, $ordernumber, $custname, $qty, $imgname, $retailsku, $coaddress1, $coaddress2, $cocity, $costate, $cozipcode; } function startTag($parser, $data){ global $current_tag; $current_tag .= "*$data"; //echo "<BR>Start Tag = " . $current_tag."<BR>"; } function endTag($parser, $data){ global $current_tag; $tag_key = strrpos($current_tag, '*'); $current_tag = substr($current_tag, 0, $tag_key); //echo "<BR>End Tag =" . $current_tag."<BR>"; } function contents($parser, $data){ global $current_tag, $xml_orderid_key, $xml_ordernumber_key, $xml_custname_key, $xml_qty_key, $xml_img_key, $xml_retailsku_key, $xml_coaddress1_key, $xml_coaddress2_key, $xml_cocity_key, $xml_costate_key, $xml_cozipcode_key, $counter, $story_array; switch($current_tag){ case $xml_orderid_key: $story_array[$counter] = new xml_story(); $story_array[$counter]->ORDERID = $data; break; case $xml_ordernumber_key: $story_array[$counter]->ORDERNUMBER = $data; break; case $xml_custname_key: $story_array[$counter]->NAME = $data; break; case $xml_qty_key: $story_array[$counter]->QUANTITY = $data; break; case $xml_cozipcode_key: $story_array[$counter]->ZIPCODE = $data; break; case $xml_retailsku_key: $story_array[$counter]->RETAILSKU = $data; break; case $xml_coaddress1_key: $story_array[$counter]->LINE1 = $data; break; case $xml_coaddress2_key: $story_array[$counter]->LINE2 = $data; break; case $xml_cocity_key: $story_array[$counter]->CITY = $data; break; case $xml_costate_key: $story_array[$counter]->STATE = $data; break; case $xml_img_key: $story_array[$counter]->NAME = $data; $counter++; break; } } foreach (glob('*.xml') as $filename) { //unset($data); $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startTag", "endTag"); xml_set_character_data_handler($xml_parser, "contents"); $fp = fopen($filename, "r") or die("Could not open file"); $data = fread($fp, filesize($filename)) or die("Could not read file"); if(!(xml_parse($xml_parser, $data, feof($fp)))) { die("Error on line " . xml_get_current_line_number($xml_parser)); } xml_parser_free($xml_parser); fclose($fp); //echo "<BR>File Opened = ".$filename."<BR>".$data."<BR>"; $newfile = str_replace("xml", "ack", $filename); $cmd = "mv ".$filename." ".$newfile; //echo "Command to be executed". $cmd; system($cmd); } ?> <html> <head> <title>Parsed Order Details </title> </head> <body bgcolor="#FFFFFF"> <?php //echo "Start Before"; //for($l=0;$l<count($Image_Name);$l++) // echo "<BR>".$Image_Name[$l]."<BR>"; //echo "End Before<hr><BR>"; unset($Image_Name); //unset($Order_ID); unset($Order_Number); unset($Customer_Name); unset($Quantity); unset($RetailSku); unset($Company_Addr1); unset($Company_Addr2); unset($Company_City); unset($Company_Zipcode); //echo "Image = " . $Image_Name[0]; for($x=0;$x<count($story_array);$x++) { if($story_array[$x]->ORDERID != '') $Order_ID[] = $story_array[$x]->ORDERID; $Order_Number[]=$story_array[$x]->ORDERNUMBER; $Customer_Name[] =$story_array[$x]->NAME; $Quantity[] = $story_array[$x]->QUANTITY; $Image_Name[] = $story_array[$x]->NAME; $RetailSku[] = $story_array[$x]->RETAILSKU; $Company_Addr1[] = $story_array[$x]->LINE1; $Company_Addr2[] = $story_array[$x]->LINE2; $Company_City[] = $story_array[$x]->CITY; $Company_State[] = $story_array[$x]->STATE; $Company_Zipcode[] = $story_array[$x]->ZIPCODE; } //echo "<br>Start after"; //for($l=0;$l<count($Image_Name);$l++) //{ // echo "<BR>".$Image_Name[$l]."<BR>"; // //} //echo "End after<br>"; for($j=0;$j< count($Image_Name); $j++) { if($RetailSku[$j] == 'laso2rdpers') $Color = "Red"; elseif($RetailSku[$j] == 'laso2rdperss') { $Color = "Red Sample"; $special_inst = "SAMPLE ORDER"; } elseif($RetailSku[$j] == 'laso2gdpers') $Color = "Gold"; elseif($RetailSku[$j] == 'laso2gdperss') { $Color = "Gold Sample"; $special_inst = "SAMPLE ORDER"; } $sql = "insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('".$Order_ID[0]."', '". $Image_Name[$j]."', 'Photo_Images', '".$Quantity[$j]."', '".$Color."', '3 1/4', '".$special_inst."', '')"; echo "<BR>".$sql."<BR>"; //unset($story_array); $movefiles = "mv ".$Image_Name[$j]." ".$newDirectory; $newfile = str_replace("xml", "ack", $filename); $cmd = "mv ".$filename." ".$newfile; //echo "Command to be executed". $cmd; //system($cmd); //unset($Image_Name); }//End for loop unset ($data); //unset($Image_Name); ?> </body> </html> <? //}//end foreach loop //unset($Image_Name) ?>[/code] However my arrays are not being initialized properly and so I get the values from my previous file when I parse the next file and so duplicate enteries are being made into the database. Appreciate if anybody can help me in this. The sample xml files are . [code]<order> <version>2.1</version> <asnrequired>yes</asnrequired> <orderid>WAL-2222-2222-222222</orderid> <ordernumber>12345678987</ordernumber> <envelopenumber>456789</envelopenumber> <ordertype>Photo Gifts</ordertype> <entrydate>3/3/2004</entrydate> <orderdate>3/3/2004</orderdate> <printsreceived>Y</printsreceived> <expedite>0</expedite> <orderprice>42.00</orderprice> <redo> <originalorderId></originalorderId> <responsibility></responsibility> <notes></notes> </redo> <customer> <name>Smith</name> <phone>555-555-5555</phone> </customer> <shipping> <carrier>Airborne</carrier> <carrierid>12</carrierid> <method>2 Day</method> <methodid>34</methodid> </shipping> <retailer> <retailerid>WAL</retailerid> <retailername>Walgreens</retailername> </retailer> <store> <storeid>8765</storeid> <storename>Wilsons Super Store</storename> </store> <timestamp>11/23/03 11:31:03</timestamp> <duedate>12/11/2003</duedate> <fromaddress> <line1>PhotoTLC, Inc</line1> <line2>100 Tamal Plaza Suite 250</line2> <line3></line3> <city>Corte Madera</city> <county></county> <province></province> <state>CA</state> <zipcode>94925</zipcode> <country>US</country> <phone>555-555-5555</phone> </fromaddress> <toaddress> <line1>Walgreens ? Photo Dept</line1> <line2>Store No. 167</line2> <line3>Luna St Carro St</line3> <city>San German</city> <county></county> <province></province> <state>PR</state> <zipcode>06823</zipcode> <country>US</country> <phone>555-555-5555</phone> </toaddress> <shiptoaddress> <line1>12 Mall Drive</line1> <line2></line2> <line3></line3> <city>Millway</city> <county></county> <province></province> <state>MI</state> <zipcode>44444</zipcode> <country>US</country> <phone>555-555-5555</phone> </shiptoaddress> <region>12</region> <mailroom>222</mailroom> <itemcount>1</itemcount> <items> <item> <itemsequence>1</itemsequence> <product> <description>Large dual print T-Shirt w/Text</description> <retailsku>P675656</retailsku> <fulfillmentsku>333444555</fulfillmentsku> <wholesaleprice>17.99</wholesaleprice> <retailprice>29.95</retailprice> </product> <discount> <reason>$5 off coupon</reason> <amount>5</amount> </discount> <quantity>1</quantity> <comment></comment> <imagecount>2</imagecount> <images> <image> <description>front image</description> <name>WAL-2345-7665544323-04112003-01.jpg</name> <url></url> </image> <image> <description>back image</description> <name>WAL-2345-7665544323-04112003-01.jpg</name> <url></url> </image> </images> <itemattributecount>2</itemattributecount> <itemattributes> <itemattribute> <name>FrontText</name> <value>Hello</value> </itemattribute> <itemattribute> <name>BackText</name> <value>Goodbye</value> </itemattribute> </itemattributes> </item> </items> </order>[/code] [code]<order> <version>2.1</version> <asnrequired>no</asnrequired> <orderid>13238905</orderid> <ordernumber>13238905</ordernumber> <envelopenumber>071906</envelopenumber> <ordertype>Photo Gifts</ordertype> <entrydate>07/19/2006</entrydate> <orderdate>07/19/2006</orderdate> <printsreceived>N</printsreceived> <expedite>0</expedite> <orderprice>0.00</orderprice> <redo> <originalorderId></originalorderId> <responsibility></responsibility> <notes></notes> </redo> <customer> <name>walgreens samples</name> <phone>315-704-0290</phone> </customer> <shipping> <carrier></carrier> <carrierid></carrierid> <method></method> <methodid></methodid> </shipping> <retailer> <retailerid>USW</retailerid> <retailername>Walgreens</retailername> </retailer> <store> <storeid>10157</storeid> <storename>Walgreens</storename> </store> <timestamp>07/25/2006 17:02:03</timestamp> <duedate>08/04/2006</duedate> <fromaddress> <line1>PhotoTLC, Inc.</line1> <line2>3925 Cypress Drive </line2> <line3></line3> <city>Petaluma</city> <county></county> <province></province> <state>CA</state> <zipcode>94954</zipcode> <country>US</country> <phone>1-888-898-1901</phone> </fromaddress> <toaddress> <line1>WALGREENS - PHOTO DEPT</line1> <line2>Store No. 10157</line2> <line3>150 Grant Ave </line3> <city>Auburn</city> <county></county> <province></province> <state>NY</state> <zipcode>13021</zipcode> <country>US</country> <phone>315-704-0290</phone> </toaddress> <shiptoaddress> <line1>WALGREENS - PHOTO DEPT</line1> <line2>Store No. 10157</line2> <line3>150 Grant Ave </line3> <city>Auburn</city> <county></county> <province></province> <state>NY</state> <zipcode>13021</zipcode> <country>US</country> <phone>315-704-0290</phone> </shiptoaddress> <region></region> <mailroom></mailroom> <itemcount>5</itemcount> <items> <item> <itemsequence>11</itemsequence> <product> <description>*Clock 12" Sports MLB sample</description> <retailsku>NWS73000536</retailsku> <fulfillmentsku>4315</fulfillmentsku> <wholesaleprice>14.0000</wholesaleprice> <retailprice>0.0000</retailprice> </product> <discount> <reason></reason> <amount></amount> </discount> <quantity>1</quantity> <comment></comment> <imagecount>1</imagecount> <images> <image> <description></description> <name>USW071906-25.13238905.jpg</name> <url>http://images.phototlc.net/gifts/05/USW071906-25.13238905.jpg</url> </image> </images> <itemattributecount>1</itemattributecount> <itemattributes> <itemattribute> <name>Baseball Team</name> <value>FLORIDA MARLINS|14-31</value> </itemattribute> </itemattributes> </item> <item> <itemsequence>12</itemsequence> <product> <description>*Mousepad Sports NFL Sample</description> <retailsku>NWS80000544</retailsku> <fulfillmentsku>5620</fulfillmentsku> <wholesaleprice>5.8000</wholesaleprice> <retailprice>0.0000</retailprice> </product> <discount> <reason></reason> <amount></amount> </discount> <quantity>1</quantity> <comment></comment> <imagecount>1</imagecount> <images> <image> <description></description> <name>USW071906-26.13238905.jpg</name> <url>http://images.phototlc.net/gifts/05/USW071906-26.13238905.jpg</url> </image> </images> <itemattributecount>1</itemattributecount> <itemattributes> <itemattribute> <name>Football Team</name> <value>PHIL EAGLES|10-51</value> </itemattribute> </itemattributes> </item> <item> <itemsequence>13</itemsequence> <product> <description>*Mug 11oz. White Sports MLB Sample</description> <retailsku>NWS81000545</retailsku> <fulfillmentsku>2571</fulfillmentsku> <wholesaleprice>6.8000</wholesaleprice> <retailprice>0.0000</retailprice> </product> <discount> <reason></reason> <amount></amount> </discount> <quantity>1</quantity> <comment></comment> <imagecount>1</imagecount> <images> <image> <description></description> <name>USW071906-27.13238905.jpg</name> <url>http://images.phototlc.net/gifts/05/USW071906-27.13238905.jpg</url> </image> </images> <itemattributecount>1</itemattributecount> <itemattributes> <itemattribute> <name>Baseball Team</name> <value>MINNESOTA TWINS|14-41</value> </itemattribute> </itemattributes> </item> <item> <itemsequence>14</itemsequence> <product> <description>*Stein 16 oz Sports NFL, sample</description> <retailsku>NWS88000556</retailsku> <fulfillmentsku>5546</fulfillmentsku> <wholesaleprice>8.8000</wholesaleprice> <retailprice>0.0000</retailprice> </product> <discount> <reason></reason> <amount></amount> </discount> <quantity>1</quantity> <comment></comment> <imagecount>1</imagecount> <images> <image> <description></description> <name>USW071906-28.13238905.jpg</name> <url>http://images.phototlc.net/gifts/05/USW071906-28.13238905.jpg</url> </image> </images> <itemattributecount>1</itemattributecount> <itemattributes> <itemattribute> <name>Football Team</name> <value>SD CHARGERS|10-57</value> </itemattribute> </itemattributes> </item> <item> <itemsequence>15</itemsequence> <product> <description>*Tumbler 16 oz Slimline Sports MLB Sample</description> <retailsku>NWS89000560</retailsku> <fulfillmentsku>5544</fulfillmentsku> <wholesaleprice>8.0000</wholesaleprice> <retailprice>0.0000</retailprice> </product> <discount> <reason></reason> <amount></amount> </discount> <quantity>1</quantity> <comment></comment> <imagecount>1</imagecount> <images> <image> <description></description> <name>USW071906-29.13238905.jpg</name> <url>http://images.phototlc.net/gifts/05/USW071906-29.13238905.jpg</url> </image> </images> <itemattributecount>1</itemattributecount> <itemattributes> <itemattribute> <name>Baseball Team</name> <value>ATLANTA BRAVES|14-11</value> </itemattribute> </itemattributes> </item> </items> </order>[/code] Appreciate any help in this regards, Thanks,