justlukeyou Posted August 19, 2013 Share Posted August 19, 2013 Hi,I have the following code which should insert information into two tables "productdbase" and "furniture_groups". However the code inserts more lines into productdbase than what it does into furniture_groups. For example products 1-10 will be inserted into productdbase but only 1,3,4,7 and 9 will be inserted into furniture_groups.However there appears to be nothing different between lines 2 and 3 or 6 and 7.Is it possible to create a code as to why something wont insert into a table? $fp = $zip->getStream("datafeed_98057.xml"); //file inside archive if(!$fp) die("Error: can't get stream to zipped file"); $buf = ""; ob_start(); while (!feof($fp)) $buf .= fread($fp, 2048); $s = ob_get_contents(); ob_end_clean(); if(stripos($s, "CRC error") != FALSE) die('CRC32 mismatch'); fclose($fp); $zip->close(); $ax = strocc($buf, '<prod', '</prod>'); echo '<pre>'; for($i=0; $i<sizeof($ax); $i++) { $arr = $ax[$i]; echo strpp($arr, '<pId>', '</pId>') ."<br />"; echo strpp($arr, '<mCat>', '</mCat>') ."<br />"; echo strpp($arr, '<awCat>', '</awCat>') ."<br />"; $desc = ''; if(strpos($ax[$i], '<desc>')!==FALSE) { $desc = safe_string_escape(strpp($ax[$i], '<desc>', '</desc>')); } $discount = 0; if(floatval(strpp($arr, '<rrp>', '</rrp>'))!=0) $discount = 100 - (floatval(strpp($arr, '<buynow>', '</buynow>')) / floatval(strpp($arr, '<rrp>', '</rrp>')) * 100); mysql_query("insert into productdbase SET image_link = '" .safe_string_escape(strpp($arr, '<awImage>', '</awImage>')) ."', link = '" .safe_string_escape(strpp($arr, '<awTrack>', '</awTrack>')) ."', name = '" .safe_string_escape(strpp($arr, '<name>', '</name>')) ."', linkname = '" .str_replace("---", "-", str_replace(" ", "-", safe_string_escape(strpp($arr, '<name>', '</name>')))) ."', fulldescription = '$desc', merchant_category = '" .safe_string_escape(strpp($arr, '<mCat>', '</mCat>')) ."', price = '" .safe_string_escape(strpp($arr, '<buynow>', '</buynow>')) ."', discount = '$discount', merchant = '" .safe_string_escape(strpp($arr, 'name="', '"')) ."', promotional_text = '$desc', id = '" .strpp($arr, '<pId>', '</pId>') ."'"); mysql_query("insert into furniture_groups SET long_name = '" .safe_string_escape(strpp($arr, '<mCat>', '</mCat>')) ."', short_name = '" .safe_string_escape(strpp($arr, '<awCat>', '</awCat>')) ."', id = '" .strpp($arr, '<pId>', '</pId>') ."'"); //echo mysql_error(); } } else echo "zip not found"; unlink($file); function strocc($str, $pos1, $pos2) { $pos=0; $occ=array(); while(strpos($str, $pos1, $pos) && strpos($str, $pos2, strpos($str, $pos1, $pos))) { array_push($occ, strpp($str, $pos1, $pos2, $pos)); $pos = strpos($str, $pos2, strpos($str, $pos1, $pos)); } return ($occ); } function strpp($str, $pos1, $pos2, $startoffset=0) { return substr($str, (strpos($str, $pos1, $startoffset)+strlen($pos1)), strpos($str, $pos2, strpos($str, $pos1, $startoffset)+strlen($pos1))-(strpos($str, $pos1, $startoffset)+strlen($pos1))); } function mysqlinit($user, $pass, $db, $host='localhost') { $link = mysql_connect($host, $user, $pass); if (!$link) { echo('Cant connect to MySQL : ' .mysql_error()); return 0; } $db_selected = mysql_select_db($db, $link); if (!$db_selected) { echo('Cant use database ' .$db .': ' .mysql_error()); return 0; } return 1; } function safe_string_escape($str) { $len=strlen($str); $escapeCount=0; $targetString=''; for($offset=0;$offset<$len;$offset++) { switch($c=$str{$offset}) { case "'": if($escapeCount % 2 == 0) $targetString.="\\"; $escapeCount=0; $targetString.=$c; break; case '"': if($escapeCount % 2 == 0) $targetString.="\\"; $escapeCount=0; $targetString.=$c; break; case '\\': $escapeCount++; $targetString.=$c; break; default: $escapeCount=0; $targetString.=$c; } } return $targetString; } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.