php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.03.2006, 15:37  
Neuer Benutzer
 
Registriert seit: 13.09.2005
Beiträge: 14
marcels
Standard Mysql / Array Problem

Hallo

Hoffentlich ist das das richtige Forum für meine Frage .

Also folgendes ist vorhanden:
Code:
mysql tabelle "country"
spalte c_id
spalte country

mysql tabelle "region"
spalte region_id
spalte c_id
spalte region

mysql tabelle "ort"
spalte ort_id
spalte c_id
spalte region_id
spalte ort

Daraus muss ich jetzt für die weiterverarbeitung ein Array mit folgender Struktur erzeugen


$array["region"] = region_id
bzw.
$array["region"]["ort"] = ort_id


Das Problem ist, dass nicht alle regionen einen unterort haben. Wie lese ich denn das am besten aus? Braucht jetzt nicht den ganzen Code hinzuschreiben. Sagt mir einfach so stichwort artig wann was wohin auslesen. Bin jetzt schon stunden am rumprobieren. funktionieren tuts leider immernoch nicht.

Vielleich kann mir ja jemand helfen. Danke schon mal.
Gruss M

Edit:
PHP-Code:
    $temp = array();
    
$temp['Vancouver']['ort1']                    =    'region_id=1&ort_id=1';
    
$temp['Vancouver']['ort2']                    =    'region_id=1&ort_id=2';
    
$temp['Vancouver']['ort3']                    =    'region_id=1&ort_id=3';
    
$temp['Vancouver']['ort4']                    =    'region_id=1&ort_id=4';
    
$temp['Victoria']['ort blbla 1']            =    'region_id=2&ort_id=5';
    
$temp['Victoria']['ort blbla 2']            =    'region_id=2&ort_id=6';
    
$temp['Victoria']['ort blbla 3']            =    'region_id=2&ort_id=7';
    
$temp['Sonstwo']['anderer ort 1']            =    'region_id=3&ort_id=8'
Beispiel array. PHPtags funktionieren irgendwie nicht sorry
marcels ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.03.2006, 16:39  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Der Select folgendermassen:

SELECT blabla FROM
country LEFT OUTER JOIN region
ON country.c_id=region.c_id

Wenn im resultierenden die spalten "region_id" und "region" nichts sinnvolles enthalten (z.B. Vergleich region_id mit numerisch 0), ist das eine leere Country. Mit etwas Fantasie und Überlegung und einem Nachschlag in einem SQL-Tutorial bezüglich JOINs kommst auch dahinter, wie das funktioniert und wie man das auf die Orte erweitert....

Hilft das als Denkanstoss?
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 23.03.2006, 17:03  
Neuer Benutzer
 
Registriert seit: 13.09.2005
Beiträge: 14
marcels
Standard

Hmmm Danke schon mal.

Etwas genauer wäre natürlich besser. Viel weiss ich noch nicht damit anzufangen. Bin jetz mal am lesen über LEFT OUTER JOIN.
marcels ist offline  
Alt 23.03.2006, 17:09  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Wie gesagt, informiere dich über die Arbeitsweise von LEFT OUTER JOIN und probiere den Select mal aus im PHPMyAdmin (SELECT * FROM statt SELECT blabla FROM), dann siehst du, wie das Ergebnis zurückkommt. Das sollte dir bei der Auswertung eigentlich helfen. Zwischen region und ort sähe es etwa so aus:

Code:
SELECT * FROM
region LEFT OUTER JOIN ort
ON region.region_id=ort.region_id AND region.c_id=ort.c_id
Wenn du in Mathe sowas wie Schnittmengen gut verstanden hast, wird das JOIN prinzipiell nichts neues sein, denn JOIN lässt sich mit der Mengenlehre gut erklären
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 23.03.2006, 17:25  
Neuer Benutzer
 
Registriert seit: 13.09.2005
Beiträge: 14
marcels
Standard

Danke nochmals

Ich krieg jetzt immerhin ein resultat zwar noch nicht ganz das was ich will. Aber das wird dann schon irgendwie klappen.

melde mich wieder wenn ich nicht weiterkomme.
marcels ist offline  
Alt 23.03.2006, 17:31  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Nach dem, wie du es oben schreibst, solltest du genau das rauskriegen was du brauchst....

Egal, wenns auch nur annähernd passt und du das Gefühl hast, besser vorwärts zu kommen als vorher, wundere ich mich nicht weiter...

Aber nochmal so am Rande unter uns: Wo genau passt das nicht? Am besten mit Beispieldaten.... Vielleicht hab ich in deinem Post was übersehen und du bist nun auf der falschen Fährte....
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 23.03.2006, 17:42  
Neuer Benutzer
 
Registriert seit: 13.09.2005
Beiträge: 14
marcels
Standard

Also
das ist der code
PHP-Code:
<?php
        $sql 
"SELECT
                    *
                FROM 
                    fotos_sub
                LEFT OUTER JOIN
                    fotos_subsub
                ON
                    fotos_sub.sub_id=fotos_subsub.sub_id AND fotos_sub.c_id=fotos_subsub.c_id;"
;                    
        

        
$result mysql_query($sql) OR die(mysql_error());
        while (
$row mysql_fetch_assoc($result)) {
        
$arr[$row['sub']][$row['subsub']] = $row['sub_id'];

?>
rausgekommen ist das
Code:
Array
(
    [Cancun] => Array
        (
            [] => 
        )

    [Mexico City] => Array
        (
            [] => 
        )

    [Teotihuacan] => Array
        (
            [] => 
        )

    [Tequesquitengo] => Array
        (
            [] => 
        )

    [Ottawa] => Array
        (
            [Subsub von ottawa] => 6
        )

    [Vancouver] => Array
        (
            [Subsub von vancouver] => 7
        )

    [Apan] => Array
        (
            [] => 
        )

)
Ist noch nicht ganz was ich brauche. Achja... des verständnis wegen habe ich den tabellen andere namen gegeben.
tabelle country = fotos_country
tabele region = fotos_sub
tabelle ort = fotos_subsub
marcels ist offline  
Alt 23.03.2006, 17:45  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Ist noch nicht ganz was ich brauche.
Inwiefern?
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 23.03.2006, 17:58  
Neuer Benutzer
 
Registriert seit: 13.09.2005
Beiträge: 14
marcels
Standard

Ich wusst das die du diese Frage stellen wirst

Das bin ich gerade am herausfinden.

Also mal von Anfang an.

$_GET['c'] enthält die c_id aus der tabelle fotos_country

Wenn $_GET['c'] einen Wert hat brauche ich alle dazugehörenden Werte der anderen Tabellen.

$_GET['c'] = 1 dann brauche ich alle Einträge der tabelle fotos_sub mit c_id = $get

desweiteren

alle einträge der tabelle fotos_subsub mit c_id = $get

irgendwie müsste dann so ein array entstehen

$array[sub][subsub] = sub_id & subsub_id

wenns keine subsub hat

$array[sub] = sub_id

Ich weiss schon... meine Erklärung ist eine Katastrophe. Das kommt daher weill ich selber nicht so wirklich weiss wovon ich rede Ich kann dir nur sagen was ich habe (die 3 tabellen) und wie es am schluss aussehen sollte (das array).

so jetzt bin ich fertig. mal sehen was jetzt passiert
marcels ist offline  
Alt 23.03.2006, 18:27  
Neuer Benutzer
 
Registriert seit: 13.09.2005
Beiträge: 14
marcels
Standard

Also ES GEHT

Mysql spezialisten würden mich für meine konstruktion wahrscheinlich aufhängen. Aber zumindest geht. Da das ja für nichts kommerzielles genuzt wird ist das schon in Ordnung.

für die die es interessiert.
PHP-Code:
<?php
        $sql 
"SELECT
                    *
                FROM 
                    fotos_sub
                JOIN
                    fotos_subsub
                ON
                    fotos_sub.sub_id=fotos_subsub.sub_id AND fotos_sub.c_id=fotos_subsub.c_id
                WHERE
                    fotos_subsub.c_id = '"
.$_GET['c']."';";                    
        

        
$result mysql_query($sql) OR die(mysql_error());
        if(!
mysql_num_rows($result)){
            
$sql "SELECT
                        sub,
                        sub_id
                    FROM
                        fotos_sub
                    WHERE
                    fotos_sub.c_id = '"
.$_GET['c']."';";
                    
                
$result mysql_query($sql) OR die(mysql_error());
                while (
$row mysql_fetch_assoc($result)) {
                
$arr[$row['sub']] = $row['sub_id'];
                }
            }                    
        while (
$row mysql_fetch_assoc($result)) {
        
$arr[$row['sub']][$row['subsub']] = $row['subsub_id'];
        }

?>
marcels 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
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Auswahlfeld in MYSQL abspeichern ( Array Problem ) VodKen PHP Tipps 2008 16 14.05.2008 14:02
[Erledigt] MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
MySql Fels Ã* la "2,43,43,43" zu Array PHP Tipps 2007 2 27.12.2005 15:00
[Erledigt] Problem mit Sonderzeichen PHP -&gt; MySQL -&gt; HTML PHP Tipps 2007 18 07.12.2005 15:23
[Erledigt] Problem beim verbindungsaufbau zum Mysql Server Datenbanken 9 27.10.2005 11:27
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
MySQL &amp;amp; PHP: Problem mit Password() Datenbanken 10 19.09.2005 11:00
Problem mir einem Array PHP Tipps 2005-2 5 11.08.2005 11:33
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Problem beim laden eines Array PHP Tipps 2005-2 4 16.07.2005 20:12
mysql installations problem Datenbanken 4 16.02.2005 18:46
[Erledigt] Problem mit PHP und MYSQL Datenbanken 6 01.08.2004 05:59

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
outer join array, mysql left join als array, mysql schnittmenge, mysql join array, mysql array join, mysql array java, mysqlarray, mysql spalte array, beispiel mysql array, left outer join array, mysql array, mysql left join array, array mysql java

Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.