« 1 2
Autor Zpráva
Petr__
Profil *
Svůj předchozí příspěvek [#30] jsem psal ještě bez [#29], nevím co vše tam Pavel Vodnář upravil. Šlo o to, že při výpisu přistupoval k neexistujícímu sloupci inzeraty.

Pavel Vodnář:
Dejte sem výsledný kód, nikdo neví, co a jak přesně jste tam poupravoval.
Pavel Vodnář
Profil *
Děkuji za rady ono mi už to vypíše 5 inzerátu na stránku dle požadavku ale nevipisuje to to stránkování od if(ON_PAGE < $max) - zde nevím proč?

nenovější verze vypadá takto:
//////////////// stránkování inzerátů

$countQ = mysql_query("SELECT COUNT(*) as max FROM inzeraty");  

    if(mysql_result($countQ, 0) > 0) {   
    $count = mysql_fetch_object($countQ); 
    $max = $count->max;     
                                                    
    }  
echo $max;

define ("ON_PAGE", 5); //56
//$on_page=5;

   if(!isset($_GET["page"]) || !is_numeric($_GET["page"]) )  
     $page = 1;  
   else  
     $page = $_GET["page"];   
//echo  $page;
    $by = ($on_page * ($page - 1));  
//echo $by;
$articles = mysql_query("SELECT  nadpis, text, datum, zadavatel FROM inzeraty ORDER BY id_inzeratu DESC LIMIT ".ON_PAGE." OFFSET " . $by);  

  if(mysql_num_rows($articles) > 0) {  
    while($article = mysql_fetch_object($articles)){  // řádek 87
    echo $article-> zadavatel. "<br />";   
    echo $article-> nadpis. "<br />"; 
    echo $article-> text. "<br />";
    echo $max ;
    echo $article-> datum. "<br />";
    echo  "<br />";
     }  
   }  

if(ON_PAGE < $max){

    // NA ZAČÁTEK  
    // pokud nejsme na začátku, udělat odkaz na začátek...  
    if($page > 1) {  
      echo "<a href='prochazeni-inzeratu.php/?page=1'>&lt;&lt;</a>";  
    }  
      
    // PŘEDCHOZÍ  
    // pokud  nejsme na začátku, zobrazit odkaz na předchozí a cyklus na předchozí  
    if($page > 1) {   
     echo "<a href='prochazeni-inzeratu.php/?page=".($page-1)."'>&lt;</a>";  
                          
     // PŘEDCHOZÍ - CYKLUS  
     // vypíše 3 předchozí stránky  
    for($i = 4; $i > 0; $i--) {  
      if(($page - $i) >= 1){  
         echo "<a href='detail-inzeratu.php/?page=".($page-$i)."'>".($page-$i)."</a>";  
       }  
     }  
   }  

 for($i = 4; $i > 0; $i--) 

   if(($page - $i) >= 1)  
  if($page < ($max / ON_PAGE)) {  
   // DALŠÍ - CYKLUS  
   // vypíše 3 následující stránky  
  for($i = 1; $i < 4; $i++) {   
     if(($page + $i) <= ceil($max / ON_PAGE)) {  
       echo "<a href='prochazeni-inzeratu.php/?page=".($page+$i)."'>".($page+$i)."</a>";  
     }  
   }  
                        
   // další  
   echo "<a href='prochazeni-inzeratu.php/?page=".($page+1)."'>&gt;</a>";  
 }  

    if(($page + $i) <= ceil($max / ON_PAGE))  

    // KONEC  
    // pokud nejsme na konci, udělat odkaz na konec   
     
    if($page < ceil($max / $on_page)) {  
      echo "<a href='prochazeni-inzeratu.php/?page=".ceil($max / $on_page)."'>&gt;&gt;</a>";  //řádek 146
    }  

echo $count;

}
Petr__
Profil *
Pavel Vodnář:
A jsme opět na začátku :-)). Nevypisuje vám ten kód náhodou hlášku:
Warning: Division by zero in ...?
Pavel Vodnář
Profil *
ne nevypisuje to žádnou chybku právě vypíše to počet inzeráru dle definice ale nevypíše to požadované sránkování právě
Pavel Vodnář
Profil *
změnil sem ještě:

$countQ = mysql_query("SELECT COUNT(*) as max FROM inzeraty");  

    if(mysql_num_rows($countQ) > 0) {   
    $count = mysql_fetch_object($countQ);    
    $max = $count->max;                                   
    }  


ale pořád nic:( jakto?
xmark
Profil
MAX() je mysql funkce.
Petr__
Profil *
Pavel Vodnář:

1) Na několika řádcích máte "...prochazeni-inzeratu.php/?page=..." - to lomítko tam nepatří.

2) Je nesmysl používat zároveň COUNT v SQL dotazu a na to aplikovat mysql_num_rows.
Úplně stačí:
$max = mysql_result(mysql_query("SELECT COUNT(*) FROM inzeraty"), 0);

