I have been working on this project solidly for a week now I have come out with these 2 scripts. Could you point out which script is the more efficiant way of doing the project?
1
Code: Select all
mysql_connect("x", "x", "x");
mysql_select_db("test");
if (!($xmlparser = xml_parser_create())) { die ("Connect create parser"); }
function start_tag($parser, $name, $attribs) {
global $count;
global $container;
$container[$count] = array();
}
function tag_contents($parser, $data) {
global $count;
global $container;
$container[$count] = $data;
}
function end_tag($parser, $name) {
global $count;
$count++;
}
xml_set_element_handler($xmlparser, "start_tag", "end_tag");
xml_set_character_data_handler($xmlparser, "tag_contents");
$filename = "data.xml";
if (!($fp = fopen($filename, "r"))) { die("Cannot open ". $filename); }
while ($data = fread($fp, 4096)) {
$data = eregi_replace(">"."[[]]+"."<","><", $data);
if (!xml_parse($xmlparser, $data, feof($fp))) {
$reason = xml_error_string(xml_get_error_code($xmlparser));
$reason .= xml_get_current_line_number($xmlparser);
die ($reason);
}
}
xml_parser_free($xmlparser);
$a = 1; $b = 2; $c = 3; $d = 4; # Keeps the array in line
$i = 1; $count = count($container); # Makes the below count is 1;
while ($i <= $count) {
mysql_query("INSERT INTO test (name, age, height, sex) VALUES ('$container[$a]', '$container[$b]',
'$container[$c]', '$container[$d]')");
$a += 6; $b += 6; $c += 6; $d += 6; # This had to be done to insert the data in the correct place
$i++;
}
?>
2
Code: Select all
mysql_connect("x", "x", "x");
mysql_select_db("test");
if (!($xmlparser = xml_parser_create())) { die ("Connect create parser"); }
function start_tag($parser, $name, $attribs) {
}
function tag_contents($parser, $data) {
static $i = 1; # We don't want this reset each time, do we?
if ($i >= 5) { $i = 1; } # Stops the amount of columns going out of range
switch ($i) {
case 1:
mysql_query("INSERT INTO test (name) VALUES ('$data')");
$i++;
break;
case 2:
$query = mysql_query("SELECT * from test");
$rCount = mysql_num_rows($query);
$i++;
mysql_query("UPDATE test SET age='$data' WHERE id='$rCount'");
break;
case 3:
$query = mysql_query("SELECT * from test");
$rCount = mysql_num_rows($query);
$i++;
mysql_query("UPDATE test SET height='$data' WHERE id='$rCount'");
break;
case 4:
$query = mysql_query("SELECT * from test");
$rCount = mysql_num_rows($query);
$i++;
mysql_query("UPDATE test SET sex='$data' WHERE id='$rCount'");
break;
default:
$i = 1;
break;
}
}
function end_tag($parser, $name) {
}
xml_set_element_handler($xmlparser, "start_tag", "end_tag");
xml_set_character_data_handler($xmlparser, "tag_contents");
$filename = "data.xml";
if (!($fp = fopen($filename, "r"))) { die("Cannot open ". $filename); }
while ($data = fread($fp, 4096)) {
$data = eregi_replace(">"."[[]]+"."<","><", $data);
if (!xml_parse($xmlparser, $data, feof($fp))) {
$reason = xml_error_string(xml_get_error_code($xmlparser));
$reason .= xml_get_current_line_number($xmlparser);
die ($reason);
}
}
xml_parser_free($xmlparser);
?>