İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Sayfalamada Sorun..

wWhat

0
İyinet Üyesi
Katılım
4 Ekim 2008
Mesajlar
30
Reaction score
0
Bir sürü konu okudum şu 2 gün içinde girip çıkmadığım site/konu kalmadı ama işte bir türlü beceremedim aslında db'den alıp sayfalamayı başardım ama şu koda entegre edemedim bir türlü :( Yardımcı olabilirsiniz cidden çok sevinirim.

PHP:
<?php
$Category = $_GET['Category'];

$image_path ="../..";
include_once("skin.php");
echo $header;
echo "<h2>$Category wallpapers</h2>";

if ($image_path == "")
{
	$image_path=$_SERVER['REQUEST_URI'];
}

if (substr($image_path,strlen($image_path)-1,1) != "/")
	$image_path=$image_path."/";

//Category wallpapers.
#get the category ID
$cCategory = str_replace("+", " ", $Category);
$cQuery = "SELECT * FROM `Categories` WHERE `name`='$cCategory' LIMIT 1";
$cResult = mysql_query($cQuery) or die(mysql_error());
if (mysql_num_rows($cResult) <= 0)
{
	echo "There are currently no wallpapers in this category.";
} else
{
	$Row = mysql_fetch_object($cResult);
	$id = $Row->id;

	$result = mysql_query("SELECT * FROM `Wallpapers` WHERE `Category` = '".$id."' OR `Category` IN (SELECT `id` FROM `Categories` WHERE `Parent` = '".$id."') AND `approved` = '0' ORDER BY `ID` DESC");
	$x = 0;
	if (mysql_num_rows($result) <= 0)
	{
		echo "There are currently no wallpapers in this category.";
	} else
	{
		while ($row = mysql_fetch_assoc($result)) {
			$x += 1;
			echo "\n".'<div class="Box Left">'."\n\t";
				echo '<div style="font-size: 1em; margin-bottom: 5px;"><a href="'.$image_path.'wallpaper/'.str_replace(" ", "-", $row['Title']).'/">'.$row['Title']."</a></div>";
				echo '<a href="'.$image_path.'wallpaper/'.str_replace(" ", "-", $row['Title']).'/"><img class="Thumbnail" src="image_resize.php?i=images/wallpapers/'.$row['Wallpaper1'].'&w=160&h=160" alt="'.$row['Name'].'" /></a>';
				echo '<div class="Clear"></div>'."\n";
			echo '</div>';
			if (!is_int($x/3)){
				echo '<div class="Spacer"> </div>';
			}
		}
	}
}
echo '<div class="Clear"></div>';

echo $footer;
?>
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Sayfalama kodu gerek php olarak gerekse mantıksal algoritma olarak bir çok defalar forumda verildi.

Database yapısını, neyi sayfalamaya çalıştığını ve bu sayfanın adını postalar mısın? Şu anda sayfalama adına birşey yok scriptte.
 

wWhat

0
İyinet Üyesi
Katılım
4 Ekim 2008
Mesajlar
30
Reaction score
0
Dediğin gibi forumda bir çok defa verildi araştırdım ama kod bilgim iyi olmadığından bu sayfalama koduna entegreyi başaramadım, o yüzden de yukarda verdiğim kodda sayfalama adına bir şey yok..
DB yapısı şöyle;
db'de Categories ve Wallpapers tabloları var. Her Wallpaper bir kategoriye sahip kodda get ile kategori adını çağırıyor ve Wallpaper tablosunun içinden Category sutunundan id sini alıp fotografları komple sergiliyor. Yani yukardaki kod o işe yarıyor :)
 

webyazilim

0
İyinet Üyesi
Katılım
12 Haziran 2006
Mesajlar
1,511
Reaction score
0
Konum
Kayseri
$result değişkenin gönderdiği sorguyu sayfalama yaptırmak için kullanabilirsiniz.

yaklaşık bir örnek yazayım deneyin isterseniz.

PHP:
<?

// Daha sonra GET ile gönderilecek satir değeri yoksa sıfır kabul edilir
if (!$satir) $satir=0;
// belirlenen satır değerinden sonra istenen kadar 10 kayıt listelenir
$result=mysql_query("SELECT * FROM tabloadi WHERE kategori='A' and id order by id desc limit $satir,10");

while ($row=mysql_fetch_assoc($result))
{
// ekrana kayıtlar istediği şekilde basılır     
echo "$row[id] - $row[baslik] - $row[yazi]";
}

// toplam satır sayısı alınır
$toplam=mysql_query("SELECT count(id) FROM tabloadi WHERE kategori='A'");

//Döngü içinde $i değişkeni toplamda o kategorideki satır sayısı ile karşılaştırılarak sayfalar yazılır
$i=0;
while ($i<$toplam[0])
{
    // ekrana $i link olarak satir değerleri 10 ile çarpılıp yazılır
    echo "<a href=sayfaadi.php?satir=$i >$i</a>";
    // Sonraki 10 sayfa için $i arttırılır
    $i=$i+10;
}

?>

Bu kod çok sağlıklı çalışmayabilir ama sayfalama için basitçe bir örnek. Buradaki mantık istenen aralıkta veri çekerek tüm verileri çekip aralarından seçmek zorunda kalmadan az veriyle sayfalamayı yapmak. Bazı durumlarda daha fazla veri çekmek gerektiğinden dizilere vs başvurulur ama sizin işinizi temelde yapacak sanıyorum.

Geriye anlayıp uygulamak kalıyor size...
Kolay gelsin...
 

wWhat

0
İyinet Üyesi
Katılım
4 Ekim 2008
Mesajlar
30
Reaction score
0
kategori='A' tam olarak neyi temsil ediyor ordaki A ne anlayamadım. Birde verdiğin kodu ilk mesajda verdiğim kodun neresine yerleştirmem gerekiyor çözemedim, entegre kısmında sorunla yaşıyorum :(
 

wWhat

0
İyinet Üyesi
Katılım
4 Ekim 2008
Mesajlar
30
Reaction score
0
PHP:
// Daha sonra GET ile gönderilecek satir değeri yoksa sıfır kabul edilir
if (!$satir) $satir=0;
// belirlenen satır değerinden sonra istenen kadar 10 kayıt listelenir
$result=mysql_query("SELECT * FROM `Wallpapers` WHERE `Category` = '".$id."' OR `Category` IN (SELECT `id` FROM `Categories` WHERE `Parent` = '".$id."') AND `approved` = '0' and id order by id desc limit $satir,10");

while ($row=mysql_fetch_assoc($result))
{
// ekrana kayıtlar istediği şekilde basılır     
echo "".$row['Wallpaper1']." - ".$row['Title']." <br><br>";
}

// toplam satır sayısı alınır
$toplam=mysql_query("SELECT count(id) FROM `Wallpapers` WHERE `Category` = '".$id."' OR `Category` IN (SELECT `id` FROM `Categories` WHERE `Parent` = '".$id."') AND `approved` = '0'");

//Döngü içinde $i değişkeni toplamda o kategorideki satır sayısı ile karşılaştırılarak sayfalar yazılır
$i=0;
while ($i<$toplam[0])
{
    // ekrana $i link olarak satir değerleri 10 ile çarpılıp yazılır
    echo "<a href=sayfaadi.php?satir=$i >$i</a>";
    // Sonraki 10 sayfa için $i arttırılır
    $i=$i+10;
}
şekline cevirdim ama sadece ilk 10'nunu listeledi sayfa numarası çıkmadı aşağıda :(
 

webyazilim

0
İyinet Üyesi
Katılım
12 Haziran 2006
Mesajlar
1,511
Reaction score
0
Konum
Kayseri
- kategori A derken herhangi bir kategorideki eşitlikten veri çekiyorsan diye herhangi bir şart ekledim sorgu için o kadar

- altta sayfa numarası ancak 10 dan fazla kayıt varsa zaten mümkün olacak sanıyorum. $toplam[0] toplam kayıt sayın. Onu ekrana yazdır, eğer birşey yazmıyorsa zaten hiçbir sıralama şartı olmadan veri gelmiyor yani sorgun boş dönüyor demek olur.

Gördüğüm kadarıyla tablolardan bu şekilde bir mantıkta veri çekmekte aslında kullandığın script ya da düşündüğün algoritmanın bence pek mantıklı durmadığını gösteriyor. Sorgunuzu her yazışta ne kadar sade yazabiliyorsanız o kadar sade yazın. Sorguda işler karıştığından script genel olarak yanlış planlanmış ve eklentiler değişklikler sıkışmaya başlamış demek. tabi benim tecrübelerime göre.
 

wWhat

0
İyinet Üyesi
Katılım
4 Ekim 2008
Mesajlar
30
Reaction score
0
Bir şekilde entegreyi gerçekleştirdim uzun uğraşlar sonucu :)
PHP:
$page=$_GET['page'];
$limit=$Settings['Cat_Navigation_Count'];
if ($page==lisanssız) {
	$page=1;
}
$max_show=5;

$limitvalue = $page * $limit - ($limit);

$cCategory = str_replace("+", " ", $Category);
$cQuery = "SELECT * FROM `Categories` WHERE `name`='$cCategory' LIMIT 1";
$cResult = mysql_query($cQuery) or die(mysql_error());

if (mysql_num_rows($cResult) <= 0)
{
	$display_pagination=0;
} else
{
	$query_count    = "SELECT * FROM `Wallpapers` WHERE (`Category` = (SELECT `id` FROM `Categories` WHERE `name`='$cCategory') OR `Category` IN (SELECT `id` FROM `Categories` WHERE `Parent` = (SELECT `id` FROM `Categories` WHERE `name`='$cCategory'))) AND `approved` = '0' ORDER BY `ID` DESC";
	$result_count   = mysql_query($query_count);    
	$totalrows      = mysql_num_rows($result_count);
	if ($totalrows==0) { $display_pagination = 0; } else { $display_pagination = 1; }
}

$numofpages = ceil($totalrows / $limit); 

if ($numofpages==1) { $display_pagination=0; }

if ($page > 3) {
	$start=$page-2;
	$end=$page+2;
	if ($page==$numofpages) {
		$end=$page;
		$start=$start-2;
	} elseif ($page+1==$numofpages) {
		$end=$page+1;
		$start=$start-1;
	}
} else {
	$start=1;
	$end=5;
}

if ($page>=4) {
	$apagenav='<span class="navigation"><a href="'.$page_isset.'1/">«</a></span> ';
} else {
	$apagenav='<span class="navigation">«</span> ';
}

if ($page < $numofpages) {
	$aend=' <span class="navigation"><a href="'.$page_isset.$numofpages.'/">»</a></span>';
} else {
	$aend=' <span class="navigation">»</span>';
}


    for($i = $start; $i <= $end; $i++){
        if($i == $page){
            $apagenav .= '<span class="anavigation">'.$i."</span> ";
        }else{
            $apagenav .= '<span class="navigation"><a href="'.$page_isset.''.$i.'/">'.$i.'</a></span> ';
        }
    }
	$apagenav.=$aend;

	if ($display_pagination==0) {
		$apagenav=lisanssız;
	}

sayfalamayı yapıyor gayet güzel ama mesela toplam 2 sayfalık konu var ama genede 5 sayfa olarak gösteriyor :( O konuda yardımcı olabilirseniz sevinirim :)
 

webyazilim

0
İyinet Üyesi
Katılım
12 Haziran 2006
Mesajlar
1,511
Reaction score
0
Konum
Kayseri
for içinde sayfa sayısını geçip geçmediğini kontrol et. eğer geçtiyse break; yazıp döngüden çıkarak daha fazla gereksiz sayfa numarası yazmamasını sağlarsın.
 

wWhat

0
İyinet Üyesi
Katılım
4 Ekim 2008
Mesajlar
30
Reaction score
0
Bu konuda cidden hiç iyi değilim :( zamanını almayacaksa yazabilirsen sevinirim...
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst