Skocz do zawartości

Problem z nawigacjią do porcjowania


Strefamocy

Rekomendowane odpowiedzi

Witam,

mam pewien problem, mianowicie w nawigacji stworzyłem link "poprzedni" link "następny" i [1],[2],[3] itd. i wszystko działa poprawnie oprócz tego że jak wejdę na link "następny" to nie widzę linków [1],[2] itd.

Oto mój kod porcjowania:

<?
	 							 $policz="SELECT COUNT(*) AS ILE FROM `Produkty`,`Producenci`, `Kategorie` WHERE ID_Prod = Producent AND ID_Kategorii=kategoria ";

 								 $wynikpolicz=mysql_query($policz);

								   while($temp=mysql_fetch_array($wynikpolicz)) $ile=$temp["ILE"];
								 mysql_free_result($wynikpolicz);
								  $a=$page+1;
								 $b=0;

								 if(($ile-$page)>5) $b=$page+5;
								 else $b=$ile;

								//zmienne do przechodzenia na poprzednią i następną strone wyniku
								$pop=$page-5;
								$nast=$page+5;
							?>

							  <td>
								  Produkty: <?echo $a.' - ';?><?echo $b;?><?echo ' z '.$ile;?>
							  </td>
							  <td>
								    Strony:
							  </td>
 								 <?
 								 if($page>0) {
								   ?>
							  <td>
									<a href="index.php?<?echo "page=$pop"; echo "&"; echo "sort=$SORT"; echo "&"; echo "szukaj=$SZUKAJ"; ?>">Poprzednia</a>
							  </td>
								  <?
									  } else{
 								 ?>
							  <td>
								  Poprzednia
							  </td>
							  <td><?
								  $a=1;
								for($i=0;$i<$ile;$i=$i+5){
								  echo("<a href='index.php?page=$i'> $a </a>");
								  $a++;
								}

							?>
							</td>
<?
 									 }
 									 if(($page+5)<$ile){
								   ?>
							  <td>
									<a href="index.php?<?echo "page=$nast"; echo "&"; echo "sort=$SORT"; echo "&"; echo "szukaj=$SZUKAJ"; ?>">Następna</a>
							  </td>
 								 <?
 									 } else{
								  ?>
 							 <td>
 							 	Następna
 							 </td>

Proszę o pomoc jeśli ktoś zna rozwiązanie.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Czytałem i zrobiłem tak jak wszędzie opisywali...

Skoro byś tak zrobił to zapewniam cie, że by działało
Za takie odpowiedzi dziękuje jak Twoje Mion, proszę żeby ktoś przeanalizował kod i znalazł bład czemu tak się dzieje.
To wklejaj kod czytelny a nie w rozsypce!

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

//na gorze indexu
//sprawdzenie czy uzywano porcjowania
if(isset($_GET["page"])) $page=$_GET["page"];
else $page=0;
$limit=5;
$produkt.=" LIMIT $page,$limit";

//nawigacja po porcjach
<table>
<tr>
<?
$policz="SELECT COUNT(*) AS ILE FROM `Produkty`,`Producenci`, `Kategorie` WHERE ID_Prod = Producent AND ID_Kategorii=kategoria ";

$wynikpolicz=mysql_query($policz);

while($temp=mysql_fetch_array($wynikpolicz)) $ile=$temp["ILE"];
mysql_free_result($wynikpolicz);
$a=$page+1;
$b=0;

if(($ile-$page)>5) $b=$page+5;
else $b=$ile;

//zmienne do przechodzenia na poprzednią i następną strone wyniku
$pop=$page-5;
$nast=$page+5;
?>

<td>
Produkty: <?echo $a.' - ';?><?echo $b;?><?echo ' z '.$ile;?>
</td>
<td>
 Strony:
</td>
<?
if($page>0) {
?>
<td>
<a href="index.php?<?echo "page=$pop"; echo "&"; echo "sort=$SORT"; echo "&"; echo "szukaj=$SZUKAJ"; ?>">Poprzednia</a>
</td>
<?
} else{
?>
<td>
Poprzednia
</td>
<td><?
$a=1;

for($i=0;$i<$ile;$i=$i+5){
echo("<a href='index.php?page=$i'> $a </a>");
$a++;
}

?>
</td>
<?
}
if(($page+5)<$ile){
?>
<td>
<a href="index.php?<?echo "page=$nast"; echo "&"; echo "sort=$SORT"; echo "&"; echo "szukaj=$SZUKAJ"; ?>">Następna</a>
</td>
<?
} else{
?>
<td>

Następna
</td>
<?
}
?>
</tr>
</table>

Ps. Wszystkie pomysły podawane wszędzie dzisje się podobnie i nie jestem pierwszą osobą której znikają linki nawigacyjne po przejściu na następną stronę i nigdzie nie ma wprost przyczyny i rozwiązania.

Odnośnik do komentarza
Udostępnij na innych stronach

Poniżej masz SPRAWDZONĄ podstawowa implementację porcjowania. Dostosuj sobie do własnych potrzeb:

$strona = $_GET['s'];
$wns = 20;// Wynikow Na Strone
settype($strona, "integer");
$zapytanie_max = mysql_query("SELECT COUNT(*) AS ile FROM UserKonto U");
$zapytanie_max = mysql_fetch_object($zapytanie_max);
$r_max = $zapytanie_max->ile; 
// $r_max zawiera ilosc wszystkich rekordow w tabeli

echo '<strong>Wszystkicj:' .$r_max.'</strong><br />';;

$tresc_zapytania = 'SELECT * FROM UserKonto U LIMIT '.($strona*$wns).','.$wns;
$zapytanie = mysql_query($tresc_zapytania);
while ($rekord = mysql_fetch_object($zapytanie))
{
echo $rekord->nick.'<br />';
}

$pNum = ceil($r_max/$wns);

for ($i=0;$i<$pNum;$i++)
{
echo '<a href="ile_test.php?s='.$i.'">['.($i+1).']</a> ';
}

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

OK, dzieki super zadziałało po zmixowaniu tych dwóch kodów.

Ale chciałbym jeszcze dorobić do tego 2 rzeczy:

mianowicie chciałbym wyświetlać jeszcze coś takiego: "Produkty 1-5" na pierwszej porcji "Produkty 6-10" na drugiej porcji itd.

Druga rzecz jaką chce zrobić to wyjać jakoś informacje gdzie jestem, czyli np. jak jestem na 2 porcji to aby link "[2]" się powiększał lub coś w tym stylu aby było wiadomo na której porcji się jest w danej chwili?

Bede wdzieczy za pomoc.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

1) Nie rozumiem

