v2.5.2
Giriş yap

PHP Aynı Başlık Altında İlgili Resimleri Listeleme

yazilimyolcusu
2,079 defa görüntülendi

Merhabalar. Bir problemim var. Şöyle: Resim albümü oluşturmaya çalışıyorum. Öncelikle albüm oluşturuyorum. Sonra albümün içine resimleri kaydediyorum. Bu resimlerin hepsini bir sayfada gösteriyorum. Aşağıdaki kodlar bu sayfada gösterdiğim resimler. Sonuç eklediğim resimdeki gibi. Yapmak istediğim şu: Sira numarası aynı ise ikinci bir div açılıp tekrar yazmasını istemiyorum. Mesela "Adana" isimli olan resimler "60 sıra numarasına ait." 60 sıra numarasına ait resimler "Adana başlığı altında çıksın." Ama sonuç bu.
https://hizliresim.com/Et27FS

    <?php
	ob_start();
	include "../../../baglanti.php";
	?>

	<head>
	<link rel="stylesheet" href="../../../css/stil.css">
	</head>
	
	
	<?php
	$sayfa        = @intval($_GET["sayfa"]); if(!$sayfa) {$sayfa = 1;}
	$say          = $db->query("SELECT * FROM albumeresimekle");
	$toplamveri   = $say->rowCount(); // Verileri Saydırdık
	$limit        = 3; // Sayfada Gösterilecek Resim Sayısı
	$sayfa_sayisi = ceil($toplamveri/$limit); if($sayfa > $sayfa_sayisi) { $sayfa = 1; }  
	$goster       = $sayfa * $limit - $limit;
	$gorunensayfa = 2;
	
	$resimcek     = $db->query("SELECT * FROM albumeresimekle ORDER BY albumeresimekle_baslik DESC LIMIT $goster, $limit");
	$resimlerial  = $resimcek->fetchAll(PDO::FETCH_ASSOC);
	foreach ($resimlerial as $resim) {
	?>
			
	<div style="position:relative; top:0px; width:100%; height:223px; line-height:50px;
			background:lightbrown; -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.35);
			-moz-box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.35);
			box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.35);">
	<!--  Resimleri ve başlıklarını komple birbiri ardına sola alıyor. Başlangıç  -->
	
	<div style="position:absolute; width:1250px; height:50px; background:#81a8f4; padding-left:10px; font-size:20px;
				color:#fff;"><?php echo $resim['albumeresimekle_baslik']; ?></div>
	
	<div class="cokluresimlisteleresim" style="position:absolute; top:53px; margin-left:0px; font-size:20px; color:#fff;">	
	<img src="../../../upload/albumeresimekle/<?php echo $resim["albumeresimekle_adi"]; ?>">
	<?php echo $resim["albumeresimekle_baslik"]; ?></div>
	
	<div class="cokluresimlisteleresimyazisi">
	<a href="../../../resim-galerisi.php<?php echo substr($resim['albumeresimekle_baslik'],0,44); ?>">
		<?php echo substr($resim['albumeresimekle_baslik'],0,44); ?></a>  <!-- Veritabanından çekilen string in karakter sayısını belirliyor. -->
	
	
	<div class="silduzenlediv"><a href="duzenle.php?duzenle=<?php echo substr($resim['albumeresimekle_id'],0,44); ?>">
			<div class="duzenle">Düzenle</div></a><a href=""><div class="sil">Sil</div></a></div>	
	</div>

	</div>    <!--  Resimleri ve başlıklarını komple birbiri ardına sola alıyor. Bitiş  -->
	
	
	<?php } ?>
	
	<div style="clear: both;">   <!--  Sayfalama numaralarını resimlerin aşağısında tutabilmek için gerekli. Aksi takdirde resimlerin yanına geçiyor. Başlangıç  -->
	
	<?php if ($sayfa > 1) { ?>
	
	<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding" verdim. Resimlerin 10px aşağısında olması için.  --> 
	<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
			<a href="tumresimlerilistele.php?sayfa=1">İlk</a></div>


	<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding" verdim. Resimlerin 10px aşağısında olması için.  -->
	<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
			<a href="tumresimlerilistele.php?sayfa=<?php echo $sayfa - 1 ?>">Önceki</a></div>

	<?php } ?>

	<?php
	for($i = $sayfa - $gorunensayfa; $i < $sayfa + $gorunensayfa +1; $i++) {
	if($i > 0 and $i  <= $sayfa_sayisi) {
	if($i == $sayfa) {
	?>

	<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">   <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Başlangıç  -->
	<?php echo '<span>'.$i.'</span>'; ?>
	</div>  <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Bitiş  -->

	<?php } else { ?>

	<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">  <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Başlangıç  -->
	<?php    echo '<a href="tumresimlerilistele.php?sayfa='.$i.'">'.$i.'</a>';   ?>
	</div>   <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Bitiş  -->

	<?php  }  }  } if ($sayfa != $sayfa_sayisi) {  ?>

	<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding-left" verdim. Resimlerin 10px aşağısında olması için.  -->
	<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;"><a href="tumresimlerilistele.php?sayfa=<?php echo $sayfa + 1 ?>">Sonraki</a></div>


	<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding-left" verdim. Resimlerin 10px aşağısında olması için.  -->
	<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;"><a href="tumresimlerilistele.php?sayfa=<?php echo $sayfa_sayisi ?>">Son</a></div>

	
	<?php } ?>
	
	</div>  <!--  Sayfalama numaralarını resimlerin aşağısında tutabilmek için gerekli. Aksi takdirde numaralar resimlerin yanına geçiyor. Bitiş  -->
	<br>
