php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.05.2008, 01:38  
Neuer Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1
PeopleSaw befindet sich auf einem aufstrebenden Ast
Standard XML auslesen und auswerten

Hallo ich habe ein Problem,
ich hab ein Script geschrieben was eine XML datei auslesen und auswerten soll
allerdings mach ich irgendwas falsch

PHP-Code:
<?php
if (file_exists('update/uni.xml')) {
    
$xml simplexml_load_file('update/uni.xml');

$Datum date("d.m.Y");

} else {
    exit(
'Konnte uni.xml nicht öffnen.');
}
if(
$xml) {
include(
'config/db.inc'); // Hier werden die Zugangsdaten importiert
    // Verbindung zum Datenbankserver herstellen
    
$link=mysql_connect($dbserver$dbuser$dbpasswd);
    if (
$link == FALSE)
    {
        echo 
"<br><br><p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden.
        Bitte versuchen Sie es später noch einmal.\n"
;
        echo 
"</BODY></HTML>\n"// HTML Dokument abschliessen
        
exit (); // PHP-Script beenden
    
}

    
// Datenbank auswaehlen
    
$dblink=mysql_select_db($dbname);
    if (
$dblink == FALSE)
    {
        echo 
"<br><br><p><b>Leider kann die Datenbank nicht geöffnet werden.
        Bitte versuchen Sie es später noch einmal.\n"
;
        echo 
"</BODY></HTML>\n"// HTML Dokument abschliessen
            
exit (); // PHP-Script beenden
    
}

    foreach(
$xml->sector as $sektor) {
        foreach(
$sektor->planet as $planet) {
            
$planet['coords'] = sprintf("%06d"$planet['coords']);
            
$planet['coords'] = sprintf("%s-%s-%s",
            
substr($planet['coords'],0,2),
            
substr($planet['coords'],2,2),
            
substr($planet['coords'],4,2));
// Prüfen ob der Planet einen User Name hat. Wenn ja wird die Zeile ausgeben, wenn nein, passiert nichts
if(!empty($planet['user_name'])) {
if(empty(
$planet['alli_tag'])) { $planet['alli_tag'] = 'keine'; }
   echo 
'Notiz=Keine Koordinaten=' $planet['coords'] . ' Spieler=' $planet['user_name'] . ' Allianz=' $planet['alli_tag'] . ' Datum=' $Datum '<br>';      
    
$query1 'SELECT * FROM Uni1 WHERE Koordinaten like "'.$planet["coords"].'";';
    
$result1 mysql_query($query1);
    if (
$num) {
$query2 'UPDATE Uni1 SET Spieler="' $planet['user_name'] . '",
       Allianz="' 
$planet['alli_tag'] . '",
        Notiz="Keine",    
        Datum="'
.$Datum.'"
        WHERE Koordinaten like "'
.$planet["coords"].'";';
$result2 mysql_query($query2);
$query3 'UPDATE Uni1 SET Allianz="' $planet['alli_tag'] . '"
        WHERE Spieler like "'
.$planet["user_name"].'";';
$result3 mysql_query($query3);
        echo 
"Datenbankeintrag aktualisiert!";
    } 
    else 
    { 
     
$query4 'Insert into Uni1 SET Spieler="' $planet['user_name'] . '",
        Allianz="' 
$planet['alli_tag'] . '",
        Notiz="Keine",    
        Datum="'
.$Datum.'",
        Koordinaten="'
.$planet["coords"].'";';
$result4 mysql_query($query4);


        if (
$result4)
        { 
            echo 
"Spieler wurde erfolgreich aufgenommen.";
        }
        else
        { 
            echo 
"Datenbankfehler! Spieler konnte nicht aufgenommen werden!<br>";
echo 
"query1 $query1 <br>";
echo 
"result1 $result1 <br>";
echo 
"query2 $query2 <br>";
echo 
"result2 $result2 <br>";
echo 
"query3 $query3 <br>";
echo 
"result3 $result3 <br>";
echo 
"query4 $query4 <br>";
echo 
"result4 $result4 <br>";
echo 
"num $num<br><br>";
        }

    } 





   }
    }
}
mysql_close();
}
?>

Code:
Notiz=Keine Koordinaten=00-00-23 Spieler=Rhognal Allianz=IW Datum=21.05.2008
Datenbankfehler! Spieler konnte nicht aufgenommen werden!
query1 SELECT * FROM Uni1 WHERE Koordinaten like "00-00-23"; 
result1 Resource id #5 
query2  
result2  
query3  
result3  
query4 Insert into Uni1 SET Spieler="Rhognal",         Allianz="IW",         Notiz="Keine",             Datum="21.05.2008",         Koordinaten="00-00-23"; 
result4  
num 

Notiz=Keine Koordinaten=00-00-26 Spieler=Rhognal Allianz=IW Datum=21.05.2008
Datenbankfehler! Spieler konnte nicht aufgenommen werden!
query1 SELECT * FROM Uni1 WHERE Koordinaten like "00-00-26"; 
result1 Resource id #6 
query2  
result2  
query3  
result3  
query4 Insert into Uni1 SET Spieler="Rhognal",         Allianz="IW",         Notiz="Keine",             Datum="21.05.2008",         Koordinaten="00-00-26"; 
result4  
num
Weis jemand woran das liegt ?
PeopleSaw ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.05.2008, 06:10  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

"irgendwas falsch" achso und wir sollen jetzt raten was das heisst oder wie?
cycap ist offline  
Alt 21.05.2008, 06:47  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

Du solltest mal in deinem query " und ' (double quotes und single quotes)überprüfen
HPR1974 ist offline  
Alt 21.05.2008, 10:19  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von PeopleSaw Beitrag anzeigen
Weis jemand woran das liegt ?
Woran was liegt? Du hast ja nicht beschrieben was das Problem ist.

Edit: Also das Verschieben scheint jetzt nicht so geklappt zu haben ..
__________________
"Nuschel ich?" - "Was?"

Geändert von Chriz (21.05.2008 um 10:23 Uhr).
Chriz ist gerade online  
Alt 21.05.2008, 11:11  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das sieht mir jetzt auch etwas sehr kaputt aus.
David ist offline  
Alt 21.05.2008, 11:15  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

lol ähm hmm ich guck mal was sich da machen lässt...

[edit]
jetzt hab ich den einen post nochmal verschoben und er ist im nichts verschwunden oO

Geändert von cycap (21.05.2008 um 11:17 Uhr).
cycap ist offline  
Alt 21.05.2008, 11:43  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
include('config/db.inc'); // Hier werden die Zugangsdaten importiert
Wenn .inc beim Webserver nicht mit PHP verknüpft ist, wird es vermutlich als Klartext zum Download ausgeliefert - mit samt den MySQL Zugangsdaten. Deshalb besser db.inc.php als Dateinamen verwenden.
Zitat:
// Verbindung zum Datenbankserver herstellen
$link=mysql_connect($dbserver, $dbuser, $dbpasswd);
if ($link == FALSE)
{
echo "<br><br><p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden.
Bitte versuchen Sie es später noch einmal.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}

// Datenbank auswaehlen
$dblink=mysql_select_db($dbname);
if ($dblink == FALSE)
{
echo "<br><br><p><b>Leider kann die Datenbank nicht geöffnet werden.
Bitte versuchen Sie es später noch einmal.\n";
echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
exit (); // PHP-Script beenden
}
Verpack das doch gleich alles mit in der db.inc.php.
$mysql = db_connect('datenbankname') und fertig. Vielleicht noch eine default-Datenbank für $link=db_connect(); Jedefnalls irgendetwas, damit Du den Code da an der Stelle los wirst.
Zitat:
}

}





}
}
}
mysql_close();
}
So etwas sollte man mE wenn möglich vermeiden. Du verwendest im Fehlerfall eh schon exit(). Dann zieh die Fehlerbehandlung einfach vor und handel dann "ungestört" den Regelfall ab.
PHP-Code:
if (!file_exists('update/uni.xml')) {
  exit(
'Konnte uni.xml nicht öffnen.');
}

$xml simplexml_load_file('update/uni.xml');
if(!
$xml) {
  exit(
'Konnte uni.xml nicht einlesen.');
}

$Datum date("d.m.Y"); 
Zitat:
foreach($xml->sector as $sektor) {
foreach($sektor->planet as $planet) {
$planet['coords'] = sprintf("%06d", $planet['coords']);
$planet['coords'] = sprintf("%s-%s-%s",
substr($planet['coords'],0,2),
substr($planet['coords'],2,2),
substr($planet['coords'],4,2));
// Prüfen ob der Planet einen User Name hat. Wenn ja wird die Zeile ausgeben, wenn nein, passiert nichts
if(!empty($planet['user_name'])) {
Zitat:
wenn nein, passiert nichts
doch doch, da ist schon was passiert. Du hast die Koordinaten unnötigerweise aufbereitet.
Zitat:
$planet['coords'] = sprintf("%s-%s-%s",
Wenn Du die Koordinaten so in der Datenbank speicherst, kannst Du mit SQL effizient nur noch nach einzelnen gesamt Koordinaten suchen, nicht mehr nach "alle Planeten von Spieler X in den Galaxien 3 bis 9". Dafür brauchst Du die Komponenten einzeln.
PHP-Code:
foreach($xml->sector as $sektor) {
    foreach(
$sektor->planet as $planet) {
        if(!empty(
$planet['user_name'])) {
            
$coords str_split(sprintf("%06d"$planet['coords']), 2);
            if(empty(
$planet['alli_tag'])) { $planet['alli_tag'] = 'keine'; } 
an der Stelle hast Du die Daten aufbereitet. Was danach kommt, dient der Speicherung. Und dafür ist es egal, wo die Daten herkommen oder wie sie aufbereitet wurden. Das würde ich in eine Funktion auslagern.
PHP-Code:
foreach($xml->sector as $sektor) {
  foreach(
$sektor->planet as $planet) {
    if(!empty(
$planet['user_name']))
    {
      
$coords str_split(sprintf("%06d"$planet['coords']), 2);
      if(empty(
$planet['alli_tag'])) { $planet['alli_tag'] = 'keine'; }
      
foo($mysql$coords$planet);
    }
  }

Und schon sieht es wesentlich übersichtlicher aus.
David ist offline  
Alt 21.05.2008, 14:20  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von PeopleSaw Beitrag anzeigen
allerdings mach ich irgendwas falsch
Nein, du machst vieles falsch!
  1. Hast du mal die Forumsregeln nicht gelesen, oder mindestens nicht eingehalten.
  2. Du hast du keine konkrete Frage gestellt.
  3. Du machst SELECT-Abfrage, die du nie auswertest
  4. Du benutzst SELECT * FROM
  5. Wozu die Ausgabe von Datenbank-Resourcen ($resultx) gut sein soll, weiss ich auch nicht
  6. Du hast error_reporting nicht auf E_ALL gesetzt
  7. Du fragst mysql_error() nicht ab
  8. Einiges hat dir David schon gesagt
Wenn du dann alle diese Punkte bereinigt hast, dann bist du sicher auch in der Lage, eine konkrete Frage zu stellen.
__________________
Gruss
L
lazydog ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ordner auslesen und während des auslesen sortieren Dooki PHP Tipps 2008 6 14.05.2008 17:50
Adresszeile auslesen / auswerten danielx11 PHP Tipps 2008 1 20.04.2008 23:03
Vom Browser verschickte Daten auslesen und anzeigen? andy32 PHP Tipps 2008 3 22.08.2007 18:33
[Erledigt] Datenbank auslesen mit register_globals off PHP Tipps 2007 14 03.01.2007 17:12
[Erledigt] gelöst: Tabelle auslesen -&amp;amp;amp;amp;gt; Gleiche Einträge nur 1 Mal Datenbanken 3 31.03.2006 01:44
Textdatei auslesen, aber ohne Komentare HSFighter PHP Tipps 2006 31 23.02.2006 10:07
Cookies auslesen HSFighter PHP Tipps 2007 2 19.11.2005 14:56
[Erledigt] bestimmte ID's auslesen als array PHP Tipps 2007 2 31.10.2005 20:23
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
CSV Datei rückwärts auslesen Schubi PHP Tipps 2005-2 16 12.09.2005 19:34
[Erledigt] Daten aus einer Datenbank auslesen Datenbanken 2 04.09.2005 19:13
[Erledigt] nächste Zeile einer Db auslesen? PHP Tipps 2005-2 7 01.08.2005 00:11
auslesen und nochmals auslesen?! $$$ ThiKool $$$ PHP Tipps 2005 23 10.03.2005 19:43
[Erledigt] Auslesen von Text incl. &quot; aus Textfeld PHP Tipps 2007 4 04.01.2005 13:30
[Erledigt] Daten von anderer Homepage auslesen PHP Tipps 2004-2 5 02.12.2004 18:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xml auswerten, php xml auswerten, xml mit php auswerten, xml auswerten php, rfactor xml auslesen, http://www.php.de/php-tipps-2008/1318-xml-auslesen-und-auswerten.html, xml dateien auswerten, rfactor xml auswerten, javascript xml lesen, javascript xml auslesen, javascript xml auswerten, xml daten auswerten, xml mit javascript auslesen, mit javascript xml auswerten, xml javascript auslesen, xml auswerten javascript, php script xml auslesen, simplexml_load_file datum, xml in php auswerten, php xml datei auswerten

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum