Uppdatera MySQL-databas via XML-dokument, hjälp???

Permalänk
Medlem

Uppdatera MySQL-databas via XML-dokument, hjälp???

Jag är i akut behov av att få detta rätt. Det är så att jag vill kunna, med hjälp av en existerande XML-dokument kunna uppdatera (i det här fallet) lagerantalet i en av tabellerna.

Men det gör inte som den bör göra, och ännu värre, jag vet inte vad som är fel!

Meningen är att om jag via XML-filen anger 50 (och DB har 250) så skall den då uppdateras till 50. Detsamma ska gälla om DB har 25 och jag anger 50 så skall den uppdateras till 50. Men jag fattar inte hur??

Såhär ser min functions.php-fil ut (Antagligen där det är fel):

Citat:

<?php
require ('db_connect.php');

//Man kan använda tre funktioner, kallade get_tag_match_string, get_tag_contents och
//get_tag_contents_array för att extrahera innehållet i ett XML-element, som finns lagrat i en sträng

//get_tag_match_string: returns a match string for
//finding a tag, to be used with preg_match

function get_tag_match_string($tagName)
{
$matchString = "/<$tagName";
$matchString .= "[\s]*>(.*?)<\/$tagName";
$matchString .= "[\s]*>/s";

return $matchString;
}

// get_tag_contents: returns the contents of the element
// $tag_name, assuming the contents are text

function get_tag_contents($xmlString, $tagName)
{

if (preg_match_all(get_tag_match_string($tagName), $xmlString, $matches))
{
return $matches[1][0];
}
else
{
return 0;
}
}

// get_tag_contents_array: returns the contents of the element
// $tag_name, assuming the contents are a list of elements

function get_tag_contents_array($xmlString, $tagName)
{

if (preg_match_all(get_tag_match_string($tagName), $xmlString, $matches))
{
return $matches[1];
}
else
{
return 0;
}
}

//isbn_and_branchNo_ok: veryfies existence of book in current store. true/false
function artikelnr_ok($artikelnr) {
global $connection;

$sql = "SELECT lager_artikel FROM Lagersaldo WHERE lager_artikel = '$artikelnr';";

$result = mysql_query( $sql, $connection ) OR DIE( mysql_error() );

if(!mysql_num_rows( $result ) ) {
return false;
} else {
return true;
}

}

//update_database: uppdaterar i databasen

function update_database($artikelnr, $antal) {
global $connection;

$query = "SELECT lager_antal FROM Lagersaldo WHERE lager_artikel = '$artikelnr';";
//echo $query . "<br>";
$qResult = mysql_query($query, $connection) OR DIE(mysql_error());
$row = mysql_fetch_object($qResult);
$sum= $row->lager_antal;
//echo $sum . "<br>";
$totalAntal = $sum - $antal;
echo $totalAntal . "<br>";

$sql = "UPDATE Lagersaldo SET lager_antal = '$totalAntal' WHERE lager_artikel = '$artikelnr';";
//echo $sql . "<br>";
$result = mysql_query($sql, $connection) OR DIE(mysql_error());
}

//funktion updateStock extraherar data från de olika XML-elementen, och
//anropar de funktioner som beskrivs ovan

// update_storage: updates the book shop stock, given a
// valid XML document, stored in $xml_string.
// The contents of the XML document are also displayed, for
// information purposes

function updateStock($xmlString)
{
$staffName = get_tag_contents($xmlString, "staffName");
print "<br>Namn: ".$staffName;

$date = get_tag_contents($xmlString, "date");
print "<br>Datum: ".$date;

$time = get_tag_contents($xmlString, "time");
print "<br>Tidpunkt: ".$time;

print "<br>";

$updateItemArray = get_tag_contents_array($xmlString, "updateItem");
$noItems = count($updateItemArray);
print "<br>Antal element i listan: $noItems\n";

for ($i = 0; $i < $noItems; $i++)
{
$artikelnr = get_tag_contents($updateItemArray[$i], "artikelnr");
print "<br>Artikelnummer[$i]: ".$artikelnr;

$antal = get_tag_contents($updateItemArray[$i], "antal");
print "<br>Antal[$i]: ";

// check if $isbn and $branchNo is a valid combination
if (artikelnr_ok($artikelnr))
{
update_database($artikelnr, $antal);
print "<br>Database update Ok!";
}
else
{
print "<br><strong>NOTE: $artikelnr and $antal is not a " .
"valid combination!!!</strong>";
}

print "<br>";
}
}

?>

Hoppas jag inte var otydlig och snälla hjälp mig, jag sitter fast i klistret!

Permalänk
Medlem

jag har jobbat med något liknande ett slag

enklast är då att läsa in din textfil (XML) i en egen tabell och göra updateringarna via lagrade procedurer

Visa signatur

Har varit på detta forum på tok för länge...