Hoi, ik ben een php beginner, dus mijn scriptje zal wel aan alle kanten rammelen...
Ik ben bezig met een script dat een xml file parsed en daarna bepaalde waardes in een MySQL database stopt. De waardes uit de xml file kan ik in variabelen stoppen en ook gebruiken, in echo bijvoorbeeld. Dit werkt.
Echter, als ik de waarden in een query gebruik blijft de query leeg.
Wat doe ik verkeerd?

Hier het stukje script:


function contents($parser, $data){
global $current, $Datum, $SpelerID, $SpelerNaam, $SpelerNummer, $Leeftijd;
global $MarktWaarde, $TSI, $Vorm, $Uitspraak, $Ervaring, $Leiderschap, $Salaris, $IsBuitenlands, $Populairiteit;
global $Aggresiviteit, $Eerlijkheid, $CompDoelPunten, $CupDoelPunten, $FriendlyGoals, $CarGoals, $CarHattricks, $Specialiteit, $Transferlijst;
global $NatTeamID, $LandID, $CapsAantal, $CapsOnder20, $Kaarten, $Blesure, $Conditie, $Keepen, $SpelMaken, $Scoren, $Passen;
global $VleugelSpel, $Verdedigen, $SpelHervatten, $TrainersType, $TrainersLevel;

if ($current == "FETCHEDDATE"){$Datum = "$data"; }
if ($current == "PLAYERID"){$SpelerID = "$data"; }
if ($current == "PLAYERNAME"){$SpelerNaam = "$data"; }
if ($current == "PLAYERNUMBER"){$SpelerNummer = "$data"; }
if ($current == "AGE"){$Leeftijd = "$data"; }
if ($current == "MARKETVALUE"){$naam = "$data"; }
if ($current == "TSI"){ $TSI = "$data"; }
if ($current == "PLAYERFORM"){$Vorm = "$data"; }
if ($current == "STATEMENT"){ $Uitspraak = "$data"; }
if ($current == "EXPERIENCE"){$Ervaring = "$data"; }
if ($current == "LEADERSHIP"){$LeiderSchap = "$data"; }
if ($current == "SALARY"){$Salaris = "$data"; }
if ($current == "ISABROAD"){$IsBuitenlands = "$data"; }
if ($current == "AGREEABILITY"){$Populairiteit = "$data"; }
if ($current == "AGGRESSIVENESS"){$Aggresiviteit = "$data"; }
if ($current == "HONESTY"){$Eerlijkheid = "$data"; }
if ($current == "LEAGUEGOALS"){$CompDoelPunten = "$data"; }
if ($current == "CUPGOALS"){$CupDoelPunten = "$data"; }
if ($current == "FRIENDLIESGOALS"){$FriendlyGoals = "$data"; }
if ($current == "CAREERGOALS"){$CarGoals = "$data"; }
if ($current == "CARREERHATTRICKS"){$CarHattricks = "$data"; }
if ($current == "SPECIALITY"){$Specialiteit = "$data"; }
if ($current == "TRANSFERLISTED"){$Transferlijst = "$data"; }
if ($current == "NATIONALTEAMID"){$NatTeamID = "$data"; }
if ($current == "COUNTRYID"){$LandID = "$data"; }
if ($current == "CAPS"){$CapsAantal = "$data"; }
if ($current == "CAPSU20"){$CapsOnder20 = "$data"; }
if ($current == "CARDS"){$Kaarten = "$data"; }
if ($current == "INJURYLEVEL"){$Blesure = "$data"; }
if ($current == "STAMINASKILL"){$Conditie = "$data"; }
if ($current == "KEEPERSKILL"){$Keepen = "$data"; }
if ($current == "PLAYMAKERSKILL"){$SpelMaken = "$data"; }
if ($current == "SCORERSKILL"){$Scoren = "$data"; }
if ($current == "PASSINGSKILL"){$Passen = "$data"; }
if ($current == "WINGERSKILL"){$VleugelSpel = "$data"; }
if ($current == "DEFENDERSKILL"){$Verdedigen= "$data"; }
if ($current == "SETPIECESSKILL"){$SpelHervatten = "$data"; }
if ($current == "TRAINERTYPE"){$TrainersType = "$data"; }
if ($current == "TRAINERSKILL"){$TrainersLevel = "$data"; }

$query = "INSERT INTO spelers (PlayerID, PlayerName, PlayerNumber, Age, MarketValue, TSI, PlayerForm, Statement, Experience, Leadership, Salary, IsAbroad, Agreeability, Aggressiveness, Honesty, LeagueGoals, CupGoals, FriendliesGoals, CareerGoals, CareerHattricks, Specialty, TransferListed, NationalTeamID, CountryID, Caps, CapsU20, Cards, InjuryLevel, StaminaSkill, KeeperSkill, PlaymakerSkill, ScorerSkill, PassingSkill, WingerSkill, DefenderSkill, SetPiecesSkill, TrainerType, TrainerSkill)" .
"VALUES ('$SpelerID', '$SpelerNaam', '$SpelerNummer', '$Leeftijd', '$MarktWaarde', '$TSI', '$Vorm', '$Uitspraak', '$Ervaring', '$Leiderschap', '$Salaris', '$IsBuitenlands', '$Populairiteit', '$Aggresiviteit', '$Eerlijkheid', '$CompDoelPunten', '$CupDoelPunten', '$FriendlyGoals', '$CarGoals', '$CarHattricks', '$Specialiteit', '$Transferlijst', '$NatTeamID', '$LandID', '$CapsAantal', '$CapsOnder20', '$Kaarten', '$Blesure', '$Conditie', '$Keepen', '$SpelMaken', '$Scoren', '$Passen', '$VleugelSpel', '$Verdedigen', '$SpelHervatten', '$TrainersType', '$TrainersLevel')";

mysql_query($query) or die('Error, query failed. ' . mysql_error());
}

