Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wykresem
Forum PHP.pl > Forum > Przedszkole
UszaTek
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'));

?>
trueblue
Komunikaty wyraźnie wskazują błędy.
Przeczytaj pierwszy z nich i porównaj z kodem w danej linii.
UszaTek
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?
viking
Funkcja nie wie nic o zmiennej conn. Poczytaj o zasięgu.
UszaTek
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)
nospor
tak. pod warunkiem ze te funkcje wywolasz z tym parametrem wink.gif
UszaTek
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);
    }
nospor
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
UszaTek
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);
    }
nospor
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
UszaTek
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; }
nospor
while ($row = $result -> fetch_array());

wywal srednik na koncu wink.gif
UszaTek
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
nospor
Gdzies teraz masz coz zwalone jakby z tekstem

Nawet masz podana linie..

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

nie zamknales tego
UszaTek
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
nospor
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
UszaTek
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?



nospor
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.