Chaos mit mehreren Arrays

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

  • Chaos mit mehreren Arrays

    allo,

    ich habe folgendes Problem bei welchem ich dringend Hilfe benötige. Es geht hier um folgendes:

    Es gibt Finanzierungspläne (tblplanvarianten) welche einen festen Zinssatz pro Monat abwerfen, jedoch können auch Ausnahmen erfasst werden für einen oder mehrere Monate im Jahr (tblrendite_ausnahmen). Somit könnte dies z.B. so aussehen:

    Plan X hat z.B. einen festen Prozentsatz von 5% pro Monat, ausser in den Monaten Juni und Juli soll er 7% geben. Folglich habe ich mir 2 Abrfragen gebastelt welche folgende Funktion haben:

    - Prüfe ob Renditenausnahmen vorhanden sind in der Tabelle tblrendite_ausnahmen
    - Falls welche vorhanden sind, speichere diese in ein Array
    - Falls jedoch keine Einträge gefunden werden, nimm die Standardrendite aus tblplanvarianten

    Das ganze funktioniert recht gut, doch habe ich ein Problem, wenn mehrere Werte in der tblrendite_ausnahmen gefunden werden (alternative %-Sätze für Jan, Feb und Jul z.B.) dann, wird in der Schleife nur der erste Wert im Array ausgelesen und angezeigt. Ich denke es liegt daran, dass ich im Array nirgens auf den nächsten Datensatz springe um diesen in meiner for-Schleife zu prüfen. Ich vermute dass sowas wie (while ($row1 = mysql_fetch_array($result1)) fehlt, doch wenn ich das einbaue loopt meine Schleife mehr als 12x


    PHP-Code:
    <?php
    // Prüfen ob individuelle Renditen für den jeweiligen Monat
           // für den aktuellen Plan erfasst sind.

           
    $query1 "SELECT tblrendite_ausnahme.renditeprozent,
                             tblrendite_ausnahme.monat,
                             tblrendite_ausnahme.jahr
                     FROM    tblrendite_ausnahme, tblplanvariante
                     WHERE   tblplanvariante.id_plan = '" 
    .$_POST['id_plan'] ."'
                     AND     tblplanvariante.id_variante = tblrendite_ausnahme.id_variante
                     AND     tblrendite_ausnahme.jahr = '"
    .$aktuellesJahr."'
                     AND      tblplanvariante.geloescht = '0'
                     AND     tblplanvariante.aktiv = '1'
                     ORDER BY tblrendite_ausnahme.monat ASC"
    ;
           
               
    // Auslesen der Standardrendite des Plans

             
    $query2 "SELECT tblplanvariante.renditeprozent
                                 FROM    tblplanvariante
                                 WHERE   tblplanvariante.id_plan = '" 
    .$_POST['id_plan'] ."'
                     AND      tblplanvariante.geloescht = '0'
                     AND     tblplanvariante.aktiv = '1'"
    ;
                            
             
    $result2 mysql_query($query2$link);
             
    $row2 mysql_fetch_row($result2);        
               
             
    $result1 mysql_query($query1$link);


            
    $num1 mysql_num_rows($result1);
            
    $row1 mysql_fetch_array($result1);
        
    $rendite_prozent $row1['tblrendite_ausnahme.renditeprozent'];
        
    $rendite_monat $row1['tblrendite_ausnahme.monat'];
        
    $rendite_jahr $row1['tblrendite_ausnahme.jahr'];

           for (
    $v 1$v <= 12$v++) {
                if (
    $v == $row1[1]) {
                    
    //echo "vorhanden:  ".$v."  /  ".$row1[0]."<br>";
                    //echo $row1[1];
                    
    $myRendite $row1[0];
                       
    //while ($row1 = mysql_fetch_array($result1)){           
                    //    $Dataset->addPoint($v." / ".$row1[0]."% ", $row1[0]);
                       //}
                
    } else {
                    
    //echo "nicht:  ".$v."  /  ".$row2[0]."<br>";
                    
    $myRendite $row2[0];
                    
    //$Dataset->addPoint($v." / ".$row2[0]."% ", $row2[0]);        
                    //echo $row1[1];
                
    }
                
    $Dataset->addPoint($v." / ".$myRendite."% "$myRendite);        
           }
    ?>
    Ich hoffe es kann mir jemand helfe, ich bin am verzweifeln und versuch das Teil schon seit 2 Tagen zum laufen zu kriegen.

    thx, void.pixel

  • #2
    Kannst du nicht die Ausnahme-Werte zuerst in ein Array lesen, und später prüfen, ob es zu dem Monat einen Ausnahme-Wert gibt, etwa so:
    PHP-Code:
    $ausnahme_rendite = array();

    while (
    $row1 mysql_fetch_array($result1)) {
          
    $ausnahme_rendite[$row1['tblrendite_ausnahme.monat']] =           
                   
    $row1['tblrendite_ausnahme.prozent'];

    und dann unten
    PHP-Code:
    if (isset($ausnahme_rendite[$v])) {

    statt 

    if ($v == $row1[1]) { 
    gruß,
    ministry
    ich glaube

    Kommentar


    • #3
      ich vermute, dass Chaos in sql liegt und nicht in array.
      mir sind leider alle Kleinigkeiten nicht bekannt, aber ich glaube, dass diese Aufgabe mit einzigem Left Join zu lösen ist, ohne zusätzlichen array-durchlauf
      Slava
      bituniverse.com

      Kommentar

      Lädt...
      X