?>
Cevap yaz
Cevaplar (38)
yazilimyolcusu
1369 gün önce

Arkadaşlar merhaba. Konunun sonuna geldim ve son bir şey kaldı. Şu an ki sorunumu anlamak için en üstten okumanıza gerek yok. Buradan itibaren okuyabilirsiniz. Şu probleme tekrar bir bakabilir misiniz? Şimdi yanyana listeleme işini farklı bir şekilde yapmaya karar verdim ve o konuda bir problem kalmadı. Problem şu: Albümleri 1. resimdeki gibi listeletiyorum. Albüm adına tıklayınca o albüme ait resimler çıkıyor başka bir sayfada. 2. resme bakabilirsiniz. Ama aynı zamanda da sayfalama yaptırmak istiyorum. Onu da yaptım. Aynı anda hem sayfalamayı hem de id ye göre resim listeletmeyi beceremedim. 1. resim albüm listeletme, 2. resim sayfalama, 3. resim ise albüme göre filtreleme.
Sayfalama yaptığım kodlar aşağıda

<?php
$sayfa = @intval($_GET['sayfa']); if(!$sayfa) $sayfa = 1;
$resimsorgusu = $db->query("SELECT * FROM albumeresimekle ORDER BY albumeresimekle_id DESC");
$ToplamVeri = $resimsorgusu->rowCount();
$Limit = 5;
$Sayfa_Sayisi = ceil($ToplamVeri/$Limit); if($sayfa > $Sayfa_Sayisi){$sayfa = 1;}
$Goster = $sayfa * $Limit - $Limit;
$GorunenSayfa = 2;

$resimsorgusu=$db->prepare("SELECT * FROM albumeresimekle order by albumeresimekle_id DESC limit $Goster,$Limit");
$resimsorgusu->execute(array());
$resimsorgu=$resimsorgusu->fetchAll(PDO::FETCH_ASSOC);
foreach($resimsorgu as $resim) {
?>  

<div class="cokluresimlistelealani"> 

<div class="cokluresimlisteleresim"><img src="../../../upload/albumeresimekle/<?php echo $resim["albumeresimekle_adi"]; ?>">


<div class="cokluresimlisteleresimyazisi">
<a href="../../../resim-galerisi.php<?php echo $resim['albumeresimekle_baslik']; ?>"><?php echo $resim['albumeresimekle_baslik']; ?></a>


<div class="silduzenlediv"><a href="duzenle.php?duzenle=<?php echo $resim['albumeresimekle_id']; ?>"><div class="duzenle">Düzenle</div></a><a href=""><div class="sil">Sil</div></a></div>	
</div>

</div>

</div>

<?php } ?>

	<div style="clear: both;">

<?php if ($sayfa > 1) { ?>
 
<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
		<a href="resimlistele.php?sayfa=1">İlk</a></div>

<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
		<a href="resimlistele.php?sayfa=<?php echo $sayfa - 1 ?>">Önceki</a></div>

<?php } ?>

<?php
for($i = $sayfa - $GorunenSayfa; $i < $sayfa + $GorunenSayfa +1; $i++) {
if($i > 0 and $i  <= $Sayfa_Sayisi) {
if($i == $sayfa) {
?>

<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
<?php echo '<span>'.$i.'</span>'; ?>
</div>

<?php } else { ?>

<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
<?php    echo '<a href="resimlistele.php?sayfa='.$i.'">'.$i.'</a>';   ?>
</div>

<?php  }  }  } if ($sayfa != $Sayfa_Sayisi) {  ?>

<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;"><a href="resimlistele.php?sayfa=<?php echo $sayfa + 1 ?>">Sonraki</a></div>

<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;"><a href="resimlistele.php?sayfa=<?php echo $Sayfa_Sayisi ?>">Son</a></div>

<?php } ?>

</div>

Filtreleme yaptığım kodlar aşağıda

<?php
ob_start();
include "../../../baglanti.php";
?>

<head>
<link rel="stylesheet" href="../../../css/stil.css">
</head>

<?php

$resimsorgusu = $db->query("SELECT * FROM resimalbumu WHERE resimalbumu_id");
$resimsorgu = $resimsorgusu->fetchAll(PDO::FETCH_ASSOC);
$resimlerilistele = $_GET['resimlerilistele'];
$resimsorgusu = $db->query("SELECT * FROM albumeresimekle WHERE albumeresimekle_sirasi='$resimlerilistele'");
$resimsorgu  = $resimsorgusu->fetchAll(PDO::FETCH_ASSOC);
foreach($resimsorgu as $resim) {
?>  

<div class="cokluresimlistelealani"> 
<!--  Resimleri ve başlıklarını komple birbiri ardına sola alıyor. Başlangıç  -->

<div class="cokluresimlisteleresim"><img src="../../../upload/albumeresimekle/<?php echo $resim["albumeresimekle_adi"]; ?>">


<div class="cokluresimlisteleresimyazisi">
<a href="../../../resim-galerisi.php<?php echo $resim['albumeresimekle_baslik']; ?>"><?php echo $resim['albumeresimekle_baslik']; ?></a>


<div class="silduzenlediv"><a href="duzenle.php?duzenle=<?php echo $resim['albumeresimekle_id']; ?>"><div class="duzenle">Düzenle</div></a><a href=""><div class="sil">Sil</div></a></div>	
</div>

</div>

</div>

<?php } ?>

