CorruptBlood Posted July 21, 2009 Share Posted July 21, 2009 Hello everyone. I am new to the forums, so let me know if I am doing something wrong. I didn't find a "read first" post, so I am assuming I am good to go! Basically, I am attempting to pull armory data from world of warcraft's site for a guild roster. I have successfully pulled the data into guildroster.xml (below), and now I am trying to insert it into MySQL. roster.php: <?php $link = mysql_connect("#","#","#"); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db("#", $link); mysql_query("DELETE FROM roster_guild"); $xmlDoc = new DOMDocument(); $xmlDoc -> load( 'guildroster.xml' ); $searchNode = $xmlDoc->getElementsByTagName( "character" ); foreach( $searchNode as $character ) { $charactername = $character->getAttribute('name'); $characterlevel = $character->getAttribute('level'); $characterclass = $character->getAttribute('classId'); $characterrace = $character->getAttribute('raceId'); $characterrank = $character->getAttribute('rank'); $characterrankid = $character->getAttribute('rank'); if ($characterclass == 1) { $characterclass = "Warrior"; } elseif ($characterclass == 2) { $characterclass = "Paladin"; } elseif ($characterclass == 3) { $characterclass = "Hunter"; } elseif ($characterclass == 4) { $characterclass = "Rogue"; } elseif ($characterclass == 5) { $characterclass = "Priest"; } elseif ($characterclass == 6) { $characterclass = "Death Knight"; } elseif ($characterclass == 7) { $characterclass = "Shaman"; } elseif ($characterclass == { $characterclass = "Mage"; } elseif ($characterclass == 9) { $characterclass = "Warlock"; } elseif ($characterclass == 11) { $characterclass = "Druid"; } if ($characterrace == 10) { $characterrace = "Blood Elf"; } elseif ($characterrace == 2) { $characterrace = "Orc"; } elseif ($characterrace == 6) { $characterrace = "Tauren"; } elseif ($characterrace == { $characterrace = "Troll"; } elseif ($characterrace == 5) { $characterrace = "Undead"; } if ($characterrank == 0) { $characterrank = "Head Captain"; } elseif ($characterrank == 1) { $characterrank = "Captain"; } elseif ($characterrank == 2) { $characterrank = "Lieutenant"; } elseif ($characterrank == 3) { $characterrank = "Soul Reaper"; } elseif ($characterrank == 4) { $characterrank = "Human"; } elseif ($characterrank == 5) { $characterrank = "Mod Soul"; } mysql_query("INSERT INTO roster_guild (NAME, LEVEL, CLASS, RANK, RACE, RANKID) VALUES ('$charactername','$characterlevel','$characterclass','$characterrank','$characterrace','$characterrankid')"); } mysql_close($link); ?> guildroster.xml: <?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/Users/Shadow/Desktop/Roster/roster.xsl"?> <tabInfo subTab="guildRoster" tab="guild" tabGroup="guild" tabUrl="r=Mal%27Ganis&gn=Ryoka"/> <guildInfo> <guildHeader battleGroup="Stormstrike" faction="1" members="18" name="Ryoka" nameUrl="Ryoka" realm="Mal'Ganis" realmUrl="Mal%27Ganis" url="r=Mal%27Ganis&gn=Ryoka"> <emblem emblemBackground="6" emblemBorderColor="14" emblemBorderStyle="3" emblemIconColor="15" emblemIconStyle="79"/> </guildHeader> <guild> <members memberCount="18"> <character achPoints="60" classId="1" genderId="0" level="17" name="Roflrage" raceId="5" rank="5" url="r=Mal%27Ganis&n=Roflrage"/> <character achPoints="0" classId="4" genderId="1" level="72" name="Jyyn" raceId="5" rank="4" url="r=Mal%27Ganis&n=Jyyn"/> <character achPoints="1570" classId="11" genderId="1" level="80" name="Moobaalalala" raceId="6" rank="3" url="r=Mal%27Ganis&n=Moobaalalala"/> <character achPoints="170" classId="6" genderId="0" level="61" name="Kizuke" raceId="10" rank="5" url="r=Mal%27Ganis&n=Kizuke"/> <character achPoints="2245" classId="6" genderId="1" level="80" name="Reyvyn" raceId="5" rank="3" url="r=Mal%27Ganis&n=Reyvyn"/> <character achPoints="0" classId="8" genderId="1" level="80" name="Jynn" raceId="5" rank="3" url="r=Mal%27Ganis&n=Jynn"/> <character achPoints="50" classId="2" genderId="0" level="10" name="Kyoroku" raceId="10" rank="5" url="r=Mal%27Ganis&n=Kyoroku"/> <character achPoints="330" classId="2" genderId="1" level="80" name="Hinamori" raceId="10" rank="0" url="r=Mal%27Ganis&n=Hinamori"/> <character achPoints="250" classId="4" genderId="1" level="80" name="Blint" raceId="5" rank="1" url="r=Mal%27Ganis&n=Blint"/> <character achPoints="320" classId="6" genderId="0" level="80" name="Roflplague" raceId="10" rank="1" url="r=Mal%27Ganis&n=Roflplague"/> <character achPoints="0" classId="2" genderId="1" level="72" name="Yuyaa" raceId="10" rank="4" url="r=Mal%27Ganis&n=Yuyaa"/> <character achPoints="2960" classId="7" genderId="1" level="80" name="Helaena" raceId="8" rank="1" url="r=Mal%27Ganis&n=Helaena"/> <character achPoints="10" classId="3" genderId="1" level="78" name="Ambarel" raceId="10" rank="5" url="r=Mal%27Ganis&n=Ambarel"/> <character achPoints="0" classId="5" genderId="1" level="80" name="Lirayelle" raceId="5" rank="3" url="r=Mal%27Ganis&n=Lirayelle"/> <character achPoints="110" classId="8" genderId="0" level="21" name="Anarez" raceId="5" rank="4" url="r=Mal%27Ganis&n=Anarez"/> <character achPoints="150" classId="6" genderId="0" level="61" name="Curbchecked" raceId="5" rank="5" url="r=Mal%27Ganis&n=Curbchecked"/> <character achPoints="2670" classId="6" genderId="1" level="80" name="Nýx" raceId="10" rank="3" url="r=Mal%27Ganis&n=N%C3%BDx"/> </members> </guild> </guildInfo> The problem is the only character that actually gets inserted is: ID: 0 NAME: Roflrage LEVEL: 17 CLASS: Warrior RANK: Mod Soul RACE: Undead RANKID: 5 No other character gets inserted, I only have 1 record in the database, can someone explain what I am doing wrong? I need each of the characters above to be inserted in its' own record. Thanks! -CorruptBlood EDIT: If I echo the $charactername, $characterlevel, etc... in the foreach loop I actually will get each of the character's names, level, etc... It is only when I attempt to insert. So it looks like the XML is being read correctly. (correct me if I am wrong.) Quote Link to comment https://forums.phpfreaks.com/topic/166831-solved-mysql-insert-data-from-php-xml-dom/ Share on other sites More sharing options...
ignace Posted July 21, 2009 Share Posted July 21, 2009 The problem is the only character that actually gets inserted is: ID: 0 NAME: Roflrage LEVEL: 17 CLASS: Warrior RANK: Mod Soul RACE: Undead RANKID: 5 Actually not you forgot to add an auto_increment to your primary id so it inserts the first row and throws sql error on all others something like: duplicate entry '0' for key '.. Quote Link to comment https://forums.phpfreaks.com/topic/166831-solved-mysql-insert-data-from-php-xml-dom/#findComment-879749 Share on other sites More sharing options...
CorruptBlood Posted July 21, 2009 Author Share Posted July 21, 2009 I can't believe I forgot something so minor. I didn't even think to look at that ><. Thanks for the help, solved the problem!!! =D Quote Link to comment https://forums.phpfreaks.com/topic/166831-solved-mysql-insert-data-from-php-xml-dom/#findComment-879754 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.