in my mysql database I have several rows each containing an item id. What I would like to do is update each of the "placidRate" columns for what is contained within the XML document of the very large URL below. Example, for typeID 1230, it should find the rate of 1230 in my db and match it with the rate of $type->sell->min
. That is the end goal. Right now all I'm looking for it to do is echo the old rate (db) and the new rate (xml) next to each other.
while($row = mysql_fetch_assoc($result)){
$oldTypeID = $row['typeID'];
$urlPlacid = 'http://api.eve-central.com/api/marketstat?typeid=1230&typeid=17470&typeid=17471&typeid=1228&typeid=17463&typeid=17464&typeid=1224&typeid=17459&typeid=18&typeid=17455&typeid=17456&typeid=1227&typeid=17867&typeid=17868&typeid=20&typeid=17452&typeid=17453&typeid=1226&typeid=17448&typeid=17449&typeid=1231&typeid=17444&typeid=17445&typeid=21&typeid=17440&typeid=17441&typeid=1229&typeid=17865&typeid=17866&typeid=1232&typeid=17436&typeid=17437&typeid=19&typeid=17466&typeid=17467&typeid=1225&typeid=17432&typeid=17433&typeid=1223&typeid=17428&typeid=17429&typeid=22&typeid=17425&typeid=17426&typeid=11396&typeid=17869&typeid=17870&typeid=34&typeid=35&typeid=36&typeid=37&typeid=38&typeid=40&typeid=39&typeid=11399®ionlimit=10000048';
$xmlPlacid = simplexml_load_file($urlPlacid);
foreach($xmlPlacid->marketstat->type as $type){
$newRate = $type->sell->min;
if($type[id] = $oldTypeID){
echo "old placid rate: ".$row['placidRate']." || new placid rate: ".$newRate;
}
else{}
The problem with this code, is that it returns
old placid rate: 14.5 || new placid rate: 12.00old placid rate: 14.5 || new placid rate: 25.00old placid rate: 14.5 || new placid rate: 17.00old placid rate: 14.5 || new placid rate: 25.21old placid rate: 14.5 || new placid rate: 22.01old placid rate: 14.5 || new placid rate: 30.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 55.00old placid rate: 14.5 || new placid rate: 80.00old placid rate: 14.5 || new placid rate: 85.00old placid rate: 14.5 || new placid rate: 94.00old placid rate: 14.5 || new placid rate: 90.00old placid rate: 14.5 || new placid rate: 120.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 290.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 1087.06old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 0.00old placid rate: 14.5 || new placid rate: 4.00old placid rate: 14.5 || new placid rate: 10.00old placid rate: 14.5 || new placid rate: 40.00old placid rate: 14.5 || new placid rate: 143.00old placid rate: 14.5 || new placid rate: 819.00old placid rate: 14.5 || new placid rate: 2599.00old placid rate: 14.5 || new placid rate: 770.00old placid rate: 14.5 || new placid rate: 0.00
And I'm not entirely sure why...
One step closer to updating the sql table. edited once more
$market = new eveCentral();
while($row = mysql_fetch_assoc($result2)){
$oldTypeID = $row['typeID'];
$oldRate = $row['placidRate'];
$newPlacidRate = $market->placidMin($oldTypeID);
$newForgeRate = $market->forgeMin($oldTypeID);
$newUniverseRate = $market->universeMin($oldTypeID);
$updateQuery = "UPDATE itemRates SET placidRate = $newPlacidRate, forgeRate = $newForgeRate, universeRate = $newUniverseRate WHERE typeID = $oldTypeID";
Apart from the problem with the wrong operator in the if
comparison (as @GBD has outlined), you have a few issues here:
while
query.A view from above:
$marketstat = new EveCentralMarketstat();
while ($row = mysql_fetch_assoc($result)) {
$oldTypeID = $row['typeID'];
$oldRate = $row['placidRate'];
$newRate = $marketstat->getSellMinByType($oldTypeID);
if (FALSE !== $newRate) {
echo "old placid rate: " . $oldRate . " || new placid rate: " . $newRate;
}
}
Definition for the EveCentralMarketstat
class:
Add the functions you need for more data access, also the constructor can be improved depending on which information you need, just a quick outline how you can improve.
/**
* Wrapper Class for Even Central API Market Statistics
*/
class EveCentralMarketstat
{
/**
* @var SimpleXMLElement
*/
private $xml;
public function __construct() {
$urlPlacid = 'http://api.eve-central.com/api/marketstat?typeid=1230&typeid=17470&typeid=17471&typeid=1228&typeid=17463&typeid=17464&typeid=1224&typeid=17459&typeid=18&typeid=17455&typeid=17456&typeid=1227&typeid=17867&typeid=17868&typeid=20&typeid=17452&typeid=17453&typeid=1226&typeid=17448&typeid=17449&typeid=1231&typeid=17444&typeid=17445&typeid=21&typeid=17440&typeid=17441&typeid=1229&typeid=17865&typeid=17866&typeid=1232&typeid=17436&typeid=17437&typeid=19&typeid=17466&typeid=17467&typeid=1225&typeid=17432&typeid=17433&typeid=1223&typeid=17428&typeid=17429&typeid=22&typeid=17425&typeid=17426&typeid=11396&typeid=17869&typeid=17870&typeid=34&typeid=35&typeid=36&typeid=37&typeid=38&typeid=40&typeid=39&typeid=11399®ionlimit=10000048';
$this->xml = simplexml_load_file($urlPlacid);
}
/**
* @param $typeID
* @return bool|string String value if $typeID is found, FALSE on error
*/
public function getSellMinByType($typeID) {
$result = $this->xml->xpath("/*/marketstat/type[@id = '$typeID']/sell/min");
if (!$result) {
return FALSE;
}
return (string)$result[0];
}
}