İkisini birleştiremedim. yardım edebilirseniz sevinirim.
https://hizliresim.com/9S9Ibi
https://hizliresim.com/OZ6WmP
https://hizliresim.com/DM9dwE

yazilimyolcusu
1371 gün önce

Çok ufak bir problem kaldı. Onu da halledebilirseniz sevinirim. 1. resimdeki gibi listelettim. Başlıkların yanında "devam" linki var. O linke tıklayınca aşağıdaki kodlara gidiyor. Sorun 2. resimde.

<?php
ob_start();
include "../../../baglanti.php";
?>

<head>
<link rel="stylesheet" href="../../../css/stil.css">
</head>

<?php
$resmegit = $_GET['resmegit'];
$resimlistsorgusu = $db->query("SELECT * FROM albumeresimekle WHERE albumeresimekle_sirasi='$resmegit'");
$resimlistsorgu  = $resimlistsorgusu->fetchAll(PDO::FETCH_ASSOC);
foreach($resimlistsorgu as $resimlist) {
?>

<div style="width:99.3%; height:50px; background:#81a8f4; padding-left:10px; font-size:20px;
color:#fff;"><?php echo $resimlist['albumeresimekle_baslik']; ?></div>

<br>

<div class="cokluresimlisteleresim" style="color:#fff;">

<img src="../../../upload/albumeresimekle/<?php echo $resimlist['albumeresimekle_adi']; ?>"></div>

<?php }  ?>

https://resimyukle.org/i/6yRe4
https://resimyukle.org/i/6yF70

qplot
1373 gün önce

bu konu daha çok uzar ve sonuca ulaşılmaz

makifgokce
1373 gün önce

aradığı böyle bişeymi bilmiyorum ama biryerde böyle bir kod bulmuştum kendine göre ayarlayıp kullanabilirsin.

// $current_page şuanki sayfa 
// $total_records Toplam kayıt
// $total_pages Toplam sayfa sayısı
// $page_url url
function paginate($current_page, $total_records, $total_pages, $page_url)
{
    $pagination = '';
    if($total_pages > 0 && $total_pages != 1 && $current_page <= $total_pages){
        $pagination .= '<ul>';

        $right_links    = $current_page + 3;
        $previous       = $current_page - 1;
        $next           = $current_page + 1;
        $first_link     = true;

        if($current_page > 1){
			$previous_link = ($previous==0)?1:$previous;
            $pagination .= '<li class="pagination"><a href="'.$page_url.'?page=1" title="İlk">İlk</a></li>';
            $pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$previous_link.'" title="Önceki">Önceki</a></li>';
                for($i = ($current_page-2); $i < $current_page; $i++){
                    if($i > 0){
                        $pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$i.'">'.$i.'</a></li>';
                    }
                }
            $first_link = false;
        }

        if($first_link){
            $pagination .= '<li class="active pagination">'.$current_page.'</li>';
        }elseif($current_page == $total_pages){
            $pagination .= '<li class="active pagination">'.$current_page.'</li>';
        }else{
            $pagination .= '<li class="active pagination">'.$current_page.'</li>';
        }

        for($i = $current_page+1; $i < $right_links ; $i++){
            if($i<=$total_pages){
                $pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$i.'">'.$i.'</a></li>';
            }
        }
        if($current_page < $total_pages){
				$next_link = ($next > $total_pages)? $total_pages : $next;
                $pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$next_link.'" title="İleri">İleri</a></li>';
                $pagination .= '<li class="pagination"><a href="'.$page_url.'?page='.$total_pages.'" title="Son">Son</a></li>';
        }

        $pagination .= '</ul>';
    }
    return $pagination;
}
yazilimyolcusu
1373 gün önce

Tekrar merhaba arkadaşlar. Sizin düzenlemiş olduğunuz sorguyu ben tam anlayamadığımdan, sizin öneriniz ile sorguyu aşağıdaki gibi düzenledim. Şimdi albümlerin içindeki resimler yan yana çıkıyor. Ama kodları değiştirdiğimden sayfalamayı çalıştıramadım. En yukarıda sayfalama kodlarının başlangıcı var zaten. (----) bu çizgilerden sonra da sayfalamanın devamı var. Eğer karmaşık oldu derseniz daha sade bir şekilde yazmaya çalışayım. Şu anda sayfanın son hali resimdeki gibi.
https://hizliresim.com/7bxXPz

<?php
$sayfa        = @intval($_GET["sayfa"]); if(!$sayfa) {$sayfa = 1;}
$say          = $db->query("SELECT * FROM albumeresimekle");
$toplamveri   = $say->rowCount(); // Verileri Saydırdık
$limit        = 3; // Sayfada Gösterilecek Resim Sayısı
$sayfa_sayisi = ceil($toplamveri/$limit); if($sayfa > $sayfa_sayisi) { $sayfa = 1; }  
$goster       = $sayfa * $limit - $limit;
$gorunensayfa = 2;
$say     = $db->query("SELECT * FROM resimalbumu");
$resimlerial  = $say->fetchAll(PDO::FETCH_ASSOC);
foreach($resimlerial as $res) {
?>

<div class="cokluresimlistelealani" style="width:1512px;  float:left; top:0px; height:255px;
		line-height:50px; -webkit-box-shadow:1px 1px 2px rgba(0, 0, 0, 0.35); 
		-moz-box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.35); box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.35);">

<div class="cokluresimlistelealanibaslik" style="margin-top:0px;	width:1502px; height:50px; background:#81a8f4; padding-left:10px; font-size:20px;
		color:#fff;"><?php echo $res['resimalbumu_adi']; ?></div>

<?php
$sorgu = $db->query("SELECT * FROM albumeresimekle");
$sorgual  = $sorgu->fetchAll(PDO::FETCH_ASSOC);
foreach($sorgual as $sorgugoster) {
	if($sorgugoster['albumeresimekle_sirasi']===$res['resimalbumu_id']) {
		$sayi=$sorgu->rowCount();
		if($sayi>1) {
?>
		
<div style="" class="cokluresimlisteleresim">
<img style="margin-top:1px;" src="../../../upload/albumeresimekle/<?php echo $sorgugoster["albumeresimekle_adi"]; ?>">
</div>	


<?php } else {  ?>

</div>

<?php } } } } ?>
---------------------------------------
<div style="clear: both;">   <!--  Sayfalama numaralarını resimlerin aşağısında tutabilmek için gerekli. Aksi takdirde resimlerin yanına geçiyor. Başlangıç  -->

<?php if ($sayfa > 1) { ?>

<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding" verdim. Resimlerin 10px aşağısında olması için.  --> 
<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
		<a href="tumresimlerilistele.php?sayfa=1">İlk</a></div>
<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding" verdim. Resimlerin 10px aşağısında olması için.  -->
<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">
		<a href="tumresimlerilistele.php?sayfa=<?php echo $sayfa - 1 ?>">Önceki</a></div>

<?php } ?>

<?php
for($i = $sayfa - $gorunensayfa; $i < $sayfa + $gorunensayfa +1; $i++) {
if($i > 0 and $i  <= $sayfa_sayisi) {
if($i == $sayfa) {
?>

<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">   <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Başlangıç  -->
<?php echo '<span>'.$i.'</span>'; ?>
</div>  <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Bitiş  -->

<?php } else { ?>

<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;">  <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Başlangıç  -->
<?php    echo '<a href="tumresimlerilistele.php?sayfa='.$i.'">'.$i.'</a>';   ?>
</div>   <!--  Sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Resimlerin 10px aşağısında olması için. Bitiş  -->

<?php  }  }  } if ($sayfa != $sayfa_sayisi) {  ?>

<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding-left" verdim. Resimlerin 10px aşağısında olması için.  -->
<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;"><a href="tumresimlerilistele.php?sayfa=<?php echo $sayfa + 1 ?>">Sonraki</a></div>
<!--  Aşağıdaki "div" sayfalama numaralarını birbirinin soluna almak için "float:left" ekledim. Numaraların birbirinden 10px sağa kayması için "padding-left" verdim. Resimlerin 10px aşağısında olması için.  -->
<div style="float: left; padding-left: 10px; margin-top: 10px; margin-bottom: 37px;"><a href="tumresimlerilistele.php?sayfa=<?php echo $sayfa_sayisi ?>">Son</a></div>


<?php } ?>

</div>  <!--  Sayfalama numaralarını resimlerin aşağısında tutabilmek için gerekli. Aksi takdirde numaralar resimlerin yanına geçiyor. Bitiş  -->
<br>
makifgokce
1377 gün önce

execute() işlemi yapman gerekir :)

$say->execute();
$resimlerial  = $say->fetchAll(PDO::FETCH_ASSOC); // bu satırdan öncesinde execute() kullanman gerek
yazilimyolcusu
1377 gün önce

http://demoincele.com/demo/hd0270/admin/index.php?page=resimlistesi&amp;menusec=re
Şimdi bu php yi öğrenme aşamasında olduğum için başka sitelerden bakarak ortaya karışık bir şeyler yapmaya çalışıyorum. Linkini koyduğum sitenin sahibi belki kızabilir diye linki koymamıştım. Ama aslında yapmak istediğim bu. Bir de ilk koymuş olduğum kodlarda sayfalama yapmak için 20 adet resim belirlemiştim her sayfa için. Ama resimlerin boyutu ve admin panelinin uzunluğu sebebiyle sonradan 3 olarak belirledim her başlık için. Yani örneğin, "Ankara", "İzmir", "İstanbul" listelenecek ve 2. sayfaya geçecek. Mysql sürümü ise şu: Sunucu sürümü: 10.4.17-MariaDB.
Şu hatayı veriyor: Fatal error: Uncaught Error: Call to a member function fetchAll() on bool in
Şu satırda:

$resimlerial = $say->fetchAll(PDO::FETCH_ASSOC);

Yani sorgudan hemen sonra gelen bu kodlarda hata veriyor. Kodları kendinize göre uyarlayın demiştiniz. Şu şekilde yaptım.

<?php
$sayfa        = @intval($_GET["sayfa"]); if(!$sayfa) {$sayfa = 1;}
$say          = $db->query("SELECT * FROM albumeresimekle");
$toplamveri   = $say->rowCount(); // Verileri Saydırdık
$limit        = 3; // Sayfada Gösterilecek Resim Sayısı
$sayfa_sayisi = ceil($toplamveri/$limit); if($sayfa > $sayfa_sayisi) { $sayfa = 1; }  
$goster       = $sayfa * $limit - $limit;
$gorunensayfa = 2;
$say = $db->query("SELECT ANY_VALUE('resimalbumu'.'resimalbumu_adi') AS 'resimalbumu_adi', GROUP_CONCAT('albumeresimekle'.'albumeresimekle_adi') AS 'resimler' FROM 'resimalbumu' INNER JOIN 'albumeresimekle' ON 'albumeresimekle'.'albumeresimekle_sirasi' = 'resimalbumu'.'resimalbumu_id' GROUP BY 'albumeresimekle'.'albumeresimekle_sirasi' ORDER BY 'albumeresimekle'.'albumeresimekle_sirasi' DESC LIMIT $goster, $limit");

$resimlerial  = $say->fetchAll(PDO::FETCH_ASSOC);
foreach($resimlerial as $resim) {

?>

<div style="position:relative; top:0px; width:100%; height:223px; line-height:50px;
		background:lightbrown; -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.35);
		-moz-box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.35);
		box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.35);">

<div style="position:absolute; width:1250px; height:50px; background:#81a8f4; padding-left:10px; font-size:20px;
			color:#fff;"><?php echo $resim['resimalbumu_adi']; ?></div>

	<?php 
	    $resimler = explode(',', $resim["resimler"]);
	    foreach($resimler as $img) { 
	?>

<div class="cokluresimlisteleresim" style="position:absolute; top:53px; margin-left:0px; font-size:20px; color:#fff;">
<img src="../../../upload/albumeresimekle/<?php echo $img; ?>"></div>


<?php echo $img; ?>

<?php } ?>

</div>

<?php } ?>
qplot
1378 gün önce

herkes adam için seferber oldu :)

aydinkeskin
1378 gün önce

sonuçta elinde bitane album tablosu var.
bir adette resimleri tuttuğun resimler tablosu var diye düşünürsek.

albüm tablosunu kategori gibi düşünelim sadece albüm isimlerinin tutulduuğu
resimler tablondada id ustid resimadi sütünlarının olduğunu düşünürsek.

albüm isimlerine tıklayınca giden sayfada resimleri listeletiyorsan
albüm id sini get ile sonraki sayfaya gönder
resimler taablosundaki ustid ile eşleştir eşleşenleri listelettir.

yok aynı sayfada tab menü ile listeletiyorsan INNER JOIN ile tabloları birbirine bağla eşleşenleri listelettir.

"SELECT * FROM album INNER JOIN resimler ON album.id = resimler.ustid ORDER BY id DESC LIMIT 20"

vb gibi bunuda foreach ile bastıracaksın. SEN BUNLARA LİMİT 20 İSTEMİŞSİN FAKAT İLK SORU SORARKEN ATTIĞIN RESME GÖRE NEDEN SAYFALAMA YAPMAYA ÇALIŞIYORSUN.

sonraki sayfada kalan resimlerimi göstersin.

yada hiç inner join kullanma
ilk önce albüm isimlerini foreach ile bastır sonra o foreachiçinde tekrar sorgu oluştur albüm idsini alıp 2. sorguda resimler tablosundaki eşleşen kayıtlara
tekrar bir foreach aç

makifgokce
1378 gün önce

Mysql versiyonu ayrı
PhpMyAdminden aşağıdaki yere bakarak bulabilirsin.

Edit:
Büyük ihtimal Mysql sürümünüz 5.7 veya daha üstü bu yüzden GROUP_BY kullanırken hata veriyor ama bu hatayı ekranda göremiyor olabilirsiniz.
bunuda sorguda ufak değişiklik yaparak çözebiliriz.

$say = $db->query("SELECT ANY_VALUE(`resimalbumu`.`resimalbumu_adi`) AS `resimalbumu_adi`, GROUP_CONCAT(`albumeresimekle`.`albumeresimekle_adi`) AS `resimler` FROM `resimalbumu` INNER JOIN `albumeresimekle` ON `albumeresimekle`.`albumeresimekle_sirasi` = `resimalbumu`.`resimalbumu_id` GROUP BY `albumeresimekle`.`albumeresimekle_sirasi` ORDER BY `albumeresimekle`.`albumeresimekle_sirasi` DESC LIMIT $goster, $limit");
yazilimyolcusu
1378 gün önce

PHP Version 7.3.27

makifgokce
1378 gün önce

Mysql'in hangi versionunu kullanıyorsun.

yazilimyolcusu
1378 gün önce

Dediğinizi yaptım. 3 tane "Antalya" başlıklı resim eklememe rağmen sadece "Antalya" başlığına ait 1. resmi çekiyor. Diğer ikisini ekranda göremiyorum. Kodları şu şekilde uyarladım, bilmiyorum doğru olmuş mu?

<?php
$sayfa        = @intval($_GET["sayfa"]); if(!$sayfa) {$sayfa = 1;}
$say          = $db->query("SELECT * FROM albumeresimekle");
$toplamveri   = $say->rowCount(); // Verileri Saydırdık
$limit        = 3; // Sayfada Gösterilecek Resim Sayısı
$sayfa_sayisi = ceil($toplamveri/$limit); if($sayfa > $sayfa_sayisi) { $sayfa = 1; }  
$goster       = $sayfa * $limit - $limit;
$gorunensayfa = 2;

$say = $db->query("SELECT `resimalbumu`.*, GROUP_CONCAT(`albumeresimekle`.`albumeresimekle_adi`) AS resimler FROM `resimalbumu` INNER JOIN `albumeresimekle` ON `albumeresimekle`.`albumeresimekle_sirasi` = `resimalbumu`.`resimalbumu_id` GROUP BY `albumeresimekle`.`albumeresimekle_sirasi` ORDER BY `albumeresimekle`.`albumeresimekle_sirasi` DESC LIMIT $goster, $limit");
$resimlerial  = $say->fetchAll(PDO::FETCH_ASSOC);
foreach($resimlerial as $resim) {
?>

<div style="position:relative; top:0px; width:100%; height:223px; line-height:50px;
background:lightbrown; -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.35);
-moz-box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.35);
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.35);">

<div style="position:absolute; width:1250px; height:50px; background:#81a8f4; padding-left:10px; font-size:20px;
color:#fff;"><?php echo $resim['resimalbumu_adi']; ?></div>

<?php 
$resimler = explode(',', $resim["resimler"]);
foreach($resimler as $img) { 
?>

<div class="cokluresimlisteleresim" style="position:absolute; top:53px; margin-left:0px; font-size:20px; color:#fff;">
<img src="../../../upload/albumeresimekle/<?php echo $img; ?>"></div>


<?php echo $img; ?>

<?php } ?>

</div>

<?php } ?>
makifgokce
1378 gün önce

Bunu:

<?php echo $resim['albumeresimekle_baslik']; ?>

Bununla:

<?php echo $resim['resimalbumu_adi']; ?>

olarak değiştir sorun çözülür.

yazilimyolcusu
1378 gün önce

Eklediğim resimlere bakabilirseniz.
https://hizliresim.com/u1LqTo
https://hizliresim.com/M2bDn4

makifgokce
1378 gün önce

sql tablosunda albumeresimekle_baslik diye birşey yok o yüzden alıyorsun bu hatayı.
albumeresimekle_baslik bunu neden ekliyorsun onu tam anlayamadım.

yazilimyolcusu
1378 gün önce

Şu an tek bir hata görünüyor.

Notice: Undefined index: albumeresimekle_sirasi in C:\xampp\htdocs\site\admin\panel\production\tumresimlerilistele.php on line 32
Aşağıdaki satırda sıkıntı çıkıyor.
'''php
<div style='position:absolute; width:1250px; height:50px; background:#81a8f4; padding-left:10px; font-size:20px;

			color:#fff;'><?php echo $resim['albumeresimekle_baslik']; ?></div>

'''
Aşağıdaki kodda tam olarak ne yaptık acaba? Bir de onu söyleyebilirseniz sevinirim.
'''php
$say = $db->query("SELECT resimalbumu.*, GROUP_CONCAT(albumeresimekle.albumeresimekle_adi) AS resimler FROM resimalbumu INNER JOIN albumeresimekle ON albumeresimekle.albumeresimekle_sirasi = resimalbumu.resimalbumu_id GROUP BY albumeresimekle.albumeresimekle_sirasi ORDER BY albumeresimekle.albumeresimekle_sirasi DESC LIMIT $goster, $limit");
'''

makifgokce
1378 gün önce

http://sqlfiddle.com/#!9/7766a9/1
Buradaki sql sorgusunudan gelen resimler adında geleni explode ile virgülden ayırarak array e dönüştürebilirsin.

    <?php
    $say     = $db->query("SELECT `resimalbumu`.*, GROUP_CONCAT(`albumeresimekle`.`albumeresimekle_adi`) AS resimler FROM `resimalbumu` INNER JOIN `albumeresimekle` ON `albumeresimekle`.`albumeresimekle_sirasi` = `resimalbumu`.`resimalbumu_id` GROUP BY `albumeresimekle`.`albumeresimekle_sirasi` ORDER BY `albumeresimekle`.`albumeresimekle_sirasi` DESC LIMIT $goster, $limit");
	$resimlerial  = $say->fetchAll(PDO::FETCH_ASSOC);
	foreach($resimlerial as $resim) {
	?>
	
    <?php echo $resim['albumeresimekle_baslik']; ?></div>
	
    	<?php 
    	    $resimler = explode(',', $resim["resimler"]);
    	    foreach($resimler as $img){ 
    	?>
    	    <img src="../../../upload/albumeresimekle/<?php echo $img; ?>">
    	<?php } ?>
	
	<?php } ?>

