• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Notice: Undefined variable: all in

VPS Starter Arubacloud
0 głosów
503 wizyt
pytanie zadane 7 maja 2016 w PHP przez niezalogowany
zamknięte 7 maja 2016 przez Arkadiusz Waluk

Cześć. Zmieniłem wersję PHP w serwisie, teraz wyświetla mi taki błąd:

Notice: Undefined variable: all in /home/virt6538/domains/domena.pl/public_html/licznik.php on line 78

 

a cały kod wygląda tak:

<?php session_start(); ?>
<?php

include('connect.php'); 

mysql_query("SET NAMES 'latin2'");
$date = date('Y-m-d');
$time = date('H:i:s');
$ip = $_SERVER['REMOTE_ADDR']; 
$link = mysql_query("SELECT ip FROM online WHERE ip='$ip' and data='$date'");
$ile = mysql_num_rows($link);
if ($ile == 0) {
    $asd = mysql_query("INSERT INTO online SET ip='$ip', data='$date', godzina='" . date('H') . "', minuta='" . date('i') . "'");

    if (!$asd) {
        echo('Błąd bazy danych. <br />');
    }
} else {
    $asd = mysql_query("UPDATE online SET data='$date', godzina='" . date('H') . "', minuta='" . date('i') . "' WHERE ip='$ip' and data='$date'");

    if (!$asd) {
        echo('Blad bazy danych. <br />');
    }
}

$wczoraj = (int) date('d');
$wczoraj = $wczoraj - 1;
$miesiac = (int) date('m');
if ($wczoraj == 0) {
    if (date('m') == 4 || date('m') == 6 || date('m') == 8 || date('m') == 9 || date('m') == 11) {
        $wczoraj = "31";
        $miesiac -= "1";
    }
    if (date('m') == 3) {
        $wczoraj = "28";
        $miesiac -= "1";
    }
    if (date('m') == 5 || date('m') == 7 || date('m') == 10 || date('m') == 12) {
        $wczoraj = "30";
        $miesiac -= "1";
    }
    if (date('m') == 2) {
        $wczoraj = "31";
        $miesiac -= "12";
    }
}
if ($wczoraj <= 9) {
    $wczoraj = "0" . $wczoraj;
}
if ($miesiac <= 9) {
    $miesiac = "0" . $miesiac;
}
$wczoraj = date('Y') . "-" . $miesiac . "-" . $wczoraj;

$time = date('H');
$time2 = date('i') - 5;
$link = mysql_query("SELECT * FROM online");
$online = 0;
$dzis = 0;
$wczorajlicz = 0;
while ($wynik = mysql_fetch_array($link)) {
    if ($wynik['data'] == $date) {
        if ($wynik['godzina'] >= $time) {
            if ($wynik['minuta'] >= 5) {
                $minuta = $wynik['minuta'] - 5;
            } else {
                $minuta = $wynik['minuta'];
            }
            if ($minuta >= $time2) { 
                $online++;
            }
        }
        $dzis++;
    }
    if ($wynik['data'] == $wczoraj) {
        $wczorajlicz++;
    }
    $all++;
}
echo('<font color=white>Online today:</font> <font color=orange>' . $dzis . '</font> | ');
echo('<font color=white>All visitors:</font> <font color=orange>' . $all . '</font></small>');
?>

 

komentarz zamknięcia: Rozwiązane
1
komentarz 7 maja 2016 przez efiku Szeryf (75,160 p.)
Zmień na wersję 7.04 :> Zmień na PDO.

1 odpowiedź

+1 głos
odpowiedź 7 maja 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)

Notice: Undefined variable: all

Czyli po przetłumaczeniu na polski: "niezdefiniowana zmienna all". I z czym masz problem? W kodzie nie jest zdefiniowana zmienna $all a próbujesz ją inkrementować, stąd błąd.

Tak dodatkowo powiem, że radziłbym ten kod szybko poprawić bo jak sobie znów zmienisz wersję PHP na 7 to przestanie działać ;) (funkcje z mysql_ są od dawna zdeprecjonowane a w najnowszym PHP 7 usunięte).

komentarz 7 maja 2016 przez niezalogowany
Jestem laikiem w takich sprawach. Skoro na stronie po wpisaniu .$all. wyświetla mi dane to jak to jest z tym?
komentarz 7 maja 2016 przez Arkadiusz Waluk Ekspert (287,550 p.)
Po prostu zmienna jest w momencie pierwszej inkrementacji automatycznie deklarowana z wartością 0, dlatego wszystko działa jak trzeba. Ale interpreter zwraca uwagę, że zmienna nie była wcześniej zadeklarowana, a skoro chcemy ją zwiększać to powinna być.

Rozwiązanie problemu to wcześniejsze zadeklarowanie zmiennej $all z wartością 0.
komentarz 7 maja 2016 przez niezalogowany
Dziękuję. Dodałem $all = 0; i działa. Dzięki! Tak niewiele a pomogłeś :D

Podobne pytania

–1 głos
2 odpowiedzi 1,203 wizyt
0 głosów
1 odpowiedź 769 wizyt
pytanie zadane 17 kwietnia 2019 w PHP przez Whereismycode Obywatel (1,710 p.)
0 głosów
2 odpowiedzi 231 wizyt

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...