Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
9
Cevap
1453
Tıklama
0
Öne Çıkarma
PHP'de Sayfa Sıralama
B
15 yıl
Er
Konu Sahibi

Ürünlerin olduğu bir sayfa var ve bütün ürünler tek sayfa halinde çıkıyor.Benim yapmak istediğim ürünleri 6'şar 6'şar görüntülemek bunun içinde 1-2-3-4 gibi sayfa sıralaması yapmak istiyorum.1. sayfada database'de bulunan ilk 6 ürün, 2. sayfada sonraki 6 ürün bu şekilde bir sıralama yapmak istiyorum.Adres çubuğundada products.php?page=1 şeklinde çıkmasını istiyorum ama bir türlü beceremedim.Tek problemim sayfaları sıralamada.products.php sayfasınında kodlarını yolluyorum.Yardımlarınızı bekliyorum.
$catsql = "SELECT * FROM categories;"; 
$catresult = mysql_query($catsql);
?>
<?if($_GET['d']=='ok'){?>
Product is deleted!<br><br>
<? } ?>

<table width="80%" border="0">
<tbody>
<tr>
<td height="200"> </td>
<td valign="top" style="width:100%" align="center">
<?
$str="select * from products ORDER BY 'id' ASC";

$q=mysql_query($str);
$b=mysql_num_rows($q);
//echo "$q";
if($b)
{
?>
<table height="300" border="0">
<?
for($i=0;$i<$b;$i=$i+3)
{
?>
<tr><td><? product_draw(mysql_result($q,$i,"id")); ?></td>
<td><? if(($i+1)!=$b) product_draw(mysql_result($q,$i+1,"id")); ?></td>
<td><? if(($i+2)<$b) product_draw(mysql_result($q,$i+2,"id")); ?></td></tr>
<?
}
?>
</table>
<?
}
else
{
echo("<br><br><br>No Product!!!");
}
function product_draw($id)
{$q=mysql_query("select name,description,image,price from products where id=".$id." limit 1");
?>
<table cellpadding="5" cellspacing="5" width="212" border="1">
<td align="middle" width="100%">
<table width="185" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle"><img src="productimages/<? if(!mysql_result($q,0,"image")){?>dummy.jpg<? }else{ echo mysql_result($q,0,"image");}?>" width="140" border="0" /></a> </td>
</tr>
<tr>
<td align="center"><? echo mysql_result($q,0,"name");?></a></td></tr>
<tr>
<td><center>ID: <? echo $id; ?></td></tr><center>
<tr align="center" valign="middle">
<td></td></tr>
<tr>
<td><center>Price: £<? echo mysql_result($q,0,"price"); ?></td></tr><center>

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



F
15 yıl
Teğmen

O
15 yıl
Yarbay

Bir takım fonksiyonlar kullanılmış ki bunların ne olduğunu bilmiyorum bu nedenle kodun ne işe yaradığını anlamadım



B
15 yıl
Er
Konu Sahibi

quote:

Orijinalden alıntı: fabercs

http://www.mustafadokumaci.com/leziz-bir-sayfalama-menusu

Yardımı olur mu bilmem, bir göz at istersen...


Teşekkürler ama çok karışık geldi bu fonksiyon bana pek bir şey anlayamadım açıkçası. Sonra biraz bunun üzerine biraz ama tam olarak aradığım bu değil, bana şöyle birşey lazım kaç tane ürün varsa 6'şar 6'şar onları sayfandıracak. Bu kod tam istediğim şeyi yapamıyor yada ben beceremedim.

quote:

Orijinalden alıntı: sagoral

Bir takım fonksiyonlar kullanılmış ki bunların ne olduğunu bilmiyorum bu nedenle kodun ne işe yaradığını anlamadım


Eğer kastettiğiniz "function product_draw($id)" ise bu fonksiyon database'ten veriyi çekmek için o product'ın tablodaki bütün bilgilerini ekrana yazdırmak için, "$q=mysql_query("select name,description,image,price from products where id=".$id." limit 1");"





< Bu mesaj bu kişi tarafından değiştirildi boujist -- 29 Haziran 2010; 11:05:32 >
Bu mesaja 1 cevap geldi.
O
15 yıl
Yarbay

sayfalama işlemi aslen tek komuttur o da sql'deki limit komutu

2 aşamada yapılır 1 hesap 2 sorgulama

hesap için
 
$sayfadaki_urun_sayisi=6;

$syf=$_GET['page'];
$max=$syf*$sayfadaki_urun_sayisi;
$min=$max-$sayfadaki_urun_sayisi;

$sql_sorgusu="select * from urunler where ....... limit " . $min . "," . $max;


sayfa sayısını almak için de sql kullanabilirsin
 
$sql="select count(*) sayi from urunler";
$sy=mysql_result(mysql_query($sql),0,0);

$sayfalar="<ul style='list-style:none'>";
for ($i=$sayfadaki_usun_sayisi;$i<$sy;$i+=$sayfadaki_urun_sayisi) {

$sayfalar.='<li style='float:left; margin-right:5px;'><a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=40887528&url=sayfa.php?page=' . $i/$sayfadaki_urun_sayisi . '" data-href="sayfa.php?page=' . $i/$sayfadaki_urun_sayisi . '">' . $i/$sayfadaki_urun_sayisi . '</a></li>' . "\n";

}
$sayfalar.="</ul>";



Bu mesaja 1 cevap geldi.
B
15 yıl
Er
Konu Sahibi

Nette araştırırken Yaşar Kemal Dağ adlı bir arkadaşın scriptini buldum ve onu entegre ettim sayfaya şuanda çalışıyor ama tek problem örneğin toplam 18 ürün var diyelim 6'şar 6'şar sayfalıyor normalde 1-2-3 olması lazım iken 1-2-3-4 olarak çıkarıyor yani 4. sayfa boş çıkıyor bir türlü bunun üstesinden gelemedim arkadaşlar çok ufak bir problem olduğunu düşünüyorum yardımlarınızı bekliyorum. Birde eklemek istiyorum örneğin man_pro?sayfa=6 yazdım diyelim adres çubuğuba normalde man_pro?sayfa=1'e dönmesi gerekiyor ama dönemiyor problemin bu olduğunu düşünüyorum. Burdaki döngüde if($sayfa=="" || !is_numeric($sayfa)) adres çubuğuna girilen değer rakam değilse veya boş ise man_pro?sayfa=1'e dönüyor ama diyelim toplam 3 sayfa var ben man_pro?sayfa=10 olarak girdiğimde boş çıkarıyor halbuki ben bu şekilde girildiğinde yine man_pro?sayfa=1'e dönmesini istiyorum.
$catsql = "SELECT * FROM categories;"; 
$catresult = mysql_query($catsql);
?>
<?if($_GET['d']=='ok'){?>
<center>Product is deleted!</center><br><br>
<? } ?>

<table width="100%" border="0">

<tr>
<td height="250"> </td>
<td valign="top" style="width:100%" align="center">
<?

$sayfa=$_GET['sayfa'];
if($sayfa=="" || !is_numeric($sayfa)) {
$sayfa=1;
}
$kacar=6;
$kayit_sayisi=mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM products"));
$sayfa_sayisi=$kayit_sayisi['0']/$kacar;
//echo "deneme";

if($kayit_sayisi%$kacar!=0) {
$sayfa_sayisi++;
}
$nerden=($sayfa*$kacar)-$kacar;
//$sorgu=mysql_query("SELECT * FROM products LIMIT $nerden,$kacar");

for ($i=1; $i<=$sayfa_sayisi; $i++)
{
echo "<a href=man_pro.php?sayfa=$i>$i</a> ";
}


$str="SELECT * FROM products LIMIT $nerden,$kacar";

$q=mysql_query($str);
$b=mysql_num_rows($q);
//echo "$q";
if($b)
{
?>
<table height="300" border="0">
<?
for($i=0;$i<$b;$i=$i+3)
{
?>
<tr><td><? product_draw(mysql_result($q,$i,"id")); ?></td>
<td><? if(($i+1)!=$b) product_draw(mysql_result($q,$i+1,"id")); ?></td>
<td><? if(($i+2)<$b) product_draw(mysql_result($q,$i+2,"id")); ?></td></tr>
<?
}
?>
</table>
<?
}
else
{
//echo "</table>";
//echo "<tr><td height='250'> </td><td valign='top' style='width:100%' align='center'>";
//echo "<table width='100%' height='300' border='1'>";
echo("<br><br><br>No Product!!!");
}
function product_draw($id)
{$q=mysql_query("select name,description,image,price from products where id=".$id." limit 1");
?>
<table cellpadding="5" cellspacing="5" width="212" class="ovaltablo2" border="0">
<td align="middle" width="100%">
<table width="187" border="0" cellpadding="1" cellspacing="1">
<tr>
<td align="center" valign="middle"><img src="productimages/<? if(!mysql_result($q,0,"image")){?>dummy.jpg<? }else{ echo mysql_result($q,0,"image");}?>" width="140" border="0" /></a> </td>
</tr>
<tr>
<td align="center"><? echo mysql_result($q,0,"name");?></a></td></tr>
<tr>
<td><center>ID: <? echo $id; ?></td></tr><center>
<tr align="center" valign="middle">
<td></td></tr>
<tr>
<td><center>Price: £<? echo mysql_result($q,0,"price"); ?></td></tr>





< Bu mesaj bu kişi tarafından değiştirildi boujist -- 30 Haziran 2010; 11:21:46 >
Bu mesaja 1 cevap geldi.
R
15 yıl
Teğmen

O
15 yıl
Yarbay

quote:

Orijinalden alıntı: rsmx

http://www.muharremerin.com/kgpager-php-class-v2-1-php-sayfalama-sinifi-vbb-benzeri/ bu class ile işinizi halledeceğinize eminim


+1 ben bunu kullanıyorum; gayet güzel ve kullanışlıdır ;)



B
15 yıl
Er
Konu Sahibi

quote:

Orijinalden alıntı: rsmx

http://www.muharremerin.com/kgpager-php-class-v2-1-php-sayfalama-sinifi-vbb-benzeri/ bu class ile işinizi halledeceğinize eminim

Çok teşekkür ederim mükemmel bir kaynak oldu benim için sağolun tekrardan.


Bu mesaja 1 cevap geldi.
R
15 yıl
Teğmen

her zaman hocam



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.