Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> liczenie stron
tom23
post 10.09.2002, 15:30:23
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 21.04.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Mam zrobiona wyszukiwarke na Mysql i jak wpisze dane słowo to mi zwraca liste znalezionych rekordów ( prawidlowo ) smile.gif
Ale jak tych rekordow jest 5 czy 9 to Ok, ale gdy jest 200 czy 150 to lista robi sie strasznie dluga.
I chce zeby na strone byla lista 20 rekordow a reszta z donosnikami na dole strony Np.
1 2 3 Nastepny .
Tylko jest jeden problem nie wiem jak to zrobic.
Prosze o pomoc.

moj kodzik wyglada tak

<?php
mysql_connect ("moj serwer","user","*******");
mysql_select_db (mojabaza);
if($stan=='szukaj') {
$zapytanie = "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"
ORDER BY nazwa";
$wykonaj = mysql_query ($zapytanie);
$znaleziono = mysql_num_rows($wykonaj);
if ($znaleziono == "0")
{
print " ";
}
else
{
print "<DIV> Znaleziono trafień $znaleziono.<br></div>";
}


while($wiersz=mysql_fetch_array ($wykonaj)) {
echo " <tr>
<td width="30%"><DIV>".$wiersz['symbol']."</DIV></td>
<td width="70%"><div>".$wiersz['nazwa']."</div></td>
</tr>";
}
}
{
echo "</table>";
if ($znaleziono == "0")
{
print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>";
}

echo "<TABLE border=0 align=center ><tr>

<td><center><br>
<form method="get" action="index.php">
<input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR>
<input type="submit" value="szukaj" name="stan"></form></center></TD>";
echo "</TR></TABLE>";
}
?>


Czy ktos mi pomoze ?

Tomek
Go to the top of the page
+Quote Post
domm
post 10.09.2002, 15:45:49
Post #2





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 19.03.2002
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


W Twoim zapytaniu SQL:
Kod
SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"

ORDER BY nazwa

brakuje polecenia LIMIT X,Y (na końcu) które zawęzi liczbę znalezionych rekordów. X to numer rekordu od którego mają zostać prezentowane wyniki, a Y to ich ilość. Żeby to miało ręce i nogi, potrzebujesz jeszcze "pre-zapytania" np:
Kod
SELECT COUNT(*) FROM....
(bez limitu oczywiście), które pozwoli określić sumaryczną liczbę wyników. Znając liczbę wyników dzielisz sobie je na strony w zależności od tego ile chcesz wyświetlać (zmienna Y), a poźniej np. get-em do każdego dynamicznie wyświetlonego linku dodajesz zmienną X. Sorki że tak opisowo, ale chyba będzie lepiej jak sam napiszesz taki prosty skrypt :wink:
Go to the top of the page
+Quote Post
Seth
post 10.09.2002, 16:44:16
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Kod
Function page_index( $show ){

  global $_GET;

    

  $result = mysql_query( "SELECT * FROM jakas_tabela" );

  $number = mysql_num_rows( $result );



  $page_num = ceil( $number/$this->show );

  $page = ceil( $_GET['offset'] / $show ) + 1;  

  

  $index = "<b>".$page."</b>";



  for( $i = 1; $i <= $page_num; $i++ ){

    if( $page != $i ){

      $j = ($i- 1) * $show;

      $tmp .= "<a href="?offset=$j">$i</a> ";

    }

  }

  

  if( $page_num != 1 ) $index .= " [ $tmp ]";



  return $index;

}


$show - liczba wyswietlanych rekordow
Dzialanie funkcji mozna zobaczyc na www.rally.vel.pl smile.gif
Go to the top of the page
+Quote Post
tom23
post 11.09.2002, 14:18:03
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 21.04.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


To caly kod bedzie wygladał tak, prosze o sprawdzenie, a jak bedzie cos zle prosze o dalsze wskazowki. Za wszystkie listy z pomoca bardzo dziekuje.

Oto kod:

<?php
mysql_connect ("moj serwer","user","*******");
mysql_select_db (mojabaza);
if($stan=='szukaj') {
$zapytanie = "SELECT COUNT(*) FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"
ORDER BY nazwa ";
$wykonaj = mysql_query ($zapytanie);
$znaleziono = mysql_num_rows($wykonaj);
if ($znaleziono == "0")
{
print " ";
}
else
{
print "<DIV> Znaleziono trafień $znaleziono.<br></div>";
}


while($wiersz=mysql_fetch_array ($wykonaj)) {
echo " <tr>
<td width="30%"><DIV>".$wiersz['symbol']."</DIV></td>
<td width="70%"><div>".$wiersz['nazwa']."</div></td>
</tr>";
}
}
{
echo "</table>";
if ($znaleziono == "0")
{
print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>";
}

echo "<TABLE border=0 align=center ><tr>

<td><center><br>
<form method="get" action="index.php">
<input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR>
<input type="submit" value="szukaj" name="stan"></form></center></TD>";
echo "</TR></TABLE>";
}

