SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 10.04.2010, 12:14:39
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: XML aus MySQL auslesen

Ich denke du willst deinen alten Webshop auf einen neuen Umziehen und musst daher den Inhalt der XML Dateien in die neue DB-Tabelle schreiben?

Ansonsten:
Durch deinen SELECT auf die alte DB-Tabelle bekommst du ja alle XML-Dateien. Diese kannst du dann per XML-Manipulation auslesen und daraus ein neues XML-File erstellen. Du kannst sie natürlich auch sofort in deine neue DB-Tabelle schreiben, was dir ne Menge Zeit und Arbeit ersparen würde.

Die Ausgabe, wie du sie zur Zeit verwenden willst, nutzt dir ja nicht wirklich etwas. Es sei denn, du willst jeden Datensatz dir einzeln ansehen und dann erst in die neue Tabelle schreiben.
Für Testzwecke, ob du alle Elemente richtig ansprichst, ist sowas natürlich gut geeignet.
Mit Zitat antworten
  #12  
Alt 10.04.2010, 12:24:12
Benutzerbild von atomicbunny
atomicbunny atomicbunny ist offline
Anfänger
 
Registriert seit: Apr 2010
Alter: 57
Beiträge: 25
AW: XML aus MySQL auslesen

Nee, leider nicht. Im neuen Shop werden die Artikeldaten nicht in einer XML Datei „gekapselt“, sondern stehen dort in jeweils einer eigenen Spalte.

Also im alten Shop gibt’s ne Tabelle „content“ und dort eine Spalte „body“ wo eine XML Datei mit den Artikeldaten zu finden ist. Und diese Artikeldaten muss ich auslesen und in der neuen Datenbank in die jeweiligen Spalten für Art.Nr. , Beschreibung, usw eintragen.

Ich hab nun mit
Code:
SELECT
  body 
FROM content

INTO OUTFILE '/Users/mario/Desktop/result.txt';
alles in einer Datei (aus der ich eine XML gemacht habe). Wenn ich die nun mit der xmlread.php von oben bearbeite, bekomme ich alles schön angezeigt. Nur: Wie lese ich nun die einzelnen td's und tr's wieder in die neue DB? Oder erstelle eine CSV Datei und mache einen generischen Import in die neue DB? Ich glaub ich hab immer noch irgendwas grundsätzlich nicht verstanden. ;-)

Viele Grüße


Mario
Mit Zitat antworten
  #13  
Alt 10.04.2010, 12:37:52
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: XML aus MySQL auslesen

Zitat:
Zitat von atomicbunny Beitrag anzeigen
[..] Ich glaub ich hab immer noch irgendwas grundsätzlich nicht verstanden. ;-)
Sorry, aber hast Du Dir die letzten beiden Posting vor Deinem durchgelesen? Und verstanden?

Klar viele Wege führen nach Rom. Warum willst Du aber den umständlichen nutzen? Urvater und ich haben doch versucht Dir den "kurzen" Weg zu erklären. Was hast Du an der Beschreibung nicht verstanden?

Hier die zusammengefasste Wegbeschreibung:
1. SELECT body FROM datei ...
2. while(gefundene Datensätze) manipuliert mit SimpleXML
3. INSERT INTO neu Struktur

fertig!

Noch Fragen/Unklarheiten? Dann frage!
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #14  
Alt 10.04.2010, 12:56:57
Benutzerbild von atomicbunny
atomicbunny atomicbunny ist offline
Anfänger
 
Registriert seit: Apr 2010
Alter: 57
Beiträge: 25
AW: XML aus MySQL auslesen

Urvaters Antwort hab ich erste gesehen, als ich meine schon abgeschickt hatte.

Ich wäre schon für einen Weg dankbar. Umständlich oder nicht. Womit ich ein Problem habe, ist die Manipulation. Auslesen ja, Einfügen ja. Aber wie bekomme ich die Datensätze so geändert, dass ich sie einfügen kann?

Ich kann das als Anfänger auf diesem Gebiet wahrscheinlich auch schlecht erklären. Sorry. Ich geh was essen und kämpf mich dann durch das „while“ Kapitel ...


Viele Grüße


Mario
Mit Zitat antworten
  #15  
Alt 10.04.2010, 13:48:53
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: XML aus MySQL auslesen

Ich hab mir noch einmal deine geposteten Graphiken angesehen.

Nach dem SELECT, den vt1816 unter Punkt 1 nennt nimmst du eine WHILE-Schleife ob noch ein Ergebnis vorhanden ist.
So wie ich die spalte 'body' sehe enthält sie das komplette XML als String.
Innerhalb der WHILE-Schleife könntest du diese dann mit simplexml_load_sring einlesen und die einzelnen Objekte für den Insert in deine neue DB vorbereiten.

Es ist nicht erkennbar, wie die neue Tabelle aufgebaut ist. Daher kann ich dir auch kein Beispiel posten.
Nach Erzeugen des INSERT läßt du diesen Ausführen.

Dein Skript würde so deine komplette alte Tabelle durchlaufen bis kein Datensatz mehr vorhanden ist und diese gelichzeitig in die neue Tabelle schreiben.

Wenn es dir möglich ist solltest du dir auf jeden Fall noch einen Zähler einbauen, der dir am Ende anzeigt wieviele Datensätze in die neue Tabelle geschrieben wurden und du solltest zwingend Fehler abfangen. Geht irgend etwas zwischen durch schief könntest du ab dieser Stelle oder halt nur die betroffenen Datensätze erneut versuchen in die neue Tabelle zu schreiben.
Mit Zitat antworten
  #16  
Alt 10.04.2010, 17:09:08
Benutzerbild von atomicbunny
atomicbunny atomicbunny ist offline
Anfänger
 
Registriert seit: Apr 2010
Alter: 57
Beiträge: 25
AW: XML aus MySQL auslesen

Ich bekomme das auf die Schnelle mit der „while“ Schleife nicht hin. Da müssen die Artikel wohl doch neu im Shop eingegeben werden.

@urvater: Falls dein Hilfeangebot noch steht, hier die Daten. Es geht um sechs Artikeldaten (mehr waren im alten Shop nicht hinterlegt) und diese müssen in die folgenden Spalten in der DB:

XML string-------------------- DB Spalte

<name>---------------------- OXTITLE
<bestnr>--------------------- OXARTNUM
<groesse>------------------- OXUNITQUANTITY
<pic>------------------------- OXPIC1
<text>------------------------ OXLONGDESC
<preis>----------------------- OXPRICE

Die XML Struktur ist

Code:
<?xml version="1.0" encoding="UTF-8"?>
<content timestamp_de="2009-04-16 09:56:56.74">
<published>2009.02.18T00:00:00</published>
<name>Produkt 1</name>
<bestnr>54654</bestnr>
<groesse>56x89x98</groesse>
<pic>os_produktbild_01.jpg</pic>
<text>Produktbeschreibung</text>
<preis>1535</preis>
</content>
Wie gesagt, ich habe alle Artikel nun auch in einer einzigen XML Datei. Es würde also auch „simplexml_load_file“ gehen. Aber nun komm ich nicht weiter.


Viele Grüße


Mario
Mit Zitat antworten
  #17  
Alt 10.04.2010, 17:17:47
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: XML aus MySQL auslesen

Zitat:
Zitat von atomicbunny Beitrag anzeigen
Ich bekomme das auf die Schnelle mit der „while“ Schleife nicht hin.
Es geht ja nicht um Schnelligkeit.


Zitat:
Zitat von atomicbunny Beitrag anzeigen
[...]
Es würde also auch „simplexml_load_file“ gehen. Aber nun komm ich nicht weiter.
Was hast Du denn schon (an Code)? Wo kommst Du nicht weiter?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #18  
Alt 10.04.2010, 18:48:41
Benutzerbild von atomicbunny
atomicbunny atomicbunny ist offline
Anfänger
 
Registriert seit: Apr 2010
Alter: 57
Beiträge: 25
AW: XML aus MySQL auslesen

Bei mir geht’s nicht um Schnelligkeit. Das ist ja auch ein guter Grund, PHP endlich mal richtig zu lernen.

Mein Kunde (für den ich HTML, CSS und das ganze Grafikdesign mache) steht etwas unter Zeitdruck. Der alte Shop läuft seit Monaten nicht richtig und steht nun kurz vor dem Totalausfall. Und nun wo er sich (endlich) für eine andere Lösung entschieden hat, will ihm die Agentur beim Datenexport nicht helfen.

Ich hab noch Probleme ganz grundsätzliche Abläufe zu verstehen.
Ich hab verstanden, wie ich mit Sequel Pro (oder phpMyAdmin) durch SELECT-FROM-INTO OUTFILE aus der DB was auswähle und in einer externen Datei speichere. Ok, ist für Euch Kindergeburtstag, aber für mich schon mal ein Erfolg. ;-) Jetzt wird es haarig (und vielleicht auch witzig für Euch). Ich denke, ich muss die neue Datenbank mit der geforderten, aber leeren, Struktur anlegen (wird bei der Installation des Shops ja gemacht) und dort über Query die Inhalte der Datei in die entsprechende Tabelle und die Spalten einlesen.
Mir fehlt das Verständnis des gesamten Zwischenschritts. Wo laufen die php Anweisungen (z.B. simplexml_load_file) ab? In Sequel Pro über Query? In einem weiteren php file wie bei meinem Versuch heute morgen?

Ich kann verstehen, dass Euch das vielleicht nervt. Aber auch nach intensivem Studium von Literatur ist man nach einem Tag nicht der Gott. Wenn es nicht drängen würde, hätte ich mich auch erstmal bis zum erbrechen alleine da durch gewühlt. Werde ich nun auch weiter machen. Wie gesagt, ich möchte das schon lernen. Und wieder bedanke ich mich für Eure Hilfe bis hierher!

Viele Grüße


Mario
Mit Zitat antworten
  #19  
Alt 11.04.2010, 10:19:44
Benutzerbild von atomicbunny
atomicbunny atomicbunny ist offline
Anfänger
 
Registriert seit: Apr 2010
Alter: 57
Beiträge: 25
AW: XML aus MySQL auslesen

Update:

Ich hab nun verstanden, wie man eine Verbindung zur DB aufnimmt und Daten verändert. Da ich alle Artikeldaten bereits in der externen XML Datei habe, lade ich mit simplexml_load_file die gesamte Datei, lese die Arrays aus und füge die Werte in die DB ein. Grundsätzlich richtig?

Das mit der „foreach“ Schleife macht mir Kopfschmerzen. Da ist mir unklar, wie ich diese Werte dann in die VALUES der DB eintrage. Insgesamt sieht das im Moment bei mir so aus:

PHP-Code:
<?php

# XML Datei laden
$xml simplexml_load_file("result.xml");
print_r($xml);

# Array durchlaufen und Daten auslesen
foreach ($xml->system->content as  $item) {

}

# Verbindung zur Datenbank aufbauen und Daten einfügen
$db mysql_connect("localhost","root","root") or die ("Verbindung fehlgeschlagen");
mysql_select_db("xmltest",$db);
$SQL_statement="INSERT * INTO xmltest (OXARTNUM,OXTITLE,OXPRICE,OXUNITQUANTITY,OXLONGDESC,OXPIC1)
VALUES ()"
;
$resultset=mysql_query($SQL_statement)
mysql_close();

?>
Viele Grüße


Mario
Mit Zitat antworten
  #20  
Alt 11.04.2010, 19:37:18
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: XML aus MySQL auslesen

Du hast doch am Anfang eigentlich schon alles richtig gemacht. Allerdings hast du die Daten in eine Tabelle geschrieben anstatt sie in die DB per INSERT zu übertragen. Hier noch einmal dein eigenes Script.
PHP-Code:
$filename = 'body.xml'; 
     
    if(file_exists($filename)) { 
        $xml = simplexml_load_file($filename); 
        if($xml) { 
            foreach($xml->content as $content) { 
            ?> 
        <table> 
            <tr> 
                <td>Artikelnummer</td> 
                <td><?php echo $content->bestnr ?></td> 
            </tr> 
            <tr> 
                <td>Artikelname</td> 
                <td><?php echo $content->name ?></td> 
            </tr> 
            <tr> 
                <td>Artikelgroesse</td> 
                <td><?php echo $content->groesse ?></td> 
            </tr> 
            <tr> 
                <td>Thumbnail</td> 
                <td><?php echo $content->thumbpic ?></td> 
            </tr> 
            <tr> 
                <td>Artikelbild</td> 
                <td><?php echo $content->pic ?></td> 
            </tr> 
            <tr> 
                <td>Artikelbildgross</td> 
                <td><?php echo $content->bigpic ?></td> 
            </tr> 
            <tr> 
                <td>Artikelbeschreibung</td> 
                <td><?php echo $content->text ?></td> 
            </tr> 
            <tr> 
                <td>Artikelpreis</td> 
                <td><?php echo $content->preis ?></td> 
            </tr> 
            <tr> 
                <td>Währung</td> 
                <td><?php echo $content->euro ?></td> 
            </tr> 
 
        </table>
und so müsstest du es anpassen
PHP-Code:
$filename 'body.xml'
if(
file_exists($filename)) { 
    
$xml simplexml_load_file($filename); 
    if(
$xml) {
        
$db mysql_connect("localhost","root","root") or die ("Verbindung fehlgeschlagen");
        
mysql_select_db("xmltest",$db); 
        foreach(
$xml->content as $content) { 
            
$bestellnr $content->bestnr
            
$name $content->name
            
$groesse $content->groesse
            
$thumb $content->thumbpic
            
$pic $content->pic
            
$bigpic $content->bigpic;
            
$beschreibung $content->text
            
$preis $content->preis
            
$wäehrung $content->euro;
            
$SQL_statement="INSERT INTO xmltest (OXARTNUM,OXTITLE,OXPRICE,OXUNITQUANTITY,OXLONGDESC,OXPIC1)
VALUES ('"
.$bestellnr."','".$name."','".$preis."','".$groesse."','".$beschreibung."','".$pic."')";
            
$resultset=mysql_query($SQL_statement)
       }
        
mysql_close();
    }

Da ich dein eigenes Skript unverändert genutzt habe müsstest du die Variablen entsprechend deiner neuen Datei anpassen.

PS: Habe das * hinter dem INSERT entfernt, da es dort nicht hingehört. Die Reihenfolge der Variablen innerhalb des INSERT noch einmal gegen die Reihenfolge der benannten Spalten prüfen. Ich könnte mich ja verschaut haben.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche Hilfe Partygirl MySQLi/PDO/(MySQL) 10 01.03.2011 09:18:11
MySQL Tabelle auslesen und in Text Datei schreiben HariboGold MySQLi/PDO/(MySQL) 1 16.09.2009 23:41:01
ID oder Link Verknüpfung auslesen aus MySQL in einer Details.php PHPDummy PHP Grundlagen 2 14.06.2007 15:59:30
Auslesen und beschreiben einer MySQL Datenbank linux23 MySQLi/PDO/(MySQL) 8 10.12.2006 16:13:22
MySQL in Word auslesen Marth MySQLi/PDO/(MySQL) 2 16.01.2006 18:43:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:26:35 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt