Array - Mysql - If-Abfrage

  • Um das Thema nochmal neu zu entfachen (nach dem HDD Crash des Forums) wie gewünscht mal das Stück Code und dazu auch eine SQL-TestDB

    Nicht wundern, hier sind nur zwei Kopierer enthalten, es sind durchaus mehr vorhanden, auch weit aus mehr Einträge als Werte für die Seitenzahlen... etc...
    Problem ist halt, dass wenn er Werte in der einen Tabelle "history_uint" nicht findet, müsste er dann die zweite Tabelle "history" durchsuchen, ob er da den Wert findet...

    Benötigt wird es um die Seitenzahlen der letzten drei Monate (Monatsweise) aus der Zabbix SQL-DB auszulesen.

    Spoiler anzeigen
    [autoit]


    #include <MySQL.au3>
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $items[27][9], $array_Tage[3][3]
    $SQL = _MySQLConnect("xxxx","xxxx","test","dein Server")

    [/autoit] [autoit][/autoit] [autoit]

    Abfrage_Drucker_Itemid()
    Abfrage_HostBeschreibung()
    Abfrage_Tage()
    Abfrage_Seitenanzahl()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Abfrage_Drucker_Itemid()
    $i = 1
    $var = _Query($SQL,"Select itemid, hostid FROM items WHERE description='Kopierer Gesamtseiten' OR description='Drucker TotalPages' OR description='Kyocera TotalPages';")
    With $var
    While NOT .EOF
    $items[$i][0]=.FIELDS("itemid").value
    $items[$i][1]=.FIELDS("hostid").value
    $i = $i +1
    .MoveNext
    WEnd
    EndWith
    $items[0][0]= $i
    Global $Abfrage_Seitenzahl[$items[0][0]][3]
    ;~ _ArrayDisplay($items, "datenNach befüllen")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Abfrage_HostBeschreibung()
    $i = 1
    For $j = 1 to $items[0][0]-1
    $stringbau2 = "Select host FROM hosts WHERE hostid='" & $items[$i][1] & "';"
    $hello = _Query($SQL,$stringbau2)
    With $hello
    While NOT .EOF
    $items[$i][2]=.FIELDS("host").value
    $i = $i +1
    .MoveNext
    WEnd
    Endwith
    Next
    ;~ _ArrayDisplay($items, "", "", "", "", "itemid|hostid|hostname")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Abfrage_Tage()
    $i = 1
    $date = _Query($SQL,"Select ( Select UNIX_TIMESTAMP(DATE_FORMAT(Last_day(Date(Now())- INTERVAL 1 MONTH), '%Y-%m-01 00:00:01')) ) As ErsterTagVormonat, ( Select UNIX_TIMESTAMP(DATE_FORMAT(Last_day(Date(Now())- INTERVAL 2 MONTH), '%Y-%m-01 00:00:01')) ) As ErsterTagVorVormonat, ( Select UNIX_TIMESTAMP(DATE_FORMAT(Last_day(Date(Now())- INTERVAL 3 MONTH), '%Y-%m-01 00:00:01')) ) As ErsterTagVorVorVormonat, ( Select UNIX_TIMESTAMP(DATE_FORMAT(Last_day(Date(Now())- INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59')) ) As LetzterTagVormonat, ( Select UNIX_TIMESTAMP(DATE_FORMAT(Last_day(Date(Now())- INTERVAL 2 MONTH), '%Y-%m-%d 23:59:59')) ) As LetzterTagVorVormonat, ( Select UNIX_TIMESTAMP(DATE_FORMAT(Last_day(Date(Now())- INTERVAL 3 MONTH), '%Y-%m-%d 23:59:59')) ) As LetzterTagVorVorVormonat;")
    With $date
    While NOT .EOF
    $array_Tage[1][0]=.FIELDS("ErsterTagVormonat").value
    $array_Tage[1][1]=.FIELDS("ErsterTagVorVormonat").value
    $array_Tage[1][2]=.FIELDS("ErsterTagVorVorVormonat").value
    $array_Tage[2][0]=.FIELDS("LetzterTagVormonat").value
    $array_Tage[2][1]=.FIELDS("LetzterTagVorVormonat").value
    $array_Tage[2][2]=.FIELDS("LetzterTagVorVorVormonat").value
    $i = $i+1
    .MoveNext
    WEnd
    EndWith
    ;~ _ArrayDisplay($array_Tage, "datenNach befüllen")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Abfrage_Seitenanzahl()
    $p = 0
    $st = 3
    $st2 = 4
    $nd = 0
    For $sm = 1 To 3
    $i = 1
    For $j = 1 to $items[0][0]-1
    $stringbau = "SELECT Max(value) AS MaxWert,Min(value) AS MinWert FROM history_uint WHERE itemid='" & $items[$i][0] & "' AND clock>='" & $array_Tage[1][$nd] & "' AND clock<='" & $array_Tage[2][$nd] & "';"
    $Abfrage_Seiten = _Query($SQL,$stringbau)

    [/autoit] [autoit][/autoit] [autoit]

    If $Abfrage_Seiten > 0 Then
    With $Abfrage_Seiten
    While NOT .EOF
    ConsoleWrite(.FIELDS("MinWert").value & @CRLF)
    $items[$j][$st]=.FIELDS("MinWert").value
    $items[$j][$st2]=.FIELDS("MaxWert").value
    $i = $i +1
    .MoveNext
    WEnd
    EndWith
    Else
    $stringbau = "SELECT Max(value) AS MaxWert,Min(value) AS MinWert FROM history WHERE itemid='" & $items[$i][0] & "' AND clock>='" & $array_Tage[1][$nd] & "' AND clock<='" & $array_Tage[2][$nd] & "';"
    $Abfrage_Seiten = _Query($SQL,$stringbau)
    With $Abfrage_Seiten
    While NOT .EOF
    ;~ ConsoleWrite(.FIELDS("MinWert").value & @CRLF)
    $items[$j][$st]=.FIELDS("MinWert").value
    $items[$j][$st2]=.FIELDS("MaxWert").value
    $i = $i +1
    .MoveNext
    WEnd
    EndWith
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Next
    $st = $st +2
    $st2 = $st2 +2
    $nd = $nd +1
    $p = $p +1

    [/autoit] [autoit][/autoit] [autoit]

    Next
    _ArrayDisplay($items, "Daten nach Abfrage", "", "", "", "itemdid|hostid|hostname|MonatHeute-3_min|MonatHeute-3_max|MonatHeute-2_min|MonatHeute-2_max|MonatHeute-3_min|MonatHeute-3_max")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    _MySQLEND($SQL)

    [/autoit]