Function page_index( $show ){
global $_GET;

$result = mysql_query( "SELECT * FROM towary" );
$number = mysql_num_rows( $result );

$page_num = ceil( $number/$this->show );
$page = ceil( $_GET['offset'] / $show ) + 1;

$index = "<b>".$page."</b>";

for( $i = 1; $i <= $page_num; $i++ ){
if( $page != $i ){
$j = ($i- 1) * $show;
$tmp .= "<a href="?offset=$j">$i</a> ";
}
}

if( $page_num != 1 ) $index .= " [ $tmp ]";

return $index;
}



?>



Jak znam zycie to pewnie cos zwaliłem !!!!
Go to the top of the page
+Quote Post
Seth
post 12.09.2002, 12:41:54
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Kod
<?php

mysql_connect ("moj serwer","user","*******");

mysql_select_db (mojabaza);



if($stan=='szukaj') {

  $zapytanie = "SELECT COUNT(*) FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa  ";

  $wykonaj = mysql_query ($zapytanie);

  $znaleziono = mysql_num_rows($wykonaj);

  

  if ($znaleziono == "0"){

    print " ";

  }else{

    print "<DIV> Znaleziono trafień $znaleziono.<br></div>";

  }



  while($wiersz=mysql_fetch_array ($wykonaj)) {

    echo " <tr>

    <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td>

    <td width="70%"><div>".$wiersz['nazwa']."</div></td>

    </tr>";

  }



  echo "<tr><td colspan=2 align=right>".page_index( 5 )."</td></tr>";

}



echo "</table>";



if ($znaleziono == "0"){

  print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>";

}



echo "<TABLE border=0 align=center ><tr>

  <td><center><br>

  <form method="get" action="index.php">

  <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR>

  <input type="submit" value="szukaj" name="stan"></form></center></TD>";

  echo "</TR></TABLE>";





Function page_index( $show ){

  global $_GET;

  global $znajdz;

    

  $result = mysql_query( "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa" );

  $number = mysql_num_rows( $result );



  $page_num = ceil( $number/$this->show );

  $page = ceil( $_GET['offset'] / $show ) + 1;  

  

  $index = "<b>".$page."</b>";



  for( $i = 1; $i <= $page_num; $i++ ){

    if( $page != $i ){

      $j = ($i- 1) * $show;

      $tmp .= "<a href="?offset=$j">$i</a> ";

    }

  }

  

  if( $page_num != 1 ) $index .= " [ $tmp ]";



  return $index;

}

?>


Tak powinno byc dobrze. Nie testowalem tego u siebie, wiec jak by byly jakies bledy to pisz.
Go to the top of the page
+Quote Post
tom23
post 13.09.2002, 09:37:32
Post #6





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 21.04.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Wielkie dzieki za pomoc !!!. Ale skrypcik sie wywala sad.gif
Wyswietla bląd

Kod
Warning: Division by zero in /var/www/html/motozbyt/test/inny/index.php on line 157



a linia 157 w moim skrypcie jest nastepujaca.

Kod
$page = ceil( $_GET['offset'] / $show ) + 1;


Wielki dzieki za pomoc , czy mozna zrobic cos z tym problemem.
Pozdrawiam
Tomek
Go to the top of the page
+Quote Post
Seth
post 13.09.2002, 10:33:55
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Sorry rabnalem sie w kodzie podczas przpisywania z mojego zrodla smile.gif

Blad jest w lini 156
Kod
$page_num = ceil( $number/$this->show );


Moja funkcja jest w classie i zapomnialem zmienic zmienna $this->show na $show tongue.gif

Powinno byc tak
Kod
$page_num = ceil( $number/$show );
Go to the top of the page
+Quote Post
tom23
post 13.09.2002, 11:44:12
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 21.04.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Juz jest lepiej ale jeszcze wyrzuca błędy.
Nie listuje rekordow.

Kod
Warning: Division by zero in /var/www/html/motozbyt/test/inny/index.php on line 157







[ 1 2 3 4 5 6 ]


tylko wyswietla na dole cyferki z kolejnymi linkami do nastepnych stron.

Pozdrawiam
Go to the top of the page
+Quote Post
tom23
post 13.09.2002, 11:45:48
Post #9





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 21.04.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


i jeszcze zle pokazuje ilosc trafien bo zawsze jest 1 a w rzeczywistosci znacznie wiecej.

Pozdrawiam
Go to the top of the page
+Quote Post
Seth
post 13.09.2002, 12:21:33
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Jak bede mial troche wiecej czasu potestuje to u siebie i podesle Ci kod.
Go to the top of the page
+Quote Post
Seth
post 13.09.2002, 13:56:50
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Kod
<?php

mysql_connect ("host","login","pass"); // zmien na odpowiednie

mysql_select_db ("baza");  // dane twojego serwera



echo "<table>";



