Cze¶æ
Aha44.
Pó¼no bo pó¼no, ale mia³em trochê zajêæ, wiêc nie mog³em odpowiedzieæ. Ten komunikat cytowany przez Ciebie jest to tylko ostrze¿enie, a nie b³±d, i informuje Ciê o tym, ¿e nie mo¿na dzieliæ przez
0 (zero) o czym ucz± ju¿ w podstawówce. Ale to nie tyczy siê Ciebie, tylko tak dla przypomnienia dla innych. Analizowa³em kod pliku "
galleryshow.php" i poni¿ej trochê wiêcej kodu dla rozja¶nienia tematu:
Kod: |
//Total of record
$RecordCount = $zoom->_gallery->getNumOfImages();//Number of files in gallery
$endRow = $startRow + $zoom->_CONFIG['PageSize'] -1;
if ($endRow >= $RecordCount) {
$endRow = $RecordCount - 1;
}
//Set Maximum Page
$MaxPage = ceil($RecordCount % $zoom->_CONFIG['PageSize']);
if ($RecordCount % $zoom->_['PageSize'] == 0) {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
} else {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
}
//Set the counter start
$CounterStart = 1;
//Counter End
$CounterEnd = $MaxPage;
?>
|
Obja¶nienie funkcji i zmiennych:
Niektóre z nich zawieraj± warto¶ci okre¶lone w konfiguracji galerii
$RecordCount = liczba wszystkich obrazków w galerii.
$MaxPage = maksymalna ilo¶æ stron z galeri±
$zoomConfig['
PageSize'] = "
9"; to jest ustawienie zmiennej
$zoom->_['
PageSize'], czyli liczba obrazków na jednej stronie, która podejrzewam ¿e jest u Ciebie ustawiona prawid³owo, bo masz po
9 (dziewiêæ) obrazków na stronie. Okre¶lona w "
/components/com_zoom/etc/zoom_config.php"
Przeanalizujemy czê¶æ kodu:
Kod: |
if ($RecordCount % $zoom->_['PageSize'] == 0) {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
} else {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
}
|
Obja¶nienie funkcji i zmiennych, oraz zdefiniowanych przeze mnie warto¶ci:
(
liczby hipotetyczne, czyli zak³adam ze masz 150 obrazków w galerii i po 9 na stronê):
if - je¶li jaki¶ warunek jest spe³niony.
else - rozszerza mo¿liwo¶ci instrukcji
if do sytuacji kiedy warunek opisany przy instrukcji
if ma warto¶æ
FALSE (nie zosta³ spe³niony)
$RecordCount =
150 (liczba wszystkich obrazków w galerii)
$zoom->_['PageSize'] =
9 (liczba obrazków na jednej stronie)
ceil — Funkcja która zaokr±gla u³amki w górê
% - Modulo(Reszta z dzielenia
150 przez
9)
/ - Dzielenie(Operator logiczny dzielenia)
Kod: |
if (150 % 9 = 0) {//jesli reszta z dzielenia 150 przez 9 daje nam 0 (zero) wowczas
$MaxPage = ceil(150 / 9);// maksymalna liczba stron to wynik dzielenia 150 przez 9, czyli 16,67, po zaokragleniu w górê
(cell) daje nam 17
} else {//jesli reszta z dzielenia 150 przez 9 nie daje nam 0 (zero) wowczas
$MaxPage = ceil(150 / 9);// maksymalna liczba stron to wynik dzielenia 150 przez 9, czyli 16,67, po zaokragleniu w górê
(cell) daje nam 17
}
|
...czyli wynikiem bêdzie zawsze liczba 17, czyli maksymalna ilo¶æ stron wynosi 17. Teraz wyskakuje Ci ostrze¿enie tu¿ nad galeri±, ¿e nie mo¿na dzieliæ przez 0 (zero), co mo¿e oznaczaæ, ¿e albo w pliku "
zoom_config.php" masz w zmiennej "
$zoomConfig['
PageSize']" warto¶æ
0 (zero), co mo¿emy wykluczyæ (lub nie), lub skrypt nie odczytuje tej warto¶ci poprawnie, i zamiast liczby
9 (dziewiêæ) wstawia
0 (zero). I dzielenie
150 przez
0 (
Division by zero) jest niewykonalne.
Jak sobie z tym poradziæ?. Ja my¶lê ¿e na 2 sposoby:
- 1. Ustawiæ na sztywno zmienn± "$zoomConfig['PageSize']" w pliku "galleryshow.php" np. tak:
Kod: |
$zoom->_CONFIG['PageSize'] = "9";
if ($RecordCount % $zoom->_['PageSize'] == 0) {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
} else {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
}
|
...je¶li bêdziesz chcia³ zwiêkszyæ lub zmniejszyæ ilo¶æ obrazków na stronie, mo¿esz to zmieniæ w tej zmiennej na pocz±tku kodu, o ile to wszystko zadzia³a. Ja nie mam tej galerii, wiêc nie sprawdzê.
- 2. Drugi sposób to wy³±czenie raportowania b³êdów poprzez dodanie funkcji error_reporting i ustawienie jej warto¶ci na 0 (zero):
Kod: |
<?php
// wy³±czenie raportowania bledow (parametr 0)
error_reporting(0);//error_reporting ( [int $warto¶æ] );
?>
|
Wstaw tê funkcjê w plik "galleryshow.php", lub w "zoom_config.php". Znaczniki PHP potrzebne s± tylko wtedy, je¶li wstawiasz to pomiêdzy kod HTML. Je¶li nie, wystarczy tylko wpisaæ:
Kod: |
// wy³aczenie raportowania bledow
error_reporting(0);
|
My¶lê, ¿e powinno pomóc. Nie tylko Tobie, bo po wpisaniu czê¶ci tre¶ci komunikatu do
Google, wy¶wietli³o mi linki do
50,700 stron, i to nie tylko polskich. Czekam na odzew i pozdrawiam.
Jokris.