2) Np stylami:

for ($i=0;$i<$pNum;$i++)
{
$style=($i==$_GET['s'])?'style="font-size: 26px"':'';
echo '<a href="ile_test.php?s='.$i.'" '.$style.'>['.($i+1).']</a> ';
}

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Ad1)

Chodzi mi o wyświetlanie dwóch dodatkowych informacji przy okazji porcji, czyli na piewrszej zakładce napis : "Produkty 1-5" gdzie 1 oznacza pierwszy rekord z bazy a 5 ostatni w danej porcji, na nastepnej porcji wyswietlal by sie napis "Pordukty: 6-10" gdzie 6 to pierwsza pozycja drugiej porcji a 10 ostatnia. Oczywiście generować by się to miało automatycznie w zależności od porcji.

Nie wiem czy takie wyjasnienie wystarczy?

Odnośnik do komentarza
Udostępnij na innych stronach

Skoro masz ustawione porcje w zmiennej: $wns = 10;// Wynikow Na Stronę a w $_GET['s']; nr strony to wykonujesz odpowiednio zmożenie i dodawanie np takie rozwiązanie:

$jest = $wns * $_GET['s']+$wns;
$od = ($_GET['s']==0)?'0':$wns*$_GET['s'];
echo'<br />Pozycje od: '.$od.' do:'. $jest;

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za pomoc, wszystko działa poprawnie.

A mam pytanie czysto teoretyczne, na jakiej zasadzie działa

$style=($i==$_GET['s'])?'style="font-size: 26px"':'';

Mianowicie chodzi mi o ten znak zapytania i apostrof i na końcu dwukropek?? Bo nie do końca rozumiem działania tego kodu. Jesli można rozłożyć na czynniki pierwsze i opisać działanie?

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Mamy zmienną $od której przypisujmy wartość z prawej strony w zależności od wyniku sprawdzanego wyrażenia w nawiasach() Jeśli wartość w nawiasach jest (TRUE) zmiennej przed wyrażeniem czyli $od zostanie przypisana wartość po znaku ?'jakas_wartosc' jeśli FALSE po :'inna_wartosc';

$od=(TRUE)?'true_to_ta_wartosc':'jesli_fales_inna_wartosc';

Jest to równoważne z instrukcja if else:

if(TRUE){$od='true_to_ta_wartosc';} else { $od='jesli_fales_inna_wartosc';}

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Proszę :D

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Teraz jeszcze patrząc na ten kod wydaje mi się, że cześć jest napisana obiektowo, mianowicie:


$zapytanie_max = mysql_query("SELECT COUNT(*) AS ile FROM `Produkty`,`Producenci`, `Kategorie` WHERE ID_Prod = Producent AND ID_Kategorii=kategoria");

$zapytanie_max = mysql_fetch_object($zapytanie_max);
$r_max = $zapytanie_max->ile;


Jeśli to możliwe to prosiłbym o przerobienie tego na strukturalny, żebym lepiej to zrozumiał.

Z góry dziękuje

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności