Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Probleme bei LBS-Upgrade

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

    PHP Probleme bei LBS-Upgrade

    Hallo Zusammen,

    ich wollte den LBS *325 (WU Vorhersage 10 Tage in Datenarchive (0.3)) von wintermute einem kleinen Upgrade unterziehen und dies dann dem Autor vorschlagen ;-)

    Leider komme ich bei meinen Test nicht weiter und brauche Hilfe.

    Ziel ist, in einem Diagramm einen Tag um den anderen mit einer anderen Hintergrundfarbe zu versehen. Die Idee ist nun ein Flächendiagramm zu nutzen und in einem Archiv die Werte 0 und 1 für gerade und ungerade Tage vorzuhalten.

    Dies lässt sich "leicht" über den Modulo-Operator und den aktuellen Tag im Jahr realisieren. Daher habe ich u.a. folgende Zeile-Code in den LBS eingefügt:

    Code:
    case 14:     $v= intval(intval($hc->FCTTIME->yday) % 2);
                                        break;
    Problem: Es werden nur die ungeraden Tage ins Archiv geschrieben. Wenn eine 0 raus kommt, wird der Wert nicht geschrieben.

    Anfänglich hatte ich das ganze ohne intval. Das hat auch nicht funktioniert. Daher der Versuch alles in Integer-Form zu bekommen.

    Das Insert-Statement sieht wie folgt aus:

    Code:
    query("INSERT INTO archivKoData(date time, ms, targeted, gavalue) VALUES (FROM_UNIXTIME($t), '0', ".mysqli_real_escape_string($mysqli,$id).", ".mysqli_real_escape_string($mysqli,$v).")");
    Vielleicht liegt das ja an dem mysqli_real_escape_string? Aber dann dürften auch keine 0 Grad-Werte und 0mm-Werte in die übrigen Archive geschrieben werden.


    Edit: Gerade bei php.net gelesen, dass die Escape-Funktion auch eine ASCII 0 escaped!?
    Code:
    Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and Control-Z.
    Zuletzt geändert von MrIcemanLE; 06.12.2017, 11:54.
    Gruß
    Stefan

    #2
    Versuch doch mal das erste intval durch ein strval zu ersetzen.
    Es könnte ein Typenkonflikt sein.
    Warum brauchst du denn eigentlich das mysql_real_escape_string(). Es wird doch keine Nutzereingabe in die DB geschrieben und die Berechnung von $v liefert ja vermutluch nie Werte die escaped werden müssen.

    Kommentar


      #3
      Das escapen ist so im Original vorhanden, der Autor escaped lieber einmal zuviel als einmal zuwenig

      Was passiert denn, wenn Du das so machst?
      PHP-Code:
      case 14$v=($hc->FCCTIME->yday+0)%2; break; 
      Oder auf dieselbe Art in einen float zwingen?
      PHP-Code:
      case 14$v=($hc->FCCTIME->yday+0)%2+0.0; break; 

      Kommentar


        #4
        PHP-Code:
        case 14:     $v=strval($hc->FCTTIME->yday 2); 
        funktioniert! ... Danke!

        Vielleicht wäre das ein AddOn für deinen LBS wintermute ?

        Nur zu Neujahr entstehen ggf. zwei ungerade Tage nebeneinander.
        Gruß
        Stefan

        Kommentar


          #5
          Zitat von MrIcemanLE Beitrag anzeigen
          Vielleicht wäre das ein AddOn für deinen LBS wintermute ?
          Sicher... wieso nicht?
          Ich verstehe nur noch nicht genau wie das in der Visu realisiert werden und spaeter dann aussehen soll
          Und mit nur der switch-Erweiterung ist es nicht getan, da muss auch noch ein zusaetzlicher Eingang dran, oder?

          Kommentar


            #6
            Ist jetzt nicht perfekt, aber im Prinzip wollte ich die einzelnen Tage in dem Diagramm sichtbar machen. Daher ein fester Wertebereich von 0 bis 1 und die Legende ausgeblendet. Man erkennt an den ungeraden Tagen eine leichte Schattierung. Je nach Kontrast des Anzeigegerätes sieht man das deutlicher. Auf meinem iPad Mini ist es ganz gut zu erkennen.

            Es muss leider noch ein Eingang hinzu kommen um ein Datenarchiv dafür definieren zu können.
            Angehängte Dateien
            Gruß
            Stefan

            Kommentar


              #7
              Aha, verstanden
              Werd ich verbauen...

              Kommentar

              Lädt...
              X