Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z wykresem
UszaTek
post 17.01.2022, 20:07:51
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Witam,
próbuje wstawić wykres na swoją stronę lecz mam takie problemy:

Kod
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 13
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 22
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 13
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 22
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 45
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 54
Warning: implode(): Invalid arguments passed in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 70
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 77
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 86
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 110
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 119


A o to mój kod:

Kod
<?php

    $conn = mysqli_connect("xxx", "xxxt", "xxxx2$", "xst");xxxx
    
    if($conn === false)
    {
        die("ERROR: Could not connect. " .mysqli_connect_error());
    }

    function hourly($od,$do)
    {
        $query="SELECT * FROM `stat` WHERE `time` >= '{$od}' AND `time` <= '{$do}' ORDER BY `time` ASC";
        $result=mysqli_query($conn, $query);
    
        $g = Array();
        $wg = Array();
        $tg = Array();
        $elem = Array();
        $hours = Array();
        $dzz = 0;
    
        while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC))
        {
            $godzina = date('G',$r['time']);
            $g[$godzina] = $g[$godzina]+$r['Temperature'];
            $wg[$godzina]++;
        }

        foreach($g as $godz=>$Temperature)
        {
            $tg[$godz] = round($Temperature/$wg[$godz],2);
            $dzz++;
            $elem[] = "[{$dzz},{$tg[$godz]}]";
            $hours[] = "'{$godz}:00'";
        }

        $elem = implode(',',$elem);
        $hours = implode(',',$hours);
        return Array('e'=>$elem,'h'=>$hours);
    }

    function daily($od,$do,$mon)
    {
        $query="SELECT * FROM `stat` WHERE `time` >= '{$od}' AND `time` <= '{$do}' ORDER BY `time` ASC";
        $result=mysqli_query($conn, $query);
        
        $g = Array();
        $wg = Array();
        $tg = Array();
        $elem = Array();
        $hours = Array();
        $dzz = 0;

        while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC))
        {
            $dzien = date('d',$r['time']);
            $g[$dzien] = $g[$dzien]+$r['Temperature'];
            $wg[$dzien]++;
        }

        foreach($g as $dz=>$Temperature)
        {
            $tg[$dz] = round($Temperature/$wg[$dz],2);
            $dzz++;
            $elem[] = "[{$dzz},{$tg[$dz]}]";
            $days[] = "'{$dz}.{$mon}'";
        }

        $elem = implode(',',$elem);
        $days = implode(',',$days);
        return Array('e'=>$elem,'d'=>$days);
    }    

    function daily_day($od,$do,$mon)
    {
        $query="SELECT * FROM `stat` WHERE `time` >= '{$od}' AND `time` <= '{$do}' ORDER BY `time` ASC";
        $result=mysqli_query($conn, $query);
        
        $g = Array();
        $wg = Array();
        $tg = Array();
        $elem = Array();
        $days = Array();
        $dzz = 0;
    
        while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC))
        {
            $dzien = date('d',$r['time']);
            if(date('G',$r['time']) >= 23 OR date('G',$r['time']) < 6) { continue; }
            $g[$dzien] = $g[$dzien]+$r['Temperature'];
            $wg[$dzien]++;
        }

        foreach($g as $dz=>$Temperature)
        {
            $tg[$dz] = round($Temperature/$wg[$dz],2);
            $dzz++;
            $elem[] = "[{$dzz},{$tg[$dz]}]";
            $days[] = "'{$dz}.{$mon}'";
        }

        $elem = implode(',',$elem);
        $days = implode(',',$days);
        return Array('e'=>$elem,'d'=>$days);
    }

    function daily_night($od,$do,$mon)
    {
        $query="SELECT * FROM `stat` WHERE `time` >= '{$od}' AND `time` <= '{$do}' ORDER BY `time` ASC";
        $result=mysqli_query($conn, $query);
        
        $g = Array();
        $wg = Array();
        $tg = Array();
        $elem = Array();
        $days = Array();
        $dzz = 0;
    
        while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC))
        {
            $dzien = date('d',$r['time']);
            if(date('G',$r['time']) < 23 AND date('G',$r['time']) >= 6) { continue; }
            $g[$dzien] = $g[$dzien]+$r['Temperature'];
            $wg[$dzien]++;
        }
    
        foreach($g as $dz=>$Temperature)
        {
            $tg[$dz] = round($Temperature/$wg[$dz],2);
            $dzz++;;
            $elem[] = "[{$dzz},{$tg[$dz]}]";
            $days[] = "'{$dz}.{$mon}'";
        }

        $elem = implode(',',$elem);
        $days = implode(',',$days);
        return Array('e'=>$elem,'d'=>$days);
    }

    $hd = hourly(strtotime(date('d.m.Y').' 00:00'),strtotime(date('d.m.Y').' 23:59'));
    $hdy = hourly(strtotime('-1 day 00:00'),strtotime('-1 day 23:59'));
    $lm_o = daily(strtotime('01.'.date('m.Y').' 00:00'),strtotime(date('d.m.Y G:i')),date('m'));
    $lm_d = daily_day(strtotime('01.'.date('m.Y').' 00:00'),strtotime(date('d.m.Y G:i')),date('m'));
    $lm_n = daily_night(strtotime('01.'.date('m.Y').' 00:00'),strtotime(date('d.m.Y G:i')),date('m'));