bu şekilde yapmayı dene kendi kodlarına göre ayarlarsın.

yazilimyolcusu
1378 gün önce

Tekrar merhaba. Arkadaşlar vermiş olduğunuz "SELECT" sorgusunu veritabanımın sql alanına yazıp kaydettim. Yalnız yine aynı sonucu verdi. Bir yerde hata yapıyorum galiba. Şimdi aslında kafama takılan iki konu var. Birincisi "sql" alanına sorguyu yazmadan evvel, kendi kurmuş olduğum tablo bağlantısını sildim. Sonra "sql" alanına "SELECT" sorgusunu yazdım. Sonrasında "benzersiz bir alanınız yok" benzeri bir uyarı verdi. Hata değil de "sql" alanının aşağısında uyarı şeklinde çıktı yazı.

İkincisi ise ben "resimalbumu_id" ile "albumeresimekle_sirasi" alanlarını bağlamıştım. Yani albümün "id" si diğer tablonun "sira numarasına" bağlıydı. Az önce tayfun bey'in "group by, group concat" ile ilgili bir videosuna denk geldim. Orada da "id" leri eşitlemiş. Başka videolarda da öyle. Acaba ben id'leri eşitlemediğim için mi yapamadım. Yanlış anlamıyorsam "sira numarası" aynı olsa da" id" değiştiği için devamlı yeni bir başlık açıyor. İzlediğim bir videoda böyle yapmam gerktiğini söylemişti. Aslında bu şekilde yani "id" ile "sıra numarasını" bağladığımda sıra numarasına göre resimleri kategorilendirebiliyorum. Yani albümü listelettiğim sayfada albüm başlıklarına tıkladığım vakit o albümün resimleri çıkıyordu ama ben bir sayfada göstermeye çalışıyorum. Bu durumda ne yapmam lazım.

qplot
1379 gün önce

makif benden once davranmıs

makifgokce
1379 gün önce

http://sqlfiddle.com/#!9/7766a9/1
şuradaki gibi bir sorgu işine yarayacaktır.

yazilimyolcusu
1379 gün önce

Tabloyu nasıl yazacağımı bilemedim. Resmini atıyorum arkadaşlar.
https://hizliresim.com/W9hPcj
https://hizliresim.com/mxFhet

qplot
1380 gün önce

canım arkadasım senın sql dosyan yokmu
phpmyadmın kullanmıyormusun
sql kodlarını yazkı yazalım php tarafını dırek kullan

yazilimyolcusu
1380 gün önce

Bu tablodan bir şey anlamadım ben işin açıkçası.

qplot
1380 gün önce

SQL


CREATE TABLE `s_foto` (
  `sf_id` int(11) NOT NULL,
  `sf_time` varchar(100) NOT NULL,
  `sf_uye` int(11) NOT NULL,
  `sf_yol` varchar(50) NOT NULL,
  `sf_kck` varchar(100) NOT NULL,
  `sf_orta` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `sf_byk` varchar(100) NOT NULL,
  `sf_tarih` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

PHPMYADMINDEKI KODLAR

yazilimyolcusu
1380 gün önce
<?php
	$sayfa        = @intval($_GET["sayfa"]); if(!$sayfa) {$sayfa = 1;}
	$say          = $db->query("SELECT * FROM albumeresimekle");
	$toplamveri   = $say->rowCount(); // Verileri Saydırdık
	$limit        = 3; // Sayfada Gösterilecek Resim Sayısı
	$sayfa_sayisi = ceil($toplamveri/$limit); if($sayfa > $sayfa_sayisi) { $sayfa = 1; }  
	$goster       = $sayfa * $limit - $limit;
	$gorunensayfa = 2;
	$say     = $db->query("SELECT * FROM albumeresimekle ORDER BY albumeresimekle_sirasi DESC LIMIT $goster, $limit");
	$resimlerial  = $say->fetchAll(PDO::FETCH_ASSOC);
	foreach($resimlerial as $resim) {
	?>
	
    <?php echo $resim['albumeresimekle_baslik']; ?></div>
	
	
	<img src="../../../upload/albumeresimekle/<?php echo $resim["albumeresimekle_adi"]; ?>">
	<?php echo $resim["albumeresimekle_baslik"]; ?></div>
	
	
	<a href="../../../resim-galerisi.php<?php echo substr($resim['albumeresimekle_baslik'],0,44); ?>">
	<?php echo substr($resim['albumeresimekle_baslik'],0,44); ?></a>
	
	<?php } ?>
qplot
1380 gün önce

su sql kodlarını yaz sadece sql kodlarını

yazilimyolcusu
1380 gün önce

https://hizliresim.com/3IxoAh
https://hizliresim.com/QLgCpp
"resimalbumu" tablosundaki "resimalbumu_id" ile "albumeresimekle" tablosundaki "albumeresimekle_sirasi" birbirine bağlı. Mesela "Ankara Resimleri" başlığı ile resim ekliyorum. Bunun "sıra numarası 50" olsun. Sonra listelettiriyorum. Diyelim ki "Ankara Resimleri" için tekrar resim yüklüyorum. Yine "sıra numarası 50". İkinci resmi listelettiğimde ikinci kere "Ankara" başlığı açıyor ve aynı şekilde aşağıya listeleniyor. Aşağıdaki resme bakabilirseniz. Tam olarak dediğim bu.
https://hizliresim.com/TH8nRF

qplot
1380 gün önce

inner joın kullanmayı denedınmı

misal böyle ALBUM VE ALBUM_FOTO tablolarını birleştitisin kategorı gıbı albumler gorunur ve altında da fotograflar gorunur

SELECT * FROM album INNER JOIN album_foto ON album.album_id=album_foto.foto_kategori

yazilimyolcusu
1381 gün önce

Merhabalar. Yukarıdaki koymuş olduğum kodlara göre nasıl uyarlayacağımı bilemedim. Yardım edebilirseniz sevinirim.

yazilimyolcusu
1381 gün önce

Yok yorumunuz komik geldi. Saygısızlık etmedim. Yanlış anladınız.

qplot
1381 gün önce

iyi gülmeye devam et ozman

yazilimyolcusu
1381 gün önce

Çok güldürdünüz beni. :)

<?php
$sayfa        = @intval($_GET["sayfa"]); if(!$sayfa) {$sayfa = 1;}
$say          = $db->query("SELECT * FROM albumeresimekle");
$toplamveri   = $say->rowCount(); // Verileri Saydırdık
$limit        = 3; // Sayfada Gösterilecek Resim Sayısı
$sayfa_sayisi = ceil($toplamveri/$limit); if($sayfa > $sayfa_sayisi) { $sayfa = 1; }  
$goster       = $sayfa * $limit - $limit;
$gorunensayfa = 2;
$say     = $db->query("SELECT * FROM albumeresimekle ORDER BY albumeresimekle_baslik DESC LIMIT $goster, $limit");
$resimlerial  = $say->fetchAll(PDO::FETCH_ASSOC);

foreach ($resimlerial as $resim) {

?>
		
<div>

<div><?php echo $resim['albumeresimekle_baslik']; ?></div>

<div>	
<img src="../../../upload/albumeresimekle/<?php echo $resim["albumeresimekle_adi"]; ?>">
<?php echo $resim["albumeresimekle_baslik"]; ?>
</div>

<div>
<a href="../../../resim-galerisi.php<?php echo substr($resim['albumeresimekle_baslik'],0,44); ?>">
	<?php echo substr($resim['albumeresimekle_baslik'],0,44); ?></a>
</div>

</div>


<?php } ?>
qplot
1381 gün önce

ya kodların okadr karısıkkı okurken ıcım daralıyor css ve divleri kaldrısan sadece php kalsa okunaklı olsada yardım etsek

yazilimyolcusu
1381 gün önce

Tablolarım şu şekilde. "resimalbumu_id" ile "albumeresimekle_sirasi" birbirine bağlı. Bu durumda yukarıdakini nasıl yapacağım, tam anlayamadım. :)
https://hizliresim.com/3IxoAh
https://hizliresim.com/QLgCpp

sukas
1381 gün önce

Anladığım kadarı ile zaten iki farklı tablon var. O hale yukarıda belirttiğim şekilde listeleme yapabilirsin.
Burada önemli olan iki farklı arasındaki tablolarda birbirine eşit olan değerlerin olması.

Attığın görsellerde gördüğüm kadarı ile albüm id ile resim id lerin birbirine eşit. Yukarıda belirttiğim şekilde listeleme
yaptığında sorun yaşamayacağını düşünüyorum.

yazilimyolcusu
1381 gün önce

Merhabalar. Ben albüm oluşturuyorum. Oluşturduğum albüme resim ekleyebilmek için albume_resim_ekleme_formu oluşturdum. Albüm listeleme ile resim yükleme arasında tabloları birleştirmiştim. Şimdi resim yüklemedeki isim kısmını resim yükleme formundan ayırırsam ayrıca bir isim formu oloşturmam lazım galiba. Yani resim yüklerken "isim" alanını da kayıt ettiriyordum veritabanına. Aşağıdaki resimlere bakabilirsiniz.
https://hizliresim.com/xVw6WL
https://hizliresim.com/mp7zkG
https://hizliresim.com/QFcAcX

sukas
1382 gün önce

Bunun için şehir isimleri ile resimleri ayrı tabloda tutabilirsin. Örnek olarak resimler ve isimler diye iki tablo oluştur.
Daha sonra isimler tablosundaki id ile resimler tablosundaki isim_id birbirine eşit olsun. Daha sonra önce isimler tablosundan veri çek
daha sonra isimler tablosundan gelen id yi resimler tablosundaki resim_id eşitleyerek çekebilirsin.

isimler tablosu

idisim
11Adana
12Rize

resimler tablosu

idisim_idresim
111resim_url1
212resim_url2
	$isimcek  = $db->query("SELECT * FROM isimler);
	
	foreach($isimcek as $isim)
	{
	    $isimId   = $isim['id'];     
	    $isimcek  = $db->query("SELECT * FROM resimler WHERE isim_id = $isimId);
	}

Eğer resim ve isimleri bu şekilde iki ayrı tabloda yaparak çekerek yapabilirsin. Bu şekilde aynı isim altındaki resimleri aynı blok
altına yerleştirebilirsin.

Umarım açıklayıcı olmuştur.

Şimdiden kolay gelsin.