![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 27.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie mogę wybrnąć z takiego problemu:
1. mam 4 listy rozwijane, które generują 4 zmienne.Są umieszczone w pliku "category.php". 2. po kliknięciu submit formularza przechodzę na stronę "wynik.php" z wynikami spełniającymi kryteria wyboru z list 3. wszystko chodzi bez zarzutów ( tzn. wyświetlają się przedmioty o danych cechach) do momentu, aż zastosuję skrypt paginacji ( konieczny, bo nie chcę na jednej stronie wyświetlać setek elementów). 4. wyświetlają się tylko elementy na pierwszej stronie zaraz po kliknięciu "submit" w pliku "category.php".Dalej już nie działa - gdy klikam na kolejne strony pojawia się biały ekran. Na pasku adresu zmienia się tylko nr strony, tzn. wynik.php?page2 itd. 5.Zaznaczam, że sam skrypt paginacji jest ok. Podstawiłem w celach testowych w zapytaniu stałe zamiast zmiennych i paginacja śmiga aż miło...no ale nie o oto przecież chodzi... 6.nie jestem pewien, czy dobrze ustawiłem sesję: stosuję session_start() na każdej stronie, na stronie wynik.php piszę $_SESSION['cid']=$_POST['cid'] ; $_SESSION['mid']=$_POST['mid']; $_SESSION['dre']=$_POST['dre']; $_SESSION['przet']=$_POST['przet']; po czym na tej samej stronie wrzucam to do zapytania sql z zastosowaniem where i and. Bardzo proszę kogoś bardziej oblatanego o podpowiedź - być może gdzieś jest trywialny błąd. Poniżej kod pliku wynik.php: CODE <?php
session_start(); // sprawdzenie zawartości wszystkich zmiennych w sesji foreach($_SESSION as $sesja=>$wartosc) { echo "<p>".$sesja." = ".$wartosc."</p>"; } $_SESSION['cid']=$_POST['cid'] ; $_SESSION['mid']=$_POST['mid']; $_SESSION['dre']=$_POST['dre']; $_SESSION['przet']=$_POST['przet']; /*echo $_SESSION["cid"]; echo $_SESSION["mid"]; echo $_SESSION["dre"]; echo $_SESSION["przet"]; */ $cid=$_SESSION['cid']; $mid=$_SESSION['mid']; $dre=$_SESSION['dre']; $przet=$_SESSION['przet']; /* Place code to connect to your DB here. */ include('config.php'); // include your code to connect to DB. $tbl_name="globalna"; //your table name // How many adjacent pages should be shown on each side? $adjacents = 3; /* First get total number of rows in data table. If you have a WHERE clause in your query, make sure you mirror it here. */ $query = "SELECT COUNT(*) as num FROM $tbl_name WHERE category_id='$cid' AND cena_id='$mid' AND drewno_id='$dre' AND przetworniki_id='$przet' "; // $query = "SELECT COUNT(*) as num FROM $tbl_name WHERE category_id='".$_POST['cid']."' AND cena_id='".$_POST['mid']."' AND drewno_id='".$_POST['dre']."' AND przetworniki_id='".$_POST['przet']."'; // $query = "SELECT COUNT(*) as num FROM $tbl_name WHERE category_id='".$_GET['cid']."' AND cena_id='".$_GET['mid']."' AND drewno_id='".$_GET['dre']."' AND przetworniki_id='".$_GET['przet']."' "; // $query = "SELECT COUNT(*) as num FROM $tbl_name WHERE category_id='".$_SESSION['cid']."' AND cena_id='".$_SESSION['mid']."' AND drewno_id='".$_SESSION['dre']."' AND przetworniki_id='".$_SESSION['przet']."' "; // $query = "SELECT COUNT(*) as num FROM $tbl_name WHERE category_id='". $HTTP_SESSION_VARS['cid']."' AND cena_id='". $HTTP_SESSION_VARS['mid']."' AND drewno_id='". $HTTP_SESSION_VARS['dre']."' AND przetworniki_id='". $HTTP_SESSION_VARS['przet']."' "; // $query = "SELECT COUNT(*) as num FROM $tbl_name WHERE category_id=1 AND cena_id=2 AND drewno_id=3 AND przetworniki_id=5 "; // $query = "SELECT COUNT(*) as num FROM $tbl_name "; $total_pages = mysql_fetch_array(mysql_query($query)); $total_pages = $total_pages[num]; /* Setup vars for query. */ $targetpage = "wynik.php"; //your file name (the name of this file) $limit = 2; //how many items to show per page $page = $_GET['page']; if($page) { $start = ($page - 1) * $limit; //first item to display on this page }else{ $start = 0; //if no page var is given, set start to 0 } /* Get data. */ $sql = "SELECT * FROM $tbl_name WHERE category_id='$cid' AND cena_id='$mid' AND drewno_id='$dre' AND przetworniki_id='$przet' LIMIT $start, $limit"; //$sql = "SELECT * FROM $tbl_name WHERE category_id='".$_POST['cid']."' AND cena_id='".$_POST['mid']."' AND drewno_id='".$_POST['dre']."' AND przetworniki_id='".$_POST['przet']."' LIMIT $start, $limit"; // $sql = "SELECT * FROM $tbl_name WHERE category_id='".$_GET['cid']."' AND cena_id='".$_GET['mid']."' AND drewno_id='".$_GET['dre']."' AND przetworniki_id='".$_GET['przet']."' LIMIT $start, $limit"; // $sql = "SELECT * FROM $tbl_name WHERE category_id='".$_SESSION['cid']."' AND cena_id='".$_SESSION['mid']."' AND drewno_id='".$_SESSION['dre']."' AND przetworniki_id='".$_SESSION['przet']."' LIMIT $start, $limit"; //$sql = "SELECT * FROM $tbl_name WHERE category_id='". $HTTP_SESSION_VARS['cid']."' AND cena_id='". $HTTP_SESSION_VARS['mid']."' AND drewno_id='". $HTTP_SESSION_VARS['dre']."' AND przetworniki_id='". $HTTP_SESSION_VARS['przet']."' LIMIT $start, $limit"; // $sql = "SELECT * FROM $tbl_name WHERE category_id=1 AND cena_id=2 AND drewno_id=3 AND przetworniki_id=5 LIMIT $start, $limit"; $result = mysql_query($sql); /* Setup page vars for display. */ if ($page == 0) $page = 1; //if no page var is given, default to 1. $prev = $page - 1; //previous page is page - 1 $next = $page + 1; //next page is page + 1 $lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up. $lpm1 = $lastpage - 1; //last page minus 1 /* Now we apply our rules and draw the pagination object. We're actually saving the code to a variable in case we want to draw it more than once. */ $pagination = ""; if($lastpage > 1) { $pagination .= "<div class=\"pagination\">"; //previous button if ($page > 1) $pagination.= "<a href=\"$targetpage?page=$prev\">� previous</a>"; else $pagination.= "<span class=\"disabled\">� previous</span>"; //pages if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } } elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some { //close to beginning; only hide later pages if($page < 1 + ($adjacents * 2)) { for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } $pagination.= "..."; $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; } //in middle; hide some front and some back elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; $pagination.= "..."; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } $pagination.= "..."; $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; } //close to end; only hide early pages else { $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; $pagination.= "..."; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } } } //next button if ($page < $counter - 1) $pagination.= "<a href=\"$targetpage?page=$next\">next �</a>"; else $pagination.= "<span class=\"disabled\">next �</span>"; $pagination.= "</div>\n"; } ?> <?php while($row = mysql_fetch_array($result)) { // Your while loop here echo '<tr><td><IMG src="'. $row['foto']. '" alt="obrazek "> </td><td>'. $row ['firma']. '</td><td>'. $row ['model']. '</td><td>'. $row ['cena']. '</td></tr>'; } ?> <?=$pagination?> Ten post edytował bartek81 27.12.2012, 10:34:12 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Kod zapisania zmiennych w sesji wywołuj tylko wtedy gdy przesyłasz coś postem. Jeśli przechodzisz na następną stronę (metodą GET) to tablicę "$_POST" masz pustą i wtedy nadpisujesz zmienne w sesji null-ami. Gdybyś miał włączone wyświetlanie błędów otrzymałbyś stosowne informacje.
-------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 27.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi - WIELKIE DZIĘKI
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:09 |