?>


Ten post edytował UszaTek 17.01.2022, 20:08:17
Go to the top of the page
+Quote Post
trueblue
post 17.01.2022, 21:25:22
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Komunikaty wyraźnie wskazują błędy.
Przeczytaj pierwszy z nich i porównaj z kodem w danej linii.


--------------------
Go to the top of the page
+Quote Post
UszaTek
post 18.01.2022, 17:24:50
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 17.01.2022, 21:25:22 ) *
Komunikaty wyraźnie wskazują błędy.
Przeczytaj pierwszy z nich i porównaj z kodem w danej linii.


Błąd:
Kod
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 13


Linia 13:
Kod
$result=mysqli_query($conn, $query);


Błąd:
Kod
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 22


Linia: 22
Kod
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))


Z tego co znalazłem to ten kod powinnien być dobry, co robię źle?
Go to the top of the page
+Quote Post
viking
post 18.01.2022, 17:32:14
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Funkcja nie wie nic o zmiennej conn. Poczytaj o zasięgu.


--------------------
Go to the top of the page
+Quote Post
UszaTek
post 18.01.2022, 20:24:00
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Cytat(viking @ 18.01.2022, 17:32:14 ) *
Funkcja nie wie nic o zmiennej conn. Poczytaj o zasięgu.


Czyli tak?

Kod
function hourly($conn,$od,$do)
Go to the top of the page
+Quote Post
nospor
post 19.01.2022, 10:13:07
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




tak. pod warunkiem ze te funkcje wywolasz z tym parametrem wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
UszaTek
post 19.01.2022, 16:52:59
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 19.01.2022, 10:13:07 ) *
tak. pod warunkiem ze te funkcje wywolasz z tym parametrem wink.gif


Nie wiem jak poradzić sobie z tym błędem:

Kod
Fatal error: Uncaught ArgumentCountError: Too few arguments to function hourly(), 2 passed in


Kod:

Kod
$hd = hourly(strtotime(date('d.m.Y').' 00:00'),strtotime(date('d.m.Y').' 23:59'));


A tak wyglądała na stan obecny część kodu:

Kod
<?php

    $conn = mysqli_connect("xxx", "xxx", "xxx", "xxx");
    
    if($conn === false)
    {
        die("ERROR: Could not connect. " .mysqli_connect_error());
    }

    function hourly($conn,$od,$do)
    {
        $query="SELECT * FROM `stat` WHERE `time` >= '{$od}' AND `time` <= '{$do}' ORDER BY `time` ASC";
        $result=mysqli_query($conn, $query);
    
        $g = Array();
        $wg = Array();
        $tg = Array();
        $elem = Array();
        $hours = Array();
        $dzz = 0;
    
        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
        {
            $godzina = date('G',$r['time']);
            $g[$godzina] = $g[$godzina]+$r['Temperature'];
            $wg[$godzina]++;
        }

        foreach($g as $godz=>$Temperature)
        {
            $tg[$godz] = round($Temperature/$wg[$godz],2);
            $dzz++;
            $elem[] = "[{$dzz},{$tg[$godz]}]";
            $hours[] = "'{$godz}:00'";
        }

        $elem = implode(',',$elem);
        $hours = implode(',',$hours);
        return Array('e'=>$elem,'h'=>$hours);
    }


Ten post edytował UszaTek 19.01.2022, 16:54:02
Go to the top of the page
+Quote Post
nospor
post 19.01.2022, 16:54:21
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




No przeciez dodales parametr $conn do tej funkcji, wiec masz go wywolac z tym parametrem, tak jak wywolujesz z parametrami $od i $do

ps: przenosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
UszaTek
post 19.01.2022, 17:43:04
Post #9





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 19.01.2022, 16:54:21 ) *
No przeciez dodales parametr $conn do tej funkcji, wiec masz go wywolac z tym parametrem, tak jak wywolujesz z parametrami $od i $do

ps: przenosze


Tak jest poprawnie, ponieważ już nie wyświetla błędu?

Kod
$hd = hourly($conn,strtotime(date('d.m.Y').' 00:00'),strtotime(date('d.m.Y').' 23:59'));


Oraz zacząłem zmieniać kod z proceduralnej na obiektowej mysqli i napotkałem się taki błąd:

Kod
Warning: implode(): Invalid arguments passed in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 70


Linia 70:

Kod
if(date('G',$row['Time']) >= 23 OR date('G',$row['Time']) < 6) { continue; }


Kod
function daily_day($conn,$od,$do,$mon)
    {
        $query="SELECT * FROM `stat` WHERE `Time` >= '{$od}' AND `Time` <= '{$do}' ORDER BY `Time` ASC";
        $result = $conn->query($query);
        
        $g = Array();
        $wg = Array();
        $tg = Array();
        $elem = Array();
        $days = Array();
        $dzz = 0;
    
        while ($row = $result -> fetch_array());
        {
            $dzien = date('d',$row['Time']);
            if(date('G',$row['Time']) >= 23 OR date('G',$row['Time']) < 6) { continue; }
            $g[$dzien] = $g[$dzien]+$row['Temperature'];
            $wg[$dzien]++;
        }

        foreach($g as $dz=>$Temperature)
        {
            $tg[$dz] = round($Temperature/$wg[$dz],2);
            $dzz++;
            $elem[] = "[{$dzz},{$tg[$dz]}]";
            $days[] = "'{$dz}.{$mon}'";
        }

        $elem = implode(',',$elem);
        $days = implode(',',$days);
        return Array('e'=>$elem,'d'=>$days);
    }


Ten post edytował UszaTek 19.01.2022, 17:43:20
Go to the top of the page
+Quote Post
nospor
post 19.01.2022, 17:53:04
Post #10





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




1) tak
2) Blad dotyczy implode wiec chyba zle policzyles linie wink.gif Sprawdz co zawiera dokladnie zmienne ktore przekazujesz w implode

ps: w jakim formacie jest ta data $row['Time'] ? powinna byc w UNITX TIMESTAMP a wyglada z innego kodu ze chyba nie koniecznie taka jest


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
UszaTek
post 19.01.2022, 18:03:09
Post #11





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 19.01.2022, 17:53:04 ) *
1) tak
2) Blad dotyczy implode wiec chyba zle policzyles linie wink.gif Sprawdz co zawiera dokladnie zmienne ktore przekazujesz w implode

ps: w jakim formacie jest ta data $row['Time'] ? powinna byc w UNITX TIMESTAMP a wyglada z innego kodu ze chyba nie koniecznie taka jest


Przepraszam, mój błąd.

Błąd:
Kod
Fatal error: 'continue' not in the 'loop' or 'switch' context in /usr/home/UszaTek/domains/uszatek.ct8.pl/public_html/graphy.php on line 89



Linia 89:
Kod
if(date('G',$row['Time']) >= 23 OR date('G',$row['Time']) < 6) { continue; }
Go to the top of the page
+Quote Post
nospor
post 19.01.2022, 18:24:16
Post #12





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




while ($row = $result -> fetch_array());

wywal srednik na koncu wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
UszaTek
post 19.01.2022, 18:40:20
Post #13





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 19.01.2022, 18:24:16 ) *
while ($row = $result -> fetch_array());

wywal srednik na koncu wink.gif


Dziękuje za pomoc, błędy nie wyświetla na stronie, lecz wykres nadal się nie wyświetla .
Taki komunikat w konsoli:
Kod
Uncaught SyntaxError: Unexpected identifier


Live demo;

http://uszatek.ct8.pl/graphy.php

Ten post edytował UszaTek 19.01.2022, 18:42:04
Go to the top of the page
+Quote Post
nospor
post 20.01.2022, 08:59:28
Post #14





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Gdzies teraz masz coz zwalone jakby z tekstem

Nawet masz podana linie..

tempgodzw = $.jqplot('tempmiesiac_noc',[miesiac_noc],
{

nie zamknales tego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
UszaTek
post 20.01.2022, 18:18:36
Post #15





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Nie wiem jak mogłem tego nie zauważyć. sciana.gif
Po poprawię pojawił się komunikat:

Kod
jquery.jqplot.min.js:14 Uncaught No plot target specified
Go to the top of the page
+Quote Post
nospor
post 21.01.2022, 11:08:46
Post #16





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




No przeciez komunikat bledu mowi wszystko. Znowu

Kod js, ktory odnosi sie do elementu HTML nie moze byc wykonany wczesniej niz ten element HTML sie pojawi. Wiec przenies swoj kod JS za kodem HTML a nie przed . Oczywiscie mozna to zrobic inaczej ale na twoj stan wiedzy to bedzie najprostrze rozwiazanie. A na prszylosc czytaj te komunikaty i jak nie ogarniasz to uzyj google bo nie ty jeden masz takie problemy i odpowiedz byla podana juz milion razy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
UszaTek
post 21.01.2022, 17:38:35
Post #17





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 15.07.2019

Ostrzeżenie: (0%)
-----


Dzięki !
Wykres teraz jest wyświetlany na stronie.
Dodałem ręcznie rekordy do bazy lecz na wykresie bez zmian.
0 logów w konsoli.
Gdzie szukać problemu?



Go to the top of the page
+Quote Post
nospor
post 21.01.2022, 17:58:13
Post #18





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Przejrzyj kod ktory tworzy serie, sprawdz czy z bazy pobeiraja sie dobrze dane. No tak trosze samemu moglbys juz w koncu zaczac robic a nie kazdy krok trzeba ci podawac.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 10:23