Předpokládám že v proměnné $max má být celkový počet řádků v tabulce inzeráty.

3) ON_PAGE a $on_page není totéž. $on_page máte zakomentovanou (tedy nedefinovanou), proto později narazíte na ten problém s dělením s nulou. Nahraďte všechny $on_page za ON_PAGE, pokud to má sloužit jako jednotné omezení počtu výsledků na stránku.
Pavel Vodnář
Profil *
Děkuji, už to pracuje ale pořád špatně - funguje kód na první a poslední stránku, nicméně na první stránce mi to nevypisuje možnosti dalších 3 stránek vypíše to pouze možnost >> a když sem a poslední stránce tak mi to vypíše jak má viz: << < 8 9 10 11 ale když kliknu např na stránku 8 tak se mi to zacyklí a spadne proč?
Pavel Vodnář
Profil *
Už jsem na to přišel, děkuji zasílám výsledný kód na ukázku:


//////////////// stránkování inzerátů

$max = mysql_result(mysql_query("SELECT COUNT(*) FROM inzeraty"), 0);


define ("ON_PAGE", 5); //56


   if(!isset($_GET["page"]) || !is_numeric($_GET["page"]) )  
     $page = 1;  
   else  
     $page = $_GET["page"];   

    $by = (ON_PAGE * ($page - 1));  

$articles = mysql_query("SELECT  nadpis, text, datum, zadavatel FROM inzeraty ORDER BY id_inzeratu DESC LIMIT ".ON_PAGE." OFFSET " . $by);  

  if(mysql_num_rows($articles) > 0) {  
    while($article = mysql_fetch_object($articles)){  // řádek 87
    echo $article-> zadavatel. "<br />";   
    echo $article-> nadpis. "<br />"; 
    echo $article-> text. "<br />";
   // echo $max ;
    echo $article-> datum. "<br />";
    echo  "<br />";
     }  
   }  

//echo ON_PAGE;
// echo  "<br />";
//echo $max; 
 //echo  "<br />"; 
//echo $page ;


if(ON_PAGE < $max){   



    // NA ZAČÁTEK  
    // pokud nejsme na začátku, udělat odkaz na začátek...  
    if($page > 1) {  
      echo "<a href='prochazeni-inzeratu.php?page=1'>&lt;&lt;</a>";  
    }  
      
    // PŘEDCHOZÍ  
    // pokud  nejsme na začátku, zobrazit odkaz na předchozí a cyklus na předchozí  
    if($page > 1) {   
     			echo "<a href='prochazeni-inzeratu.php?page=".($page-1)."'>&lt;</a>";  
                          
   			  // PŘEDCHOZÍ - CYKLUS  
   			  // vypíše 3 předchozí stránky  
    			  for($i = 4; $i > 0; $i--) {  
     			  if(($page - $i) >= 1){  
        		  echo "<a href='prochazeni-inzeratu.php?page=".($page-$i)."'>".($page-$i)."</a>";  
                                        }  
                                   }  
                  } 

 
  if(($page - $i) >= 1)  
  if($page < ($max / ON_PAGE)) {  
   // DALŠÍ - CYKLUS  
 


  // vypíše 3 následující stránky  
  for($i = 1; $i < 4; $i++) {   
     if(($page + $i) <= ceil($max / ON_PAGE)) {  
       echo "<a href='prochazeni-inzeratu.php?page=".($page+$i)."'>".($page+$i)."</a>";  
     }  
   }  
                        
   // další  
   echo "<a href='prochazeni-inzeratu.php?page=".($page+1)."'>&gt;</a>";  
 }  

    if(($page + $i) <= ceil($max / ON_PAGE))  

    // KONEC  
    // pokud nejsme na konci, udělat odkaz na konec   
     
    if($page < ceil($max / ON_PAGE)) {  
      echo "<a href='prochazeni-inzeratu.php?page=".ceil($max / ON_PAGE)."'>&gt;&gt;</a>"; 
    }  
}
pcmanik
Profil
Pavel Vodnář:
Vas kod je tak neprehladny a komplikovany az to nieje mozne.

1. Naco pouzivate OOP, ked ho neovladate?
2.
$page = $_GET["page"];
treba osetrit, staci intval
3. Konstanty sa vacsinou definuju v samostatnom subore, inak to nema moc vyznam.
4. Naco vam je tam zakomentovany php kod?
5. Mate to zbytocne roztahane. Myslim tym, ze je tam privela prazdnych riadkov
6. Tie podmienky na konci cyklu mate tak komplikovane zapisane, ze za mesiac nepochopite co tam je.
7. Odporucal by som este spravit jednu konstantu s poctom nasledujucich a predchadzaujich stranok, aby to potom nebolo treba menit v celom tom strankovani.
« 1 2

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0