Vektor
Erfahrenes Mitglied
Hallo zusammen,
ich habe folgendes Problem.
Ich habe mir ein Skript geschrieben welches eine XML-Datei ausliest und die verschiedenen Elemente daraus in eine MySQL-Datenbank eintragen soll.
Das klappt soweit auch alles ganz gut bis auf einen Punkt: Und zwar bekomme ich aus der XML-Datei einen Wert nur als String geliefert (handelt sich um das Element "Klasse") Ich muss/möchte aber den Wert gerne als Integer Wert in meiner DB speichern (ist leichter für mich die Daten dann weiterzuverabeiten) Also habe ich eine weitere Tabelle erstellt, in der ich die möglichen Werte (es handelt sich um die Klassen einen Rollenspiels) mit einer ID versehen habe. Leider erkennt nun bei der SQL-Abfrage mein Skript nur die Klassen in der Tabelle, wenn kein Umlaut enthalten ist.(Bei Klassen wie "Waldläufer" z.B. liefern nur ein leeres Ergebnis) Ich denke daher dass es an der formatierung liegen muss. Die Tabellenspalte habe ich auf UTF-8 Bin gesetzt und in der XML-Datei steht folgendes im Header:
Hier also noch der Code mit dem ich die Abfrage durchführe
Ich hoffe ihr könnt mir helfen - habe schon einiges versucht (z.B. den String mit utf8_encode() umzuwandeln
PS: Ich bin noch relativ unerfahren in PHP - also verzeit mir den ein oder anderen schrecklich anzusehenden Codemurks
ich habe folgendes Problem.
Ich habe mir ein Skript geschrieben welches eine XML-Datei ausliest und die verschiedenen Elemente daraus in eine MySQL-Datenbank eintragen soll.
Das klappt soweit auch alles ganz gut bis auf einen Punkt: Und zwar bekomme ich aus der XML-Datei einen Wert nur als String geliefert (handelt sich um das Element "Klasse") Ich muss/möchte aber den Wert gerne als Integer Wert in meiner DB speichern (ist leichter für mich die Daten dann weiterzuverabeiten) Also habe ich eine weitere Tabelle erstellt, in der ich die möglichen Werte (es handelt sich um die Klassen einen Rollenspiels) mit einer ID versehen habe. Leider erkennt nun bei der SQL-Abfrage mein Skript nur die Klassen in der Tabelle, wenn kein Umlaut enthalten ist.(Bei Klassen wie "Waldläufer" z.B. liefern nur ein leeres Ergebnis) Ich denke daher dass es an der formatierung liegen muss. Die Tabellenspalte habe ich auf UTF-8 Bin gesetzt und in der XML-Datei steht folgendes im Header:
HTML:
<?xml version="1.0" encoding="utf-8"?>
PHP:
// Für jedes "Member" Element eine Abfrage erstellen und ausführen
foreach($xml->members->member as $member)
{
// Den Text "Klasse" formatiert aus der XML-Datei auslesen
$Klasse = substr($member->class,0,strpos($member->class,'(') - 1);
// Abfrage erstellen und Datensatz der zugehörigen Klasse auswählen
// Klasse wird anhand der Tabelle et_klassen bestimmt
$querytext = "SELECT * FROM `et`.`et_klassen` WHERE `Titel` = '" . $Klasse . "'";
$queryres = mysql_query($querytext) or die ("Fehler beim Abfragen der DB");
$row = mysql_fetch_object($queryres);
// Die neue Zeile in der DB eintragen
$querytext = "INSERT INTO `et`.`et_roster` (`Name` ,`Level` ,`Klasse`) VALUES ('" . $member->name . "','" . $member->level . "','" . $row->ID . "')";
$queryres = mysql_query($querytext) or die ("Fehler beim Abfragen der DB");
}
PS: Ich bin noch relativ unerfahren in PHP - also verzeit mir den ein oder anderen schrecklich anzusehenden Codemurks