PHP ile isme göre veri listeme
Merhabalar, blog sayfam için yazarın son gönderileri bölümü yaptım. Örneğin ahmetin yazdığı blogu açtığım zaman sağ tarafta ahmetin yazdığı son 5 gönderiyi listelemek istiyorum ya da velinin yazdığı blog yazısını açtığım zaman velinin yazdığı blogları listelemek istiyorum. Nasıl yapabilirim?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
Yukarıda Ahmet üzerinden ID örneği vermiştim. Madem yazarlar için bir tablon yok o zaman ID olmadanda dediğim işlemi yapabilirsin. Ama bu sefer ID yerine yazarın adını kullanmalısın.
SELECT * from posts WHERE authorName='Ahmet'
Dostum ne yaptığını tam anlamadım ancak yazarların ayrı bir tabloda olması gerekiyor. Yazar yazı yazdığında posts
tablosuna gidicek ve orada author_id
diye bir sütun olucak orayada yazarın id
sini yazdırıcaksın ve WHERE
koşulunada author_id='$author_id'
olarak yaptırıcaksın. Bu genellikle tablo ilişkilendirme olarak geçiyor öğrenmek için aşağıda bıraktığım videoya bakabilirsin.
https://www.youtube.com/watch?v=8DzRAe6QyD8
Bu şekilde değil arkadaşlar, tablomun içerisinde kullanıcı yok. Posts diye bir tablom var, orada yazar bölümü var. Ahmet, Mehmet, Ali ve Veli yazı yazmış olsun. Hepsi aynı kullanıcıdan ve aynı tablo içerisinden. Ahmet 3 adet yazı yazmış olsun, Veli 10, Mehmet ile Ali de 5 tane yazsın. Ben Blog sayfsasında Ahmet'in yazdığı yazıyı açtığım zaman sağ tarafta "YAZARIN SON GÖNDERİLERİ" başlığı altında son 5 adetiği istiyorum. Sadece sorgum eksik "SELECT * from posts WHERE author='BURAYA NE YAZACAĞIMI BİLMİYORUM' ORDER BY date DESC LIMIT 5". WHERE author yazdığım zaman en anlamsız bir şekilde sadece test1 yazarını çekiyor.
<ul>
<?php
$user_id = $_GET['id'];
$posts = $db->query("SELECT * FROM posts WHERE user_id = '{$user_id}' ");
while ($post = $posts->fetch_assoc()) {
?>
<li>
<a href="post_detail?id=<?=$post['id']?>">
<?=$post['post_name']?>
</a>
</li>
<?php
}
?>
</ul>
Mesela Ahmet'in yazdığı bloğu açtığın zaman o sayfada Ahmet'in ID'sini alabiliyor olman lazım. Ahmet'in ID'sini aldıktan sonra sağ tarafta sql'de ki WHERE komutu sayesinde Ahmet'in ID'sine göre listeleme yapabilirsin.
Googlede araştırabilmen için "mysql WHERE kullanımı" diye aratabilirsin.