//------------------------------------------------------------------------

Dit is wat er van mijn query gebrouwen word:

INSERT INTO spelers (PlayerID, PlayerName, PlayerNumber, .......... VALUES ('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')
Wat je doet is, je controleert wat $current is. Dus je gaat sowieso altijd maar één waarde hebben.

Maar waar komt $current vandaan en wat zit er in?
Hoi, ik ben een php beginner, dus mijn scriptje zal wel aan alle kanten rammelen...
Ik ben bezig met een script dat een xml file parsed en daarna bepaalde waardes in een MySQL database stopt


Wat klopt er niet in die 2 zinnen?
In $current zit de huidige xml tag, dan weet het script dus waar hij is.

Als ik echo doe :

echo "$Datum $SpelerID $SpelerNaam $SpelerNummer $Leeftijd $MarktWaarde $TSI $Vorm $Uitspraak $Ervaring $Aggresiviteit $Eerlijkheid $CompDoelPunten $CupDoelPunten $CarHattricks $Specialiteit $Transferlijst $NatTeamID $LandID $CapsAantal $CapsOnder20 $Kaarten $Blesure $Conditie $Keepen $SpelMaken $Scoren $Passen$VleugelSpel $Verdedigen $SpelHervatten $TrainersType $TrainersLevel ";

Krijg ik een mooie output van de volledige xml file:

8486633 Esequiel Soto 100 54 TSI: 0 4 7 2 2 0 0 0 0 35 0 0 0 -1 2 0 0 0 0 0 1 0 1 7
27449539 Johan Hammarbo 100 30 TSI: 1740 7 4 0 2 0 0 0 0 1 0 0 0 -1 6 1 8 5 1 7 2 5
49260899 Aleksanteri Oinas 100 28 TSI: 9010 7 4 2 0 1 0 0 0 11 0 0 2 -1 7 1 11 3 5 4 5 6
49748324 Cleo Liu 100 28 TSI: 7790 7 4 2 2 14 0 0 0 8 0 0 1 -1 7 1 2 11 3 5 3 6
53328875 Luki Gunder 100 26 TSI: 21400 6 6 2 3 7 2 0 0 40 0 0 0 -1 7 1 3 12 6 4 5 4
58088641 Tian Boon-Kiat 100 25 TSI: 4650 5 3 2 4 1 0 0 0 52 0 0 0 -1 7 1 6 9 2 6 3 7

Als ik onder of boven de query een echo doe van een variabele is die ook netjes wat hij zijn moet. Hij wil alleen niet in de query meedoen :S
@ wes... uhm, weet ik niet...
Waarom doe je dit:
TrainerSkill)" . "VALUES ('$SpelerID',

Haal die " . " eens weg en kijk eens wat ie dan doet.

P.s. Zet voortaan je code tussen [ignore]
[/ignore] tags, dan is het voor iedereen maar ook jezelf overzichtelijker.
Sorry van die code tags, daar zal ik voorataan om denken.

die . is omdat het anders zo'n lange regel word en aangezien ik alles in VIM doe (geen muis) is dit wel zo makkelijk.

Zonder . maakt geen verschil.

Wel bedankt voor het meedenken trouwens :)
in vim werk de enter toets ook niet? das nieuw voor mij :)
Jur,

je wil gewoon teveel

als beginnede PHPer moet je geen XMLparses gaan bouwen, puur om het feit dat je geen idee hebt waar de neuq je mee bezig bent
Zou best kunnen dat het teveel is, maar je kan toch proberen :)

Ik wist trouwens niet dat geen steilers ook aan php doen ;)

Het punt is, dat ik die xml wel kan parsen en de gegevens in variabelen kan stoppen en terug geven (in een echo) maar niet in een query terug zie, dat vind ik dus raar.

Maar als men geen idee heeft hoe dat kan, zoek ik wel even verder. Vriendelijk bedankt iig.
find and replace all = "$data" bij = $data
find and replace all '$var' bij '".$var."'

Verder :
print_r($_current) ;

ini_set("display_errors",true) ;
error_reporting(e_all) ;


En kijk dan nog een keer :)

[edit]O ja bijna vergeten :
http://nl3.php.net/switch
[/edit]

Reageren