Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze stronicowaniem danych z mysql
Forum PHP.pl > Forum > PHP
chormi
witam długo szukałem skryptu stronicowania danych z mysql ale kiedy znalazłem strasznie się zawiodłem bowiem generowane przez niego linki nie prowadzą do kolejnych stron tylko do tej samej 1 strony. sad.gif

oto skrypt:

Kod
<?php

//Połączenie z mysql i wybranie bazy
$link = mysql_connect('localhost',**********','**************');
mysql_select_db('**********',$link);

require_once('funkcje.php');

//Domyślne wartości, odpowiednio liczby rekordów na strone i przesunięcia
$count=5;
$offset=0;
  
//Pobranie danych z $_GET jezsli ustawione
if(isset($_GET['count']))$count = $_GET['count'];
if(isset($_GET['offset']))$offset = $count*$_GET['offset']; //numer strony
  
//Pobranie liczby rekordów
$sql = 'Select count(*) from shoutbox';
$result = mysql_query($sql,$link);
$r = mysql_fetch_array($result);
//Liczba stron, uĹźycie ceil - zaokrąglenie w górę, w celu zapewnienia, Ĺźe Ĺźadna strona się nie straci
$pages = ceil($r[0]/$count);
  
//Pobranie odpowieniej paczki
$sql = 'Select * from shoutbox Limit '.$count.' offset '.$offset.';';
$result = mysql_query($sql,$link);
  
//Początek tabeli

  
//Pętla po wszystkich rekordach
while(($row=mysql_fetch_array($result))!=NULL){

echo emotki("<img src='gfx/user.gif'><span style='font-family : Verdana, Arial, Helvetica, sans-serif;font-size : 11px;'><b>$row[user]:</b><img src='gfx/www.gif' alt=".$row['strona']."><img src='gfx/status.gif' alt=".$row['gadu'].">: $row[wpis]</span><hr color='#000000' style='border-style: dashed;'>");

}
echo "Pozostałe strony z wpisami:<br><hr color='#000000'>";
//Pętla po stronach
for($i=1;$i<$pages;$i++){
//jeśli obecna strona, nie twórz linku do strony
if($i*$count==$offset){
echo ' '.$i.' ';
}else{

echo '<a href="index.php??count='.$count.'&offset='.$i.'"> '.$i.' </a>'; }
}
}
?>


z góry THX
nowotny
Spróbuj tak:
  1. <?php
  2. //Pobranie odpowieniej paczki
  3.  $sql = 'Select * from shoutbox Limit '.$offset.' , '.$count.';';
  4.  $result = mysql_query($sql,$link);
  5. ?>
chormi
po zmianie podanego przez ciebie fragmentu kodu jest jeszcze gorzej bo nie wyświetla linków do kolejnych stron sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif
.radex
Nie widzę błędu, ale spróbuj może klasy Nospor'a - Pager
ppp
O ile sie zorientowałem, skrypt dziala, a problemy jakie mialem to o jeden za dużo nawias "}" w przedostatniej linijce i nie wiem daczego w linijce
  1. <?php
  2. echo '<a href="index.php??count='.$count.'&offset='.$i.'"> '.$i.' </a>'; }
  3. ?>

masz dwa pytajniki przed zmiennymi, ale z dwoma też działa smile.gif.
em1X
czemu nie skorzystasz z gotowych i sprawdzonych skryptów? tj. PEAR DataGrid ?
chormi
bo te skrypty są zbyt złożone i byłyby zbyt trudne to adaptacji na potrzeby mojej strony ale

znalazłem jeszcze coś takiego

Kod
<?php
$page=$_REQUEST['page'];
$ile=5;
if($con=mysql_connect('localhost','********','*******'))
{
mysql_select_db('*********');
$zapytanie=("SELECT wpis FROM shoutbox LIMIT ".($page*$ile).", 3");
$wykonaj=mysql_query($zapytanie);
   while($wiersz=mysql_fetch_array($wykonaj))
   {
  
   echo emotki("<img src='gfx/user.gif'><span style='font-family : Verdana, Arial, Helvetica, sans-serif;font-size : 11px;'><b>$row[user]:</b><img src='gfx/www.gif' alt=".$row['strona']."><img src='gfx/status.gif' alt=".$row['gadu'].">: $row[wpis]</span><hr color='#000000' style='border-style: dashed;'><br>");

   }


list($wszystkich)=mysql_fetch_row(mysql_db_query('porcjowanie',"SELECT count(*) FROM `shoutbox`"));
$podstron=ceil($wszystkich/$ile-1);
if ($page>0) echo "<a href=porcjowanie.php?page=".($page-1).">Poprzednia</a>"; else
echo "Poprzednia";
for($x=0;$x<=$podstron;$x++)
   {
    
      if ($x==$page) echo "".($x+1).""; else echo "<a href=porcjowanie.php?page=$x>".($x+1)." </a>";
   }
if ($page<$podstron) echo "<a href=porcjowanie.php?page=".($page+1).">Następna</a>";
else echo "Następna";
}
?>


ale wywala mi:

Parse error: syntax error, unexpected T_STRING in /home/freehost/g/r/grypsy/www/monit2.php on line 17

a 17 linijka to:

Kod
$zapytanie=("SELECT wpis FROM shoutbox LIMIT ".($page*$ile).", 3");
nowotny
Cytat(chormi @ 9.02.2008, 17:47:09 ) *
a 17 linijka to:

Kod
$zapytanie=("SELECT wpis FROM shoutbox LIMIT ".($page*$ile).", 3");

Na pewno...? wg. mnie tu nie ma żadnego błędu parsowania... mój php też tak twierdzi... winksmiley.jpg
chormi
no dobra znalazłem kolejny ale to też nie działa już mnie co raz bardziej denerwuje ten skrypt

Kod
<?php

  //dane
  $parts = 10;

  if (isset($_GET['page']) && is_numeric($_GET['page'])) {
$page = $_GET['page'];
  } else {
$page = 1;
  }

  $query_base = "'SELECT * FROM `shoutbox` "
  $query_limit = "LIMIT ".($page-1)*$parts.",".$parts;

  $result = mysql_query($quer_base.$query_limit);
  while ($record = mysql_fetch_assoc($result)) {
//tutaj wyswietlanie rekordow
  }

  $query_pages = "SELECT (CEIL(COUNT(".$query_base.")/".$parts.")) as pages";

  extract(mysql_fetch_assoc(mysql_query($query_pages)));

  //linki ze stronami
  for ($i = 1; $i <= $pages; $i++) {
if ($i == $page) {
   echo $i;
} else {
   echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a>';
}
  }

?>


ale z kolei w tym skrypcie czepia się linijki (27): ale na wszelki wypadek dałem jeszcze (26)

Kod
$query_base = "'SELECT * FROM `shoutbox` "
$query_limit = "LIMIT ".($page-1)*$parts.",".$parts;


sciana.gif sciana.gif sciana.gif sciana.gif sciana.gif sadsmiley02.gif
nowotny
Cytat(chormi @ 9.02.2008, 19:12:47 ) *
ale z kolei w tym skrypcie czepia się linijki (27): ale na wszelki wypadek dałem jeszcze (26)

Kod
$query_base = "'SELECT * FROM `shoutbox` "
$query_limit = "LIMIT ".($page-1)*$parts.",".$parts;

No tutaj w 26 brakuje ci średnika...
chormi
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/freehost/g/r/grypsy/www/monit2.php on line 55

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/freehost/g/r/grypsy/www/monit2.php on line 63

Warning: extract() [function.extract]: First argument should be an array in /home/freehost/g/r/grypsy/www/monit2.php on line 63

linijka 55 to ta z "while" na początku

linijka 63 to ta z extract(mysql_fetch_assoc na początku

  1. <?php
  2.  
  3. for($i=0;$i<count($emot);$i++)
  4. {
  5. $zrodlo=str_replace($emot[$i][1],'<img src="emots/'.$emot[$i][0].'" alt="'.$emot[$i][0].'">',$zrodlo);
  6. }
  7.  
  8. return($zrodlo);
  9. }
  10.  
  11. //dane
  12. $parts = 10;
  13.  
  14. if (isset($_GET['page']) && is_numeric($_GET['page'])) {
  15. $page = $_GET['page'];
  16. } else {
  17. $page = 1;
  18. }
  19.  
  20.  
  21. require_once('config.php');
  22. $query_base = "SELECT * FROM `shoutbox` ";
  23. $query_limit = "LIMIT ".($page-1)*$parts.",".$parts;
  24.  
  25. $result = mysql_query($quer_base.$query_limit);
  26. while ($record = mysql_fetch_assoc($result)) {
  27.  
  28. echo "<img src='gfx/user.gif'><span style='font-family : Verdana, Arial, Helvetica, sans-serif;font-size : 11px;'><b>$row[user]:</b><img src='gfx/www.gif' alt=".$row['strona']."><img src='gfx/status.gif' alt=".$row['gadu'].">: $row[wpis]</span><hr color='#000000' style='border-style: dashed;'>";
  29.  
  30. }
  31.  
  32. $query_pages = "SELECT (CEIL(COUNT(".$query_base.")/".$parts.")) as pages";
  33.  
  34.  
  35. //linki ze stronami
  36. for ($i = 1; $i <= $pages; $i++) {
  37. if ($i == $page) {
  38.  echo $i;
  39. } else {
  40.  echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a>';
  41. }
  42. }
  43.  
  44. ?>


już na serio nie mam siły i do tego jutro rozprawa rozwodowa rodziców sad.gif sad.gif sad.gif sad.gif sad.gif
.radex
oj chłopie. Coraz bardziej mam wrażenie, że coś masz nie tak z php-owskim parserem :/

Popraw posta, zamieniając [ code ] na [ php ] - to będzie łatwiej się rozczytać. Wtedy łatwiej będzie nam pomóc winksmiley.jpg
domis86
Cytat(chormi @ 9.02.2008, 21:12:33 ) *
  1. <?php
  2. $result = mysql_query($quer_base.$query_limit);
  3. ?>


to poprawic na to:

  1. <?php
  2. $result = mysql_query($query_base.$query_limit);
  3. ?>



Nie uzywajcie extract() bo to robi sieczke z programu. Lepiej sfetchwoac rezultat do jakiejs zmiennej i z niej wyciagac po kolei.

I na poczatku programu daj se error_reporting(E_ALL), zeby widziec bledy narazie.
em1X
Cytat(chormi @ 9.02.2008, 17:47:09 ) *
bo te skrypty są zbyt złożone i byłyby zbyt trudne to adaptacji na potrzeby mojej strony ale


Proszę Cię. To raczej Twój kod jest złożony i trudny. Wynikiem jest to, że nie potrafisz się nawet we własnym kodzie odnaleźć.
Co tu jest trudnego?

  1. <?php
  2. $datagrid->bind($dataobject, $datagridOptions);
  3.  
  4. /* Get a reference to the Renderer object */
  5. $renderer =& $datagrid->getRenderer();
  6.  
  7. /* Get and output HTML links */
  8. $pagingHtml = $renderer->getPaging();
  9. echo "<p>Pages : $pagingHtml</p>";
  10.  
  11. /* Render the table */
  12. $datagrid->render();
  13. ?>
domis86
Chyba chromi chce zrobić samemu to, żeby się nauczyć jak to działa, a nie używać gotowej krowy-biblioteki.
b_chmura
Cytat(domis86 @ 10.02.2008, 15:43:01 ) *
Chyba chromi chce zrobić samemu to, żeby się nauczyć jak to działa, a nie używać gotowej krowy-biblioteki.


wtedy by nie pisał:

Cytat
no dobra znalazłem kolejny

Cytat
znalazłem jeszcze coś takiego

itd itp

śmiało może wykorzystać w/w klasę, problem zapewne tkwi w tym ze nie che mu się tym zainteresować.
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.