Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: BŁĄD - Warning: Division by zero in:
Forum PHP.pl > Forum > PHP
magicoparma
Wiem ze byl ostatnio taki temat ale moje błąd rozni sie troche od tamtego.


Komunikat błędu

Warning: Division by zero in /var/www/sites/yoyo.pl/f/c/fcparma/news/show.php on line 35


wyswietla sie to na stronie głownej
ponizej macie fragment kodu, a pogrubiona jest ta linijka 35


$newsfile = file("$newspath/news.txt");
$count = count($newsfile);
if($config["stronicownie"] != "off"){
if(!isset($_GET["npage"])){ $npage = "1"; }
else{ $npage = $_GET["npage"]; }
$ilestron = $count/$config["stronicowanie"];
$ilestron = ceil($ilestron);
$begin = $count - $config["stronicowanie"]*($npage-1);
if($begin>$count){ $begin = $count; }
$end = $begin - $config["stronicowanie"];
if($end<0){ $end = 0; }
}


wiecie moze jak to naprawic, dodam jedynie ze jest to system newsow PSNews, dziala on juz ponad rok, i dopiero dzisiaj rano cos takiego wyskoczylo

dzieki i pozdr
delfinium
Zamień
  1. <?php
  2. $ilestron = $count/$config['stronicowanie'];
  3. ?>


na
  1. <?php
  2. if ( $config['stronicowanie'] == 0 ) {
  3. $ilestron = 0;
  4. } else {
  5. $ilestron = $count/$config['stronicowanie'];
  6. }
  7. ?>
Ludvik
Cytat
Wiem ze byl ostatnio taki temat ale moje błąd rozni sie troche od tamtego.

W tym rzecz, że nie różni się... Dzielenie przez zero zawsze powoduje ten sam błąd.

Po prostu musisz zadbać o to, żeby zmienna $config["stronicowanie"] nie była nigdy równa zeru. Albo wyrzucając jakiś bardziej cywylizowany błąd, albo jeżeli jest to wartość poprawna (np. miała sygnalizować wyłączenie stronicowania), to dopisać specjalny przypadek użycia.
magicoparma
zrobiłem to co napisał delfinium , ale niestety nie wyswietlają sie zadne newsy ( pisze strona1 z 0), mimo ze w panelu administracyjnym jest ich ponad 400

http://fcparma.pl/ - zobaczcie sami
delfinium
1. Skoro masz włączone stronicowanie to zmienna #config['stronicowanie'] powinna być większa niż 0, widocznie masz ją nieustawioną albo ustawioną na 0 albo na "On", co w przypadku zamiany na int wychodzi na to samo

2. dodaj zaraz za linią

  1. <?php
  2. if ( $config['stronicownie'] != 'Off' ) {
  3. ?>


coś takiego

  1. <?php
  2. if ( $config['stronicowanie'] == 0 ) $config['stronicowanie'] = 10;
  3. ?>


i napisz co się dzieje.

3. Czy mi się wydaje, czy tam jest w kodzie literówka, w tym ifie jest klucz "stronicownie", brakuje literki A
magicoparma
czyli wg Ciebie kod tak ma wyglądać:


Kod
newsfile = file("$newspath/news.txt");
$count = count($newsfile);
if($config["stronicowanie"] != "off"){
if(!isset($_GET["npage"])){ $npage = "1"; }
else{ $npage = $_GET["npage"]; }
if ( $config["stronicowanie"] == 0 ) $config['stronicowanie'] = 10
$ilestron = 0;
} else {
$ilestron = $count/$config["stronicowanie"];



to jeszcze raz dla ułatwieni awrzuce ten stary zły kod :
Kod
$newsfile = file("$newspath/news.txt");
$count = count($newsfile);
if($config["stronicownie"] != "off"){
if(!isset($_GET["npage"])){ $npage = "1"; }
else{ $npage = $_GET["npage"]; }
$ilestron = $count/$config["stronicowanie"];
$ilestron = ceil($ilestron);
$begin = $count - $config["stronicowanie"]*($npage-1);
if($begin>$count){ $begin = $count; }
$end = $begin - $config["stronicowanie"];
if($end<0){ $end = 0; }



jesli tak to nadal nic sie nie wyswietla, a jak nie to miales na mysli to napisz na podstawie tego kodu jak to ma być
delfinium
Jak dla mnie ten kod powinien wyglądać tak:

  1. <?php
  2. $newsfile = file( $newspath . '/news.txt' );
  3. $count = count( $newsfile );
  4. if ( $config['stronicowanie'] != 'off' ) {
  5. if ( !isset( $_GET['npage'] ) ) {
  6. $npage = 1;
  7. } else {
  8. $npage = $_GET['npage'];
  9. }
  10. if ( $config['stronicowanie'] == 0 ) $config['stronicowanie'] = 10;
  11. $ilestron = $count / $config['stronicowanie'];
  12. $ilestron = ceil( $ilestron );
  13. $begin = $count - $config['stronicowanie'] * ( $npage - 1 );
  14. if ( $begin > $count ) {
  15. $begin = $count;
  16. }
  17. $end = $begin - $config['stronicowanie'];
  18. if ( $end < 0 ) {
  19. $end = 0;
  20. }
  21. }
  22. ?>


i moim zdaniem to powinno, podkreślam powinno wyciągnąć na stronę 10 newsów.

Mam prośbę, abyś wyświetlił sobie i potem tutaj napisał jakie są wartości $count oraz $config['stonicowanie'].
magicoparma
Zrobilem to i wyswietla sie


Parse error: syntax error, unexpected T_CASE in /var/www/sites/yoyo.pl/f/c/fcparma/news/show.php on line 102


blink.gif
delfinium
Bo coś źle wkleiłeś, pewnie nawiasy, przejdźmy na PW bo taka wymiana zdań może potrwać lata smile.gif
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.