Paginare

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Paginare

Mesajde Ruben » Joi Iul 04, 2013 10:36 pm

Salut!
Am nevoie de un cod de paginare in php, cam tot ce am gasit pe internet nu era bun sau daca vroiam sa modific unele chesti dadea erori de nu imi incapea pe monitor X_X
Sper sa ma ajuti vai. E o pagina pentru anunturi. Doresc sa fie 15 anunturi pe o pagina. Adica 1-15 pagina 1, 16-30 pagina 2, si tot asa. Multumesc Mult! :D



Avatar utilizator
Double_Web
Average Member
Mesaje: 183
Membru din: Joi Apr 12, 2012 2:33 pm
Localitate: Bucuresti
Contact:

Re: Paginare

Mesajde Double_Web » Vin Iul 05, 2013 12:08 am

Uite aici un tutorial destul de interesant cu paginare: http://www.tutorialeonline.net/ro/artic ... e-paginare

In general, daca ai vreo problema, da-i un search pe http://www.tutorialeonline.net ;)

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Re: Paginare

Mesajde Ruben » Vin Iul 05, 2013 11:23 am

Am gasit singur un script functional, multumesc oricum! :D
Ultima oară modificat Vin Iul 05, 2013 1:55 pm de către Ruben, modificat 1 dată în total.

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Re: Paginare

Mesajde Ruben » Vin Iul 05, 2013 1:51 pm

Alta problema:
Am reusit sa mil modific pe plac fara erori dar acuma nu functioneaza paginarea si alternarea cu culori ca toate <tr> sa fie colorate in 2 culori(background) si daca in baza de date am 4 intrari pe browser o sa am 16, imi face intrarile inmultit la cate intrari sunt:

Cod: Selectaţi tot

<?php
require_once 'dbc.php';

$rezultate_maxime_in_linie = 9;
$rezultate_maxime_in_jos = 10;

$totale = mysql_result(mysql_query('SELECT COUNT(*) as Num FROM `administrare_contracte`'),0);

if($totale == 0) echo 'Nu exista intrari ...';
elseif(!isset($_GET['pagina'])) $pagina = 1;
else $pagina = $_GET['pagina'];

   $cerereSQL = mysql_query('SELECT * FROM `administrare_contracte` ORDER by `id` ASC LIMIT '.(($pagina * ($rezultate_maxime_in_jos*$rezultate_maxime_in_linie)) - ($rezultate_maxime_in_jos*$rezultate_maxime_in_linie)).', '.($rezultate_maxime_in_jos*$rezultate_maxime_in_linie).' ');

   $pagini_totale = ceil($totale / ($rezultate_maxime_in_jos*$rezultate_maxime_in_linie));

   if($pagina > $pagini_totale) echo 'Pagina nu a fost gasita';
   elseif($pagini_totale > 0) {

         $seteaza = 0;
         $numar = ($pagina - 1) * ($rezultate_maxime_in_jos*$rezultate_maxime_in_linie);
         $culoare_rand = '#767782';
         
         while($rand = mysql_fetch_array($cerereSQL)) {
            $numar++;
               
            if($seteaza == $rezultate_maxime_in_linie) {
            $seteaza = 1;
            if($culoare_rand == "#767782")  $culoare_rand = "#686966";
            else $culoare_rand = "#767782";
            } else $seteaza++;
            $query = "SELECT * FROM administrare_contracte";
            $result = mysql_query($query);

            while($row = mysql_fetch_array($result)){
            echo "<tr bgcolor=".$culoare_rand." align='center'><td>" . $row['camion'] . "</td><td>" . $row['sofer'] . "</td><td>" . $row['trailer'] . "</td><td>" . $row['marfa'] . "</td><td>" . $row['tonaj'] . " Tone</td><td>" . $row['ruta'] . "</td><td>" . $row['distanta'] . " KM</td><td>" . $row['timp'] . " minute</td><td>" . $row['viteza'] . " KM/H</td><td>" . $row['amenzi'] . " Primite</td><td><b>Administreaza</b></td></tr>\n";
}                  
         }
         echo "</table>";
         
         

if($pagini_totale == 1) echo '';
else {

echo '<div align="left">';
if($pagina > 1) {
    $inapoi = ($pagina - 1);
    echo '<a href="'.$_SERVER['PHP_SELF'].'?pagina='.$inapoi.'">&laquo;</a>&nbsp;';
}

for($pagini = 1; $pagini <= $pagini_totale; $pagini++){
    if(($pagina) == $pagini) echo '<b>'.$pagini.'</b>&nbsp;';
   else echo '<a href="'.$_SERVER['PHP_SELF'].'?pagina='.$pagini.'">'.$pagini.'</a>&nbsp;';
}

if($pagina < $pagini_totale) {
   $inainte = ($pagina + 1);
   echo '<a href=" '.$_SERVER['PHP_SELF'].'?pagina='.$inainte.'">&raquo;</a>&nbsp;';            
}
echo '</div>';
  }
}
?>

Si cred ca unele elemente treubie sterse, doar ocupa lini deoarece eu mi lam modificat pe plac si acuma unele chesti cred ca nu mai este nevoie de ele. :D

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Re: Paginare

Mesajde Ruben » Sâm Iul 06, 2013 12:16 pm

Nici un raspuns? :|

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Re: Paginare

Mesajde Ruben » Lun Iul 08, 2013 12:53 pm

Chiar nimica? :( :cry:

Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Re: Paginare

Mesajde MihaiC » Lun Iul 08, 2013 2:51 pm

Uite un model de paginare

Cod: Selectaţi tot

// Conectare

/**
 * Script paginare
 * etape
 */

function query($sql) {
    if (!$result = @mysql_query($sql)) {
        die($sql . '<br>' . mysql_error());
    }
    return $result;
}
 
// Etapa 1 - Numara cate randuri ai in total
$sql = "SELECT COUNT(*) FROM `table`";
$result = query($sql);
$total = mysql_result($result, 0);

// Etapa 2 - calculeaza offset-ul
$page = (int) isset($_GET['page']) ? $_GET['page'] : 1;
$limit = 10;
$totalPages = ceil($total / $limit);
if ($totalPages < 1) { $totalPages = 1; }
if ($page > $totalPages || $page < 1) {
    $page = 1;
}
$offset = $limit * ($page - 1);

// Etapa 3 - afiseaza rezultatele
$sql = "SELECT COUNT(*) FROM `table` LIMIT {$offset}, {$limit}";
$result = query($sql);
while ($row = mysql_fetch_assoc($result)) {
    // do whatever
}

// Etapa 4 - afiseaza paginarea
for ($pageNum = 1;$pageNum <= $totalPages;$pageNum++) {
    echo '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $pageNum . '">' . $pageNum . '</a>';
}


P.S.: vezi ca ai doua while() {} :P
Dev @ oblio.eu

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Re: Paginare

Mesajde Ruben » Lun Iul 08, 2013 2:59 pm

Multumesc. Ma voi descurca eu de aici... sper...
Si daca nu te superi, ai putea explica detaliat ce face while? Sunt nou in php ca altfel imi rezolvam eu problema cu paginarea. :D

Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Re: Paginare

Mesajde MihaiC » Lun Iul 08, 2013 3:06 pm

Hmm...

Parerea mea e ca ar trebui sa inveti structurile while, for, foreach etc. inainte sa faci site-uri.

while (conditie) {
// acest cod se repeta pana conditia returneaza "false"
}

http://php.net/manual/en/control-structures.while.php
Dev @ oblio.eu

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Re: Paginare

Mesajde Ruben » Lun Iul 08, 2013 3:08 pm

Notice: Undefined index: sofer in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: trailer in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: marfa in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: tonaj in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: ruta in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: distanta in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: timp in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: viteza in C:\xampp\htdocs\tester.php on line 36

Notice: Undefined index: amenzi in C:\xampp\htdocs\tester.php on line 36

Nu e de bine :( Vreau sa le asez in tabel.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Paginare

Mesajde Birkoff » Mar Iul 09, 2013 12:18 pm

Ruben scrie:Multumesc. Ma voi descurca eu de aici... sper...
Si daca nu te superi, ai putea explica detaliat ce face while? Sunt nou in php ca altfel imi rezolvam eu problema cu paginarea. :D


1) recomand sa citesti tutorialele de la mine, in special Structuri de control in php

2) Eu mi-am facut o clasa de paginare pe care o folosesc la proiectele mele. Nu zic ca e cea mai buna dar pentru mine e ce am avut nevoie.
o descarci de aici
iar mai jos ai exemplu de folosire pentru mysql (se poate folosi sa paginezi si aray sau stringuri sau alte baze de date)

Cod: Selectaţi tot

define ('FAR_ANTIHACK', true); // pentru a nu putea fi accesat fisierul cu clasa de paginare din exterior
define('FAR_PREFIX_SESSION', ''); // prefixul pentru sesiuni, nu ai nevoie de el la exemplu asta dar eu il folosesc prin clasa mea...
$_SESSION[FAR_PREFIX_SESSION . 'language'] = 'ro'; // nici asta nu o folosesti dar e ceruta in clasa

if ( file_exists('pagination.inc.php') )
    include_once 'pagination.inc.php';
else
    die('Nu a fost gasita clasa de paginare. Eroare la linia '.__LINE__.' in fisierul '.__FILE__;

// initializare paginare
$page = new pagination();
// generam linkul care va apare la butoane
$link = basename($_SERVER['PHP_SELF']) . '?parametrii=valori&amp;'; // nu uita sa pui & la final
// vedem cate randuri sunt in total in baza de date
$total = get_total_rows(); // functia asta o faci tu sau aici faci query sa returneze nr total de randuri existente
// setam cate randuri pe pagina vrem sa se afiseze
$randuri_pe_pagina = 10;
// generam where
$where = $page->set_where($total, $link, $randuri_pe_pagina);
// generare paginare
list($paginare, $start) = $page->set_paginator($where);
// setam start la where
$where['start'] = $start;
// preluam randurile pentru pagina curenta
$info = get_rows($where); // asta o compui tu, in where ai order/order_by/start/limit de care te poti folosi la compunerea selectului
// afisam rezultatele si paginarea
echo '<pre>'.var_export($info,1).'</pre>';
echo '<pre>'.var_export($paginare,1).'</pre>';
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Ruben
Average Member
Mesaje: 91
Membru din: Joi Iul 04, 2013 10:31 pm

Re: Paginare

Mesajde Ruben » Mar Iul 09, 2013 4:30 pm

Multumesc de raspuns dar mai ingropat de tot. Scriptul are peste 250 de randuri. Mie imi trebuie ceva simplu. Daca poate cineva doar sa imi defineasca erorile ce le am mai sus ar fi perfect si scriptul ar fi perfect functional. Nu imi trebuie nimic mai mult. Am incercat si eo vreo 20 min sa le definesc, am luat din alt script definiri, nu a mers nici cum. Eu nu mai stiu cum sa definesc. Rog pe cineva sa defineasca erorile si sa termin odata problema asta. Multumesc anticipat! :D
Acesta este codul:

Cod: Selectaţi tot

<?php
require "dbc.php";

function query($sql) {
    if (!$result = @mysql_query($sql)) {
        die($sql . '<br>' . mysql_error());
    }
    return $result;
}

$sql = "SELECT COUNT(*) FROM `administrare_contracte`";
$result = query($sql);
$total = mysql_result($result, 0);

// Etapa 2 - calculeaza offset-ul
$page = (int) isset($_GET['page']) ? $_GET['page'] : 1;
$limit = 10;
$totalPages = ceil($total / $limit);
if ($totalPages < 1) { $totalPages = 1; }
if ($page > $totalPages || $page < 1) {
    $page = 1;
}
$offset = $limit * ($page - 1);

// Etapa 3 - afiseaza rezultatele
$sql = "SELECT COUNT(*) FROM `administrare_contracte` LIMIT {$offset}, {$limit}";
$result = query($sql);
while ($row = mysql_fetch_assoc($result)) {
    echo "<tr align='center'><td>" . $row['camion'] . "</td><td>" . $row['sofer'] . "</td><td>" . $row['trailer'] . "</td><td>" . $row['marfa'] . "</td><td>" . $row['tonaj'] . " Tone</td><td>" . $row['ruta'] . "</td><td>" . $row['distanta'] . " KM</td><td>" . $row['timp'] . " minute</td><td>" . $row['viteza'] . " KM/H</td><td>" . $row['amenzi'] . " Primite</td><td><b>Administreaza</b></td></tr>";
}

// Etapa 4 - afiseaza paginarea
for ($pageNum = 1;$pageNum <= $totalPages;$pageNum++) {
    echo '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $pageNum . '">' . $pageNum . '</a>';
}
?>

laurentiu42
New Member
Mesaje: 3
Membru din: Mar Sep 13, 2016 7:05 pm

Re: Paginare

Mesajde laurentiu42 » Mar Sep 13, 2016 7:24 pm

Salutare,am thema video tube,stie cineva cum se face paginarea la acesta thema?
Fişiere ataşate
Untitled.jpg
Untitled.jpg (219.48 KiB) Vizualizat de 9168 ori

laurentiu42
New Member
Mesaje: 3
Membru din: Mar Sep 13, 2016 7:05 pm

Re: Paginare

Mesajde laurentiu42 » Mie Sep 14, 2016 2:04 am

Chiar nu stie nimeni cum se face o paginare pe thema video tube?


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 64 vizitatori