if($stan=='szukaj') {

  $zapytanie = "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa";

  $wykonaj = mysql_query ($zapytanie);

  $znaleziono = mysql_num_rows($wykonaj);

  

  if ($znaleziono == "0"){

    print " ";

  }else{

    print "<DIV> Znaleziono trafień $znaleziono.<br></div>";

  }



  while($wiersz=mysql_fetch_array ($wykonaj)) {

    echo " <tr>

    <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td>

    <td width="70%"><div>".$wiersz['nazwa']."</div></td>

    </tr>";

  }



  echo "<tr><td colspan=2 align=right>Strona ".page_index( 3 )."</td></tr>"; // page_index( x ) gdzie x to liczba wyswietlanych rekordow na stronie

}



echo "</table>";



if ($znaleziono == "0"){

  print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>";

}



echo "<TABLE border=0 align=center ><tr>

  <td><center><br>

  <form method="get" action="test.php">

  <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR>

  <input type="submit" value="szukaj" name="stan"></form></center></TD>";

  echo "</TR></TABLE>";





Function page_index( $show ){

  global $_GET;

  global $znajdz;

    

  $result = mysql_query( "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"" );

  $number = mysql_num_rows( $result );



  $page_num = ceil( $number/$show );

  $page = ceil( $_GET['offset'] / $show ) + 1;  

  

  $index = "<b>".$page."</b>";



  for( $i = 1; $i <= $page_num; $i++ ){

    if( $page != $i ){

      $j = ($i- 1) * $show;

      $tmp .= "<a href="?offset=$j">$i</a> ";

    }

  }

  

  if( $page_num != 1 ) $index .= " [ $tmp ]";



  return $index;

}

?>


Ten kod przetestowalem u siebie i dziala. Oczywiscie login, haslo itp. musisz zmienic na odpowiednie twojego serwera.
Go to the top of the page
+Quote Post
tom23
post 13.09.2002, 15:34:21
Post #12





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 21.04.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Wielkie dzieki za pomoc ale niestet nie wszystko jest ok.
Sorki ze jestem taki marudny. Jeszcze raz sorki.

Skrypt dziła tylko ma jeszcze jedna wade.

Po wpisaniu do wyszukiwarki np. ab


to skrypt mi wyrzuca od razu wszystkie znalezione rekordy . A na dole strony znajduja sie cyferki z kolejnymi stronami (dobrze liczy - tak mialo byc),
lecz jak sie kliknie na cyferke np"3" zeby przejsc do strony 3 to on wraca do strony pierwszej bez znalezionego zadnego rekordu.

Strone testuje pod tym adresem

http://www.motozbyt.biz.pl/test/inny/index.php

Bardzo dziekuje za pomoc.
Tomek
Go to the top of the page
+Quote Post
Seth
post 13.09.2002, 16:29:41
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Kod
<?php

mysql_connect ("localhost","login","pass"); // wartosci do zmiany

mysql_select_db ("bartek"); // wartosc do zmiany



$show = 1; // ilosc pokazywanych rekordow

$plik= "test.php"; // nazwa pliku w ktorym jest ten skrypt

echo "<table>";



if($stan=='szukaj') {

  if( isset($_GET['offset']) ){

    $add = "LIMIT ".$_GET['offset'].", $show";

  }else{

    $add = "LIMIT 1, 1";

  }

  $zapytanie = "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa ".$add;

  $wykonaj = mysql_query ($zapytanie);

  $znaleziono = mysql_num_rows($wykonaj);

  

  if ($znaleziono == "0"){

    print " ";

  }else{

    print "<DIV> Znaleziono trafień $znaleziono.<br></div>";

  }



  while($wiersz=mysql_fetch_array ($wykonaj)) {

    echo " <tr>

    <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td>

    <td width="70%"><div>".$wiersz['nazwa']."</div></td>

    </tr>";

  }



  echo "<tr><td colspan=2 align=right>Strona ".page_index( $show )."</td></tr>";

}



echo "</table>";



if ($znaleziono == "0"){

  print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>";

}



echo "<TABLE border=0 align=center ><tr>

  <td><center><br>

  <form method="get" action="$plik">

  <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR>

  <input type="submit" value="szukaj" name="stan"></form></center></TD>";

  echo "</TR></TABLE>";





Function page_index( $show ){

  global $_GET;

  global $znajdz;

    

  $result = mysql_query( "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"" );

  $number = mysql_num_rows( $result );



  $page_num = ceil( $number/$show );

  $page = ceil( $_GET['offset'] / $show ) + 1;  

  

  $index = "<b>".$page."</b>";



  for( $i = 1; $i <= $page_num; $i++ ){

    if( $page != $i ){

      $j = ($i- 1) * $show;

      $tmp .= "<a href="?offset=$j&znajdz=".$_GET['znajdz']."&stan=szukaj">$i</a> ";

    }

  }

  

  if( $page_num != 1 ) $index .= " [ $tmp ]";



  return $index;

}

?>

Juz powinno byc wszystko OK. Mam nadzieje winksmiley.jpg
Go to the top of the page
+Quote Post
tom23
post 17.09.2002, 08:29:27
Post #14





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 21.04.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Wielkie dzieki .
laugh.gif Gra i buczy. laugh.gif
Pozdrawiam :wink:
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 22:15