Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]problem ze stronicowaniem elementów
Forum PHP.pl > Forum > Przedszkole
czarnaowca777
Witam
Mam na stronie element - rozwijaną listę, do której wczytuję elementy - kategorie z bazy i na jej podstawie wyświetlam artykuły z danej kategorii.
Po wybraniu kategorii wyświetlam artykuły stronicując je np. po 5 na stronie tylko że to nie działa, bo po dołączeniu stronicowania okazuje się,
że przecież wybierając kolejną stronę artykułów z danej kategorii strona się przeładowuje i już nie wie co było wybrane z listy (jaka kategoria).
Czy możecie mi jakoś dać pomysł (a jak to wymaga większej wiedzy, której nie posiadam to chociaż mniej-więcej wytłumaczyć gdzie szukać rozwiązania) i jak doprowadzić to do ładu i składu?

ps.Jeżeli potrzeba fragment kodu celem zobaczenia co z tym zrobić można to wkleję no ale to jest stronicowanie które przed dodaniem listy działało i zwykła rozwijana lista z przyciskiem submit, która też działa tylko w połączeniu ze stronicowaniem nie ma sensu...
Ruch Radzionków
pokażesz kod questionmark.gif bo bez kodu to mogę zmyślac co tam może byc
czarnaowca777
wklejam całość ale oznaczyłam mniej więcej co gdzie czym jest bo trochę tam chaos...

Kod
// to poniżej wyświetla rozwijaną listę kategorii do wyboru


$zapytan=mysql_query('SELECT * FROM kategorie ORDER BY id DESC');
echo "<form method=\"get\">";
echo "<select class=\"element select medium\" id=\"element_7\" name=\"element_7\">";
echo " <option value=\"\" selected=\"selected\">Wybierz kategorię i potwierdź wybór aby wyświetlić</option>";
while ($option=mysql_fetch_assoc($zapytan)){
echo '<option value="'.$option['nazwa'].'">'.$option['nazwa'].'</option>';}
echo "</select>";
echo "<input id=\"saveForm\" class=\"button_text\" type=\"submit\" name=\"submit\" value=\"Ok\" />";
echo "</form>";


if (isset($_GET["submit"])){
if (empty($_GET["element_7"])){
    echo "<p style=\"color:red; font-size:17px\"><b>Musisz wybrać kategorię z listy aby wyświetlić artykuły !</b></p>";}
else{


// to poniżej jeżeli użytkownik wcisnął wcześniej submit i wybrał kategorię  wyświetla artykuły z wybranej z listy kategorii po 2 na stronie, jak ich więcej ogółem to je stronicuje


$wybor = isset($_GET['element_7']) && !empty($_GET['element_7']) ? $_GET['element_7'] : '';
@mysql_query("SET NAMES 'utf8';");
if(isset($_GET['page'])) $subpage = $_GET['page']; else $subpage = '';
$perPage = 2;
if (!empty($_GET['subpage']) && (is_numeric($_GET['subpage'])))
{
$subpage = (int) $_GET['subpage'];
}
if ($subpage < 1)
{
$subpage = 1;
}
@mysql_query("SET NAMES 'utf8';");
$start = ($subpage - 1) * $perPage;
$zapytanie = "SELECT * FROM `artykuły`  WHERE kategoria='".$wybor."' ORDER BY `DATA` DESC LIMIT ".$start.", ".$perPage."";
$idzapytania = @mysql_query($zapytanie);
$max_zapytanie = "SELECT * FROM `artykuły` WHERE kategoria='".$wybor."' "; // żeby się pozbyć głupiego limitu [ustalamy max stron]
$max_idzapytania = mysql_query($max_zapytanie);
if(mysql_real_escape_string((!isset($_GET['id'])) or empty($_GET['id'])))
{
while ($wiersz = @mysql_fetch_array($idzapytania))
{


//tutaj to tylko " śmieci" tzn. część odpowiedzialna za to jak się wyświetlają te artykuły;)


   $id=$wiersz['id'];
   echo "<table border=\"0px\" width=\"770px\" background=\"nawigacja/b2.jpg\">";
   echo "<img src=\"top.png\">";
   echo "<tr><td width=\"700px\"  background=\"nawigacja/b1.jpg\"><p title=\"Nagłówek\"><u>".$wiersz['tresc']."</u></p></td>
   <td><form>
   <input type=\"button\" onclick=\"usunWpis($id)\" value=\"Usuń\" />
   </form>
   </td>
   <td><a href=\"edytuj_artykul.php?id=$id\"><img src=\"nawigacja/ed.png\" title=\"Edytuj\" align=\"middle\"></a></td></tr>";
   echo "</table>";
   echo "<table border=\"0px\" width=\"770px\" background=\"nawigacja/b2.jpg\">";
   echo "<tr><td background=\"nawigacja/b1.jpg\"><p title=\"Treść - aby edytować kliknij przycisk w prawym górnym rogu ramki\">
   <i>".$wiersz['tresc']."</i><br /><br /></td></tr>";
   echo "</table>";
   echo "<table border=\"0px\" width=\"770px\" background=\"nawigacja/b2.jpg\">";
   echo "<tr><td background=\"nawigacja/b1.jpg\"><p title=\"ID newsa\"><b>ID:</b> ".$wiersz['id']."</p></td>
   <td align=\"right\" background=\"nawigacja/b1.jpg\">
   <p title=\"data dodania\">".$wiersz['data']."</p></td></tr>";
          echo "</table>";
     echo "        <img src=\"bottom.png\">";
    echo "<br />";
   echo "<br />";

   }
   }


//ciąg dalszy stronicowania poniżej:


$prev = $subpage - 1;
$next = $subpage + 1;
$prevLink = 'przegladaj_artykuly.php?page='.$prev;
$nextLink = 'przegladaj_artykuly.php?page='.$next;
$ilosc_wierszy = mysql_num_rows($max_idzapytania);
if($subpage > 1)
echo'<center><a style="text-decoration: none;" href="'.$prevLink.'">Poprzednia strona</a></center> ';
$stron=round($ilosc_wierszy/$perPage);
echo "<div align=\"center\">";
for($i=1; $i<=$stron; ++$i)
{
if($i==$subpage)
echo $i;
else
echo '<a style="text-decoration: none;" href="przegladaj_artykuly.php?page='.$i.'">'.$i.' </a>';
}
if($subpage < $stron)
echo ' <a style="text-decoration: none;" href="'.$nextLink.'">Następna strona</a>';
echo "<br /><a href=\"admin.php\"><img src=\"nawigacja/home.jpg\"></a>";
echo "</div>";
mysql_close();}}
?>
Ruch Radzionków
niech stracę podam ci moje stronnicowanie
  1. define('MAXPAGE', 25);
  2. $pok = mysql_query("SELECT COUNT(*) FROM users ORDER BY id");
  3. list($max) = mysql_fetch_row($pok);
  4. $total = ceil($max / MAXPAGE);
  5. $page = intval(@$_GET["page"]);
  6. if(0 == $page)
  7. {
  8. $page = 1;
  9. }
  10. $start = MAXPAGE * ($page - 1);
  11. $full = MAXPAGE;
  12. $obej = mysql_query("SELECT * FROM users ORDER BY id limit $start, $full");
  13. while(list($id, $login, $haslo, $mail, $status, $langs, $data, $admin, $oficjalne) = mysql_fetch_row($obej))
  14. {
  15.  
  16. }
  17. if($_GET[page] == '')
  18. {
  19. $strona = '1';
  20. }
  21. else
  22. {
  23. $strona = $_GET[page];
  24. }
  25. $poprzedniastrona = $_GET[page] - 1;
  26. if($_GET[page] == '')
  27. {
  28. $nastepnastrona = '2';
  29. }
  30. else
  31. {
  32. $nastepnastrona = $_GET[page] + 1;
  33. }
  34. echo'</table>';
  35. if($total == '0')
  36. {
  37.  
  38. }
  39. else
  40. {
  41. echo'<table align="center">
  42. <tr>
  43. <td>';
  44. if(($_GET[page] == '1') || ($_GET[page] == ''))
  45. {
  46. }
  47. else
  48. {
  49. echo'<a href="index.php?event=users&page=1"><input type="submit" value="'.$lang[pierwszastronakatalog].'"></a><a href="index.php?event=users&page='.$poprzedniastrona.'"><input type="submit" value="'.$lang[poprzedniastronakatalog].'"></a>';
  50. }
  51. echo $lang[stronakatalog]; echo $strona; echo $lang[zkatalog]; echo $total;
  52. if($strona == $total)
  53. {
  54.  
  55. }
  56. else
  57. {
  58. echo'<a href="index.php?event=users&page='.$nastepnastrona.'"><input type="submit" value="'.$lang[nastepnastronakatalog].'"></a><a href="index.php?event=users&page='.$total.'"><input type="submit" value="'.$lang[ostatniastronakatalog].'"></a>';
  59. }
  60. echo'</td>
  61. </tr>
  62. </table>';
  63. }

