Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql / Array Problem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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

  • #2
    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?
    [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
    Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        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
        [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
        Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

        Kommentar


        • #5
          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.

          Kommentar


          • #6
            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....
            [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
            Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

            Kommentar


            • #7
              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

              Kommentar


              • #8
                Ist noch nicht ganz was ich brauche.
                Inwiefern?
                [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
                Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

                Kommentar


                • #9
                  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

                  Kommentar


                  • #10
                    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'];
                            }

                    ?>

                    Kommentar


                    • #11
                      Ausser der Tatsache, dass das vielleicht auch in einem Select geht, ist dabei erstemal nix schlimmes. Schlimmer ist es, wenn du 500 SQLs dafür machst.

                      Solange du den Unterschied zwischen einem INNER JOIN (JOIN ist die Kurzform für INNER JOIN) und dem LEFT OUTER JOIN verstehst
                      [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
                      Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

                      Kommentar

                      Lädt...
                      X