Arrays nach bestimmten PLZ durchlaufen



  • Hallo Zusammen

    Mein Problem ist folgendes:
    1. Ich weiss nicht wie viele PLZ ein User registriert. Das können drei oder auch nur eine sein.

    2. Für jede PLZ gibt es eine Abfrage. Jede Abfrage enthält Daten wie zum Beispiel:
    Temperatur 28, Luftfeuchte 12 Prozent und so weiter. Diese Daten erhalte ich in Rohform. Sprich: 28;12 etc.. Es wird mit Semikolon getrent.

    Ich will diese Daten dann in ein Array speichern also mach ich ein explode(";", getArrayFromURL). So. Das ganze ist nun in einem Array.

    3. Die Daten werden in die DB gespeichert. Natürlich in 144 Läufen. Sprich, die URL liefert Rohdaten im gleichen Rythmus 144 mal. Eine Zeile ist Temperatur, Luftfeuchte, Ortschaft, Cape als Beispiel. Die zweite Zeile wieder dasselbe in derselben Reihenfolge, nur mit anderen Daten. Das heisst die erste Zeile ist für 1 Uhr, die zweite für 2 Uhr. Und das gibt es 144 mal.

    Und jetzt die Knacknuss:

    Wie bringe ich es fertig dass die Daten für eine oder meherere Ortschaft(en) (ich weiss ja nicht wie viele es sind) in 144 Läufen in die Datenbank eingeragen werden können? Vor allem wenn ich die Daten in einem Array habe. Temperatur ist zum Beispiel dann array[39]. Danach gibt es 18 weitere Werte bis die nächste Temperatur (von Lauf 2) kommt. Das wäre dann array[39+18].

    Das Script soll automatisch die Arraywerte um also plus 18 dazurechnen.
    Das heisst ein Beispiel:

    Temp Luft Zone
    1. Lauf: 22 Grad 88% 1
    2. Lauf: 18 Grad 17% 3

    Demnach ist der 1.Lauf: array[39],array[40],array[41]. Der zweite Lauf ist dann array[57],array[58],array[59] also der Ist immer um 18 rauf gegangen für eine weiter Zeile. Schlussendlich gibt es 144 Zeilen.

    Wie realisiere ich das am besten?
    Mir wurde schon ein wenig geholfen aber ich komme da nicht weiter versuche alles aber was ist mit "getDatenVariante" gemeint?

    Mach ich vor dem $arr_DatenDetail eine [] dann gehts, aber ich erhalte immer nur 0.

    $PLZ = "25264";
    $postleitzahlen = explode(",",$PLZ);
    
    function get_website($url)
    {
        $website = NULL;
        $ch = curl_init($url);
    
        curl_setopt ($ch, CURLOPT_HEADER, FALSE);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
    
        $website = curl_exec ($ch);
    
        curl_close ($ch);
    
        return $website;    
    }
    
      $arr_DatenVariante['16-FelderProDatenSatz']['Temperatur']       = array('BASE_COL' => 16 , 'MAX_COL' => 16);
      $arr_DatenVariante['16-FelderProDatenSatz']['Luftfeuchtigkeit'] = array('BASE_COL' => 8  , 'MAX_COL' => 16);
    
      $arr_DatenVariante['18-FelderProDatenSatz']['Temperatur']       = array('BASE_COL' => 16  , 'MAX_COL' => 18);
      $arr_DatenVariante['18-FelderProDatenSatz']['Luftfeuchtigkeit'] = array('BASE_COL' => 7   , 'MAX_COL' => 18);
    
      foreach($postleitzahlen as $postleitzahl) {
    
          $arr_Daten         = get_website("http://my.meteoblue.com/dataApi/dispatch.pl?&apikey=MTY2MDcyMjU0&mac=feed&paramtype=datafeed&iso2=ch&featID=".$postleitzahl."&type=proWeather&dt=1&fcstlength=144");
    
          $str_DatenVariante = getDatenVariante($arr_Daten);
    
          $arr_DatenVarianteDetail = $arr_DatenVariante[$str_DatenVariante];
    
          for($int_Tag = 0,$int_MaxTage = 6; $int_Tag < $int_MaxTage;$int_Tag++)
          //for($int_Tag = 0,$int_MaxTage = 1; $int_Tag < $int_MaxTage;$int_Tag++)
          {
              for($int_Stunde = 1,$int_MaxStunden = 24;$int_Stunde <= $int_MaxStunden;$int_Stunde++)
              {
                    $int_Multiplikator = $int_MaxStunden*$int_Tag+$int_Stunde;
    
                    //echo $int_Multiplikator.'<br />';
                    $str_sql = "INSERT INTO tabelle SET";
    
                    foreach($arr_DatenVarianteDetail as $str_TabellenFeld => $arr_FeldDetails )
                    {
                        $int_FeldKey = $arr_FeldDetails['BASE_COL']+$arr_FeldDetails['MAX_COL']*$int_Multiplikator;
                        //echo $int_FeldKey.'<br />';
                        $str_sql .= $str_TabellenFeld." = '".$arr_Daten[$int_FeldKey]."',";
                    }
                    $str_sql = rtrim($str_sql,',');
    
                  // etc pp
              }
          }
      }
    

    Was wird hier mit "getDatenVarainte" gemeint??? Schreibe ich dort $arr_DatenVariante['16-FelderProDatenSatz'] rein oder sonst was kommt not suplied argument for foreach oder illegal parameter. Mach ich aus der zweiten Zeile str_DatenArray[] gehts aber ich erhalte überall nur ne 0.

    Kann mir hier irgendwer mal auf die Sprünge helfen? Habe schon vieles versucht doch nix hat genützt.

    Gruss
    Dominic


Anmelden zum Antworten