define('MAXPAGE', 25); oznacza ile zapytań ma się znaleśc na jednej stronie

sobie to zmień
bo to jest z mojej strony
po prostu na tej samej stronie wyświetla ci to co chcesz tylko na samym końcu jest &page= czyli ktura strona

i daj pomógł
czarnaowca777
Kod
    <input type="submit" value="'.$lang[pierwszastronakatalog].'"></a>
    <a href="przegladaj_artykuly.php?event=users&page='.$poprzedniastrona.'">

Czy mógłbyś mi powiedzieć jak działa to event=users&page?
Ja jestem jeszcze średnio oświeconym człowiekiem w tym temacie więc jak już kopiuję prawie gotowca to chociaż czegoś się nauczyć bym chciała przy tym wink.gif
No i ciągle mi wywala że : Use of undefined constant page - assumed 'page' in (...)
i Undefined index: page in (...)
oraz Use of undefined constant stronakatalog - assumed 'stronakatalog' in (...) - nie bardzo rozumiem mam to czymś zastąpić to "stonakatalog" - co to robi ? tam ma być ścieżka do czegoś?

do page dodałam apostrofy i mu przeszło ale za to się czepia Undefined variable: lang


aha i tak z innej beki trochę
mój link wygląda tak : przegladaj_artykuly.php?element_7=nazwakategorii&submit=Ok
Przy czym element_7 to jest pobrana z listy kategoria... nie wiem - tak ma być? ty miałeś tam users ale moja baza to "artykuły" więc zamieniłam analogicznie i wyszły takie klocki.
Ruch Radzionków
to jest link nie muszisz miec event=user tylko tam zastepujesz to swoim linkiem tak jak masz na php.pl taki link:
index.php?showtopic=195401
to muszisz to zmienic na swoj link jaki jest otwarty ta strona
czarnaowca777
a co z tym lang - Undefined variable: lang
Gdzie to zdefiniować i jako co?
Kod
  echo $lang['stronakatalog']; echo $strona; echo $lang['zkatalog']; echo $total;
    if($strona == $total)
    {
    
    }
    else
    {
    echo'<a href="przegladaj_artykuly.php?&page="'.$nastepnastrona.'"><input type="submit" value="'.$lang['nastepnastronakatalog'].'"></a
    <a href="przegladaj_artykuly.php?&page='.$total.'"><input type="submit" value="'.$lang['ostatniastronakatalog'].'"></a>';

Ruch Radzionków
zamiast tego
  1. echo $lang['stronakatalog']; echo $strona; echo $lang['zkatalog']; echo $total;

zrób tak
  1. echo'Strona'; echo $strona; echo ' z '; echo $total;
czarnaowca777
Kod
@mysql_query("SET NAMES 'utf8';");
define('MAXPAGE', 1);
    $pok = mysql_query("SELECT COUNT(*) FROM users ORDER BY id");
    list($max) = mysql_fetch_row($pok);
    $total = ceil($max / MAXPAGE);
    $page = intval(@$_GET["page"]);
    if(0 == $page)
    {
    $page = 1;
    }
    $start = MAXPAGE * ($page - 1);
    $full = MAXPAGE;
    $obej = mysql_query("SELECT * FROM users ORDER BY id limit $start, $full");
    while(list($id, $login, $haslo, $mail, $status, $langs, $data, $admin, $oficjalne) = mysql_fetch_row($obej))
    {
     echo "$id <br/>";
     echo "$login <br/>";
     echo "$haslo <br/>";
    }
    if($_GET['page'] == '')
    {
    $strona = '1';
    }
    else
    {
    $strona = $_GET['page'];
    }
    $poprzedniastrona = $_GET['page'] - 1;
    if($_GET['page'] == '')
    {
    $nastepnastrona = '2';
    }
    else
    {
    $nastepnastrona = $_GET['page'] + 1;
    }
    echo'</table>';
    if($total == '0')
    {
    
    }
    else
    {
    echo'<table align="center">
    <tr>
    <td>';
    if(($_GET['page'] == '1') || ($_GET['page'] == ''))
    {
    }
    else
    {
    echo'<a href="test.php?event=users&page=1"><input type="submit" value="'.$lang[pierwszastronakatalog].'">
    </a><a href="test.php?event=users&page='.$poprzedniastrona.'"><input type="submit" value="'.$lang[poprzedniastronakatalog].'"></a>';
    
    }
    echo'Strona'; echo $strona; echo ' z '; echo $total; echo "</br";
    if($strona == $total)
    {
    
    }
    else
    {
  echo'<a href="test.php?event=users&page='.$nastepnastrona.'"><input type="submit" value="'.$lang[nastepnastronakatalog].'"></a>
  <a href="test.php?event=users&page='.$total.'"><input type="submit" value="'.$lang[ostatniastronakatalog].'"></a>';
    }
    echo'</td>
    </tr>
    </table>';
    }
    ?>


A więc mam coś takiego,

Notice: Undefined index: page in C:\...\test.php on line 33

Notice: Undefined index: page in C:...\test.php on line 41

Notice: Undefined index: page in C:\...\test.php on line 42

Notice: Undefined index: page in C:\...\test.php on line 60

Notice: Use of undefined constant nastepnastronakatalog - assumed 'nastepnastronakatalog' in C:\...\test.php on line 76

Notice: Undefined variable: lang in C:\...\test.php on line 76

Notice: Use of undefined constant ostatniastronakatalog - assumed 'ostatniastronakatalog' in C:\...\test.php on line 77

Notice: Undefined variable: lang in C:\...\test.php on line 77

Nie bardzo ogarniam te błędy, bo mając 4 rekordy w testowej bazie users i rozmieszczając je po 1 na stronie mam taki efekt, że kliknięcie przycisku następna strona od razu przenosi do ostatniej
bedąc na ostatniej klikam wstecz i jestem na stronie 1
Gdy jestem na 4 klikam następną i jestem na str 3 a tam z dwóch robią się 4 przyciski...
value na przyciskach nie działa.
Czy tobie to działa poprawnie? bo poza tą wskazówką i dodaniem do page apostrofów bo wywalało błąd to nic nie zmieniałam

No i jeszcze to mówiłeś że to będzie jakby na jednej stronie tak, bez odświerzania jeśli dobrze rozumiem a tu też jest page1, page2 itd - jak to ma działać ? To mi zadziała z listą o której wcześniej pisałam?
Czym to się różni zasadniczo od mojego stronicowania?





Ruch Radzionków
mój kod działa w 100% to po 1 a po 2 pokaz cały kod bo nie wiem w jakiej linijce co się znajduje
czarnaowca777
Kod
<?php
$adres_ip_serwera_mysql_z_baza_danych = '127.0.0.1';
$nazwa_bazy_danych = 'nazwa';
$login_bazy_danych = '';
$haslo_bazy_danych = '';
if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,$login_bazy_danych,$haslo_bazy_danych) ) {
   echo 'Nie moge polaczyc sie z baza danych';
     exit (0);
}
if ( !mysql_select_db($nazwa_bazy_danych) ) {
   echo 'Blad otwarcia bazy danych';
     exit (0);
}
@mysql_query("SET NAMES 'utf8';");
define('MAXPAGE', 1);
    $pok = mysql_query("SELECT COUNT(*) FROM users ORDER BY id");
    list($max) = mysql_fetch_row($pok);
    $total = ceil($max / MAXPAGE);
    $page = intval(@$_GET["page"]);
    if(0 == $page)
    {
    $page = 1;
    }
    $start = MAXPAGE * ($page - 1);
    $full = MAXPAGE;
    $obej = mysql_query("SELECT * FROM users ORDER BY id limit $start, $full");
    while(list($id, $login, $haslo, $mail, $status, $langs, $data, $admin, $oficjalne) = mysql_fetch_row($obej))
    {
     echo "$id <br/>";
     echo "$login <br/>";
     echo "$haslo <br/>";
    }
    if($_GET['page'] == '')
    {
    $strona = '1';
    }
    else
    {
    $strona = $_GET['page'];
    }
    $poprzedniastrona = $_GET['page'] - 1;
    if($_GET['page'] == '')
    {
    $nastepnastrona = '2';
    }
    else
    {
    $nastepnastrona = $_GET['page'] + 1;
    }
    echo'</table>';
    if($total == '0')
    {
    
    }
    else
    {
    echo'<table align="center">
    <tr>
    <td>';
    if(($_GET['page'] == '1') || ($_GET['page'] == ''))
    {
    }
    else
    {
    echo'<a href="test.php?event=users&page=1"><input type="submit" value="'.$lang[pierwszastronakatalog].'">
    </a><a href="test.php?event=users&page='.$poprzedniastrona.'"><input type="submit" value="'.$lang[poprzedniastronakatalog].'"></a>';
    
    }
    echo'Strona'; echo $strona; echo ' z '; echo $total; echo "</br";
    if($strona == $total)
    {
    
    }
    else
    {
  echo'<a href="test.php?event=users&page='.$nastepnastrona.'"><input type="submit" value="'.$lang[nastepnastronakatalog].'"></a>
  <a href="test.php?event=users&page='.$total.'"><input type="submit" value="'.$lang[ostatniastronakatalog].'"></a>';
    }
    echo'</td>
    </tr>
    </table>';
    }
    ?>


i to są błędy od razu na test.php a nie te co wywala na kliknięciu dalej czy poprzednia:
Notice: Undefined index: page in C:\\test.php on line 33

Notice: Undefined index: page in C:\\test.php on line 41

Notice: Undefined index: page in C:\\test.php on line 42

Notice: Undefined index: page in C:\\test.php on line 60

Notice: Undefined index: page in C:\\test.php on line 60
Strona1 z 4 Notice: Use of undefined constant nastepnastronakatalog - assumed 'nastepnastronakatalog' in C:\\test.php on line 76

Notice: Undefined variable: lang in C:\\test.php on line 76

Notice: Use of undefined constant ostatniastronakatalog - assumed 'ostatniastronakatalog' in C:\\test.php on line 77

Notice: Undefined variable: lang in C:\\test.php on line 77
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.