...

View Full Version : Strict Standards: Non-static method DOMDocument::load() should not be called sta



newphpcoder
04-25-2012, 09:35 AM
Hi...
I tried to import to my database an xml file using this code:


<?php
//ini_set('display_errors', -1);
//error_reporting(E_ALL);
//error_reporting(-1);
error_reporting(E_ALL | E_STRICT);
//error_reporting(E_ALL ^ E_NOTICE);
date_default_timezone_set("Asia/Singapore"); //set the time zone
$data = array();

$con = mysql_connect("localhost", "root","");
if (!$con) {
die(mysql_error());
}
$db = mysql_select_db("mes", $con);
if (!$db) {
die(mysql_error());
}


function add_employee($ETD,$PO_No,$SKUCode,$Description,$POReq ,$Comp)
{
global $data;


$con = mysql_connect("localhost", "root","");
if (!$con){ die(mysql_error());}
$db = mysql_select_db("mes", $con);
if (!$db) {
die(mysql_error());
}

$ETD= $ETD;
$PO_No = $PO_No;
$SKUCode = $SKUCode;
$Description = $Description;
$POReq = $POReq;
$Comp = $Comp;


$sql = "INSERT INTO sales_order (ETD,PO_No,SKUCode,Description,POReq,Comp)
VALUES
('$ETD','$PO_No','$SKUCode','$Description','$POReq','$Comp')
ON DUPLICATE KEY UPDATE
ETD = '$ETD', PO_No = '$PO_No', SKUCode = '$SKUCode', Description = '$Description', POReq = '$POReq', Comp = '$Comp'" or die(mysql_error());
$res = mysql_query($sql, $con);

$data []= array('ETD'=>$ETD,'PO_No'=>$PO_No,'SKUCode'=>$SKUCode,'Description'=>$Description,'POReq'=>$POReq,'Comp'=>$Comp);
}
// if (isset($_FILES['file']['tmp_name'])){


if(empty($_FILES['file']['tmp_name']['error'])){
$dom = new DOMDocument();
$dom = DOMDocument::load('SalesOrder.xml');
//$dom = DOMDocument::load($_FILES['file']['tmp_name']);
//$dom = DOMDocument::__construct();
$rows = $dom->getElementsByTagName('Row');
global $last_row;
$last_row = false;
$first_row = true;
foreach ($rows as $row)
{
if ( !$first_row )
{
$ETD = "";
$PO_No = "";
$SKUCode = "";
$Description = "";
$POReq = "";
$Comp = "";

$index = 1;
$cells = $row->getElementsByTagName( 'Cell' );

foreach( $cells as $cell )
{
$ind = $cell->getAttribute( 'Index' );
if ( $ind != null ) $index = $ind;

if ( $index == 1 ) $ETD = $cell->nodeValue;
if ( $index == 2 ) $PO_No = $cell->nodeValue;
if ( $index == 3 ) $SKUCode = $cell->nodeValue;
if ( $index == 4 ) $Description = $cell->nodeValue;
if ( $index == 5 ) $POReq = $cell->nodeValue;
if ( $index == 6 ) $Comp = $cell->nodeValue;
$index += 1;
}

if ($ETD=='' AND $PO_No=='' AND $SKUCode=='' AND $Description=='' AND $POReq=='' AND $Comp=='') {
$last_row = true;
}
else {
add_employee($ETD,$PO_No,$SKUCode,$Description, $POReq, $Comp);
}
}
if ($last_row==true) {
$first_row = true;
}
else {
$first_row = false;
}
}
}


?>


but I got an error:

Strict Standards: Non-static method DOMDocument::load() should not be called statically

in this part:

$dom = DOMDocument::load('SalesOrder.xml');

I hope somebody can help me...I need to import data from .xml to my database.

Thank you so much

abduraooft
04-25-2012, 09:45 AM
Check the example at http://php.net/manual/en/domdocument.load.php to see the usage.

:: operator is used to invoke static functions. You need to use -> here.

newphpcoder
04-25-2012, 09:55 AM
Check the example at http://php.net/manual/en/domdocument.load.php to see the usage.

:: operator is used to invoke static functions. You need to use -> here.

You mean this:



$doc = new DOMDocument();
$doc->load('book.xml');
$doc->saveXML();



Thank you

newphpcoder
04-25-2012, 10:05 AM
i tried:



if(empty($_FILES['file']['tmp_name']['error'])){
//$dom = new DOMDocument();
//$dom = DOMDocument::load('SalesOrder.xml');
$dom = new DOMDocument();
$dom->load('SalesOrder.xml');
$dom->saveXML();

// $dom = DOMDocument::load($_FILES['file']['tmp_name']);
// $dom = DOMDocument::__construct();
$rows = $dom->getElementsByTagName('Row');
global $last_row;
$last_row = false;
$first_row = true;


No error but it did not save to my database the data :(

Thank you

Fou-Lu
04-25-2012, 04:52 PM
We can't really help you here. This assumes that $dom->getElementsByTagName finds valid tags under the name Row in the default namespace. If the namespace isn't default you need to change your handling to deal with the namespaces.
This snippet doesn't contain near enough information either. Where's the code to insert? global shouldn't ever be used except where you cannot modify the function signature required by a callback script, but this appears to be global in the main method. If so, this will have no value here.
Are you trying to pull data from one file into another? The commented out section appears to be trying this, but the current section doesn't include this functionality. You only have one $dom established. Depending on what you are attempting to do, this could be a simple importNode from the uploaded file into the salesorder.xml file.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum