php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.08.2010, 14:42  
Neuer Benutzer
 
Registriert seit: 12.08.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
W1nFr1ed befindet sich auf einem aufstrebenden Ast
Standard Mehrdimensionales Array eindimensional umstellen

Wie im Titel beschrieben, brauche ich Hilfe bei meinem mehrdimensionalen Array, ich möchte dieses Eindimensional darstellen, bzw. umstellen, damit ich dieses in eine sql datenbank speichern kann.

Hier mein bisheriger Code:

PHP-Code:
<?
    
require_once("config/connect.inc.php");
?>
<html>
<head>
</head>
<body>
Hallo <b>hier</b> kommt mysql test
<br><br>
<?

if (file_exists('bewertungen.xml')) 
    {
        
$array simplexml_load_file('bewertungen.xml');
        
        echo 
"Wert ist ".$array->Stammdaten->Record[0]->bewertungen->Record->Familienfreundlichkeit;
        echo 
"<br>";
        echo 
"<br>";
        echo 
"Gebiet ist ".$array->Stammdaten->Record[1]->Gebiet;
        
        echo 
"<pre>";
        
print_r($array);
        echo 
"</pre>";
        
        echo 
"<br>";
        echo 
"<br>";
        
        
        
//echo $array->ANGEBOT[0]->PREISTERMIN; -> verändert die Diemension in der das Array beginnt, springt genau in Angebot [0]
        
            
foreach ($array as $value
            {
            echo 
"Der aktuelle Wert ist: " $value "<br>";
                echo 
"<pre>";
                
print_r($value);
                echo 
"</pre>";
            exit ();
            }
        
    
        
//<pre> is nur für querys, variablen direkt per echo
        /*
        echo "<pre>";
        print_r($array);
        echo "</pre>";
        */
    

    else 
    {
        exit(
'Konnte beispiel.xml nicht öffnen.');
    }

//Auswahl der Zeilen aus der Tabelle
$query "SELECT * FROM restaurant";

mysql_query("INSERT INTO restaurant (`id`, `name`, `regioncode`, `sterne`, `ort`, `gebiet`, `land`) 
VALUES ('777', '', '', '', '', '', '');"
);


//Anfrage an MySQL senden
$result mysql_query($query) or die("Anfrage nicht erfolgreich");

//Anzahl der Datensätze ausgeben
$anzahl mysql_num_rows($result);
echo 
"Anzahl der Datensätze: $anzahl";
echo 
"<br>";

?>

</body>
</html>
W1nFr1ed ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.08.2010, 15:24  
Erfahrener Benutzer
 
Registriert seit: 17.08.2010
Beiträge: 216
PHP-Kenntnisse:
Fortgeschritten
Dormilich befindet sich auf einem aufstrebenden Ast
Standard

Also ich weiß, daß man einen mehrdimensionalen Array mittels RecursiveArrayIterator bzw. RecursiveIteratorIterator in einen eindimensionalen Array umwandeln kann, aber du hast da kein Array, sondern ein Objekt (das sich wie ein Array verhält)
Dormilich ist offline  
Alt 19.08.2010, 15:25  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Ich gehe mal davon aus du willst nicht das array in die DB schreiben sondern die werte die dieses array beinhaltet. Falls du doch das array speichern willst ist serialize() dein freund.

Ausserdem sehe ich deinem Code kein Array und $array kein array sondern ein SimpleXMLElement. Wie ist das besagte array überhaupt aufgebaut?
Squall ist offline  
Alt 19.08.2010, 16:20  
Neuer Benutzer
 
Registriert seit: 12.08.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
W1nFr1ed befindet sich auf einem aufstrebenden Ast
Standard

Hallo danke erstmal für die Antworten,

vorab, ja man merkt wahrscheinlich an meiner Ausdrucksweise, dass ich PHP Einsteiger bin, sorry für meine falsche Ausdrucksweise.

Wie Squall sagt, möchte ich die Werte von mehreren Bewertungen für Restaurants aus einer XML in eine Datenbank speichern, es hat 4 Dimensionen. Ich gebe noch einen Auszug über den Aufbau:

PHP-Code:
SimpleXMLElement Object
(
    [@
attributes] => Array
        (
            [
comment] => generated by Test AG
            
[creationTime] => 2010-04-16 21:00
        
)

    [
Stammdaten] => SimpleXMLElement Object
        
(
            [
Record] => Array
                (
                    [
0] => SimpleXMLElement Object
                        
(
                            [
Anrede] => SimpleXMLElement Object
                                
(
                                    [@
attributes] => Array
                                        (
                                            [
Kunde_Korrektur] => 
                                        )

                                )

                            [
Titel] => SimpleXMLElement Object
                                
(
                                    [@
attributes] => Array
                                        (
                                            [
Kunde_Korrektur] => 
                                        )

                                )

                            [
Vorname] => SimpleXMLElement Object
                                
(
                                    [@
attributes] => Array
                                        (
                                            [
Kunde_Korrektur] => 
                                        )

                                )

                            [
Name] => SimpleXMLElement Object
                                
(
                                    [@
attributes] => Array
                                        (
                                            [
Kunde_Korrektur] => 
                                        )

                                )

                            [
Alter] => SimpleXMLElement Object
                                
(
                                )

                            [
email] => SimpleXMLElement Object
                                
(
                                )

                            [
Restaurantkette] => MCD
                            
[BestellID] => MCD_28821
                            
[Leistungscode] => SimpleXMLElement Object
                                
(
                                )

                            [
Bewertungszeitpunkt] => 1271399418
                            
[Besuchsmonat] => 1269900000
                            
[Besucht_als] => paar
                            
[mit_Kinder] => 0
                            
[Alter_Kinder] => -1;-1;-1
                            
[Restaurantname] => McDonalds
                            
[ID] => 679
                            
[TopRegionsID] => 288
                            
[Sterne] => 4.5
                            
[Ort] => 187
                            
[Ort] => Frankfurt am Main
                            
[Gebiet] => Hessen
                            
[Land] => Deutschland
                            
[Agent] => SimpleXMLElement Object
                                
(
                                )

                            [
Hauptbewertungen] => SimpleXMLElement Object
                                
(
                                    [
Record] => SimpleXMLElement Object
                                        
(
                                            [
Restaurant] => 4
                                            
[Moebeliar] => 4
                                            
[Service] => 4
                                            
[Lage] => 4
                                            
[Essen] => 4
                                            
[Familienfreundlichkeit] => 5
                                            
[Fazit] => SimpleXMLElement Object
                                                
(
                                                )

                                            [
Weiterempfehlung] => 0
                                            
[Titel] => Enttäuschung
                                            
[InfoVeranstalter] => 0
                                            
[Tipps] => SimpleXMLElement Object
                                                
(
                                                )

                                            [
Sterne] => 3
                                        
)

                                ) 
W1nFr1ed ist offline  
Alt 19.08.2010, 16:28  
Erfahrener Benutzer
 
Registriert seit: 17.08.2010
Beiträge: 216
PHP-Kenntnisse:
Fortgeschritten
Dormilich befindet sich auf einem aufstrebenden Ast
Standard

Hm, als Anfänger wird das ein wenig schwierig, denn alles was mir einfällt, arbeitet mit Objekten (da deine Ausgangsvariable ja auch ein Objekt ist).

Man könnte es noch versuchen die XML-Datei über XSLT/WDDX in ein gewünschtes Zielarray umzuwandeln, mit dem man dann die DB füttert …

letzten Endes hängt ganz viel davon ab, wie der Array eigentlich aussehen soll.

Geändert von Dormilich (19.08.2010 um 16:33 Uhr).
Dormilich ist offline  
Alt 19.08.2010, 16:40  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Ich gehe mal davon aus dass du unter record mehrere Einträge hast (record[0], record[1] etc.). Dann kannst du folgendes mal versuchen:

PHP-Code:
foreach($array->Stammdaten->Record as $record) {
        echo 
"<pre>";
        
print_r($record);
        echo 
"</pre>";

Wenn das funktioniert muss du noch noch in der foreach ein array erstellen und dir die werte die du brauchst in das array packen. Un danach deinen query ausführen.
Squall ist offline  
Alt 19.08.2010, 16:54  
Neuer Benutzer
 
Registriert seit: 12.08.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
W1nFr1ed befindet sich auf einem aufstrebenden Ast
Standard

Also serh schln Squall, dass hat schonmal funktioniert.

Er gibt mir nun folgendes aus:

PHP-Code:
SimpleXMLElement Object
(
    [
Anrede] => SimpleXMLElement Object
        
(
            [@
attributes] => Array
                (
                    [
Kunde_Korrektur] => 
                )
.... 
usw
also jetzt soll ich dann ein array erstellen?

wären dann die values die ich übergebe z.b. bwei 3 records (ANREDE[0],TITEL[0],usw.) ???
W1nFr1ed ist offline  
Alt 19.08.2010, 17:05  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Nei, du musst auf $record zugreifen, ich sehe zwar keine inhalte aber gehe mal davon aus das du die gelöscht hast und sie normalerweise in Kunde korrektur stehen würden.

Für anrede würde sich dann folgendes ergeben:

PHP-Code:
echo $record->Anrede->@attributes['Kunde_Korrektur']; 
Überall wo Object steht kannst du mit -> zugreifen und wo array steht mit []
Squall ist offline  
Alt 20.08.2010, 09:57  
Neuer Benutzer
 
Registriert seit: 12.08.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
W1nFr1ed befindet sich auf einem aufstrebenden Ast
Standard

okay, also z.b. bei anrede ist der beispiel inhalt

PHP-Code:
<Record>
<
Anrede Kunde_korrektur="Frau">Frau</Anrede>
<
Vorname Kunde_korrektur="Andrea">Andrea</Vorname>
<
Alter>46-50</Alter>
<
Email>blub@t-online.de</Email>

usw bis...

<
Hauptbewertungen>
<
Record>
<
Restaurant>5</Restaurant>
...
<
Fazit>lorem ipsum</Fazit
Wie kann ich dann nun, die werte beio values in die DB schreiben?
W1nFr1ed ist offline  
Alt 20.08.2010, 10:36  
Erfahrener Benutzer
 
Registriert seit: 04.12.2008
Beiträge: 132
agundur befindet sich auf einem aufstrebenden Ast
agundur eine Nachricht über Skype™ schicken
Standard

Meines Erachtens besteht keine Notwendigkeit da erst ein Array zu erstellen ....
Du kannst Doch einfach durch Deine "Records" durchloopen und egal wie tief sie verschatelt sind immer direkt auf die Element zugreifen und damit Dein Query direkt erstellen.

inhalt von record.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<data>
	<Record>
		<Anrede Kunde_korrektur="Frau">Frau</Anrede>
		<Vorname Kunde_korrektur="Andrea">Andrea</Vorname>
		<Alter>46-50</Alter>
		<Email>blub@example.net</Email>
		<nested>
			<blub>bla</blub>
		</nested>
	</Record>
	
	<Record>
		<Anrede Kunde_korrektur="Frau">Herr</Anrede>
		<Vorname Kunde_korrektur="Andrea">Andreas</Vorname>
		<Alter>46-50</Alter>
		<Email>blub@example.com</Email>
		<nested>
			<blub>bla</blub>
		</nested>
	</Record>
</data>
PHP-Code:
$document =  new SimpleXmlIterator('./record.xml'nulltrue);
$data $document[0]->Record;
for( 
$data->rewind(); $data->valid(); $data->next()){
    
    
//print_r($data->current()->Vorname);
    //print_r($data->current()->nested->blub);
    
echo '<pre>';
    
$query 'INSERT INTO  table ( vorname, blub ) VALUES ( '.$data->current()->Vorname .','.$data->current()->nested->blub .')';
    
print_r($query);
    echo 
'</pre>';

__________________
AFFE ist nur im Dezimalsystem ein Palindrom.
agundur 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
Feed in Datenbank eintragen (Formate: json, php serialized, xml) high_five Datenbanken 5 17.06.2010 03:04
[Erledigt] Sortierung mehrerer Arrays philosapiens PHP Tipps 2010 16 08.06.2010 05:22
IE8 verliert Session Lenki PHP-Fortgeschrittene 10 25.04.2010 01:10
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
[Erledigt] Tabellen die sich selbst referenzieren Squall PHP Tipps 2009 19 04.08.2009 21:33
[Erledigt] array sortieren PHP Tipps 2004 17 13.05.2009 10:44
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mehrdimensionales array, http://www.php.de/php-einsteiger/70940-mehrdimensionales-array-eindimensional-umstellen.html, mehrdimensionale arrays php, php mehrdimensionale arrays, php mehrdimensionales array in eindimensionales, array eindimensional, mehrdimensionales array php, eindimensionales array php, php array in datenbank speichern, php array zweidimensionales speichern, php mehrdimensionales array aus datenbank, php mehrdimensionales array umwandeln, zweidimensionales array in eindimensionales ändern, php mehrdimensionales array speichern, php mehrdimensionales array in datenbank speichern, datenbankabfrage in eindimensionales array speichern php, php eindimensionales array, php mehrdimensionales array eindimensionales array umwandeln, mehrdimensionales array in eindimensionales array umwandeln php, xml eindimensionales array

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:12 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