Selamlar...
Sitemde şiir, hikaye, mesaj benzeri bir bölüm var. benim yardıma ihtiyacım olduğum konu, diyelim ki bir şiiri gösteriyoruz. o şiirin alt bölümünde, o şiiri ekleyen kişinin eklediği son 10 konuyu göstermek istiyoruz. bu konuda yardımcı olabilecek bir arkadaşım varsa şimdiden teşekkür ederim. selamlar..
seçtiğimiz şiiri gösterecek mysql bağlantı kodu:
$q1 = "select *, from_unixtime(DateAdded, '%d-%m-%Y') as MyDate from yazilar where ItemID = '$_GET[ItemID]'";
$r1 = mysql_query($q1) or die(mysql_error());
$a1 = mysql_fetch_array($r1);
şimdi bu yazının yazarı olan kişinin eklediği son 10 yazıyı göstermek istiyoruz...
php+mysql ile alakalı küçük bir yardıma ihtiyacım var..
5
●567
- 13-02-2013, 16:58:00
- 13-02-2013, 18:36:05hocam sizin dediğiniz gibi yaptım. fakat o kişiye ait 1 tane ekrana yazı getirdi. 10 tane getirmedi. ekrana bastırma kodu şu şekilde. acaba bundan mı bir hata var?
$diger_yazilar = "$a2d2[ItemTitle]";
<?=$diger_yazilar?> - 14-02-2013, 00:07:09Öncelikli önerim değişkenlerinizi anlamlı isimlerle oluşturmanız yönünde. İleriki zamanlarda size veya kodu okuyacak başka birine çok büyük bir yardımcı olacaktır. İkincisi ise mysql_query ve benzeri fonksiyonlar yerine PDO gibi bir kütüphane kullanmanızdır. mysql_* fonksiyonları PHP 5.5 sürümünde deprecate edildi, yani kullanılmaması gerekenler listesine alındı. Bir sonraki sürümde ise tamamen kaldırılacağı söylendi.
Sorunuza gelirsek; kullandığınız tüm kodları yazabilirseniz hata daha net anlaşılabilir ancak aklıma ilk gelen sorun veritabanından dönen bilgileri bir while döngüsü içinde kullanmamış olmanız.
// Sorgu MySQL sunucusuna gönderilir ve dönen kaynak değişkene atanır. $kaynak = mysql_query('SORGU'); // Kaynak her okunduğunda MySQL sunucusunun gönderdiği sırayla bir // satır döndürür. While ile, kaynaktan bir satır döndükçe, while bloğunun // içindeki işlem yapılır. while ($satir = mysql_fetch_assoc($kaynak)) { echo $satir['kolon_adi']; } - 14-02-2013, 12:51:25Hakan hocam size çok teşekkür ederim. Sayenizde sorunu hallettim. Allah razı olsun sizden. Bu arada aynı sorunu yaşayabilecek olan diğer arkadaşlara da yardımcı olmak açısından sorunun çözümünü burada paylaşıyorum. Hoşçakalın..
seçtiğimiz şiiri gösterecek mysql bağlantı kodu:
$q1 = "select *, from_unixtime(DateAdded, '%d-%m-%Y') as MyDate from yazilar where ItemID = '$_GET[ItemID]'";
$r1 = mysql_query($q1) or die(mysql_error());
$a1 = mysql_fetch_array($r1);
// şimdi bu yazının yazarı olan kişinin eklediği son 10 yazıyı göstermek istiyoruz...
$yazarID = $a1['uyeno']; //böylece gösterilen yazının yazarını çekiyoruz.
$sor = mysql_query("SELECT * FROM yazilar WHERE uyeno = ".$yazarID." AND ItemID != ".$a1['ItemID']." order by ItemID DESC LIMIT 0,10");
while ($listele = mysql_fetch_array($sor)) {
echo "".$listele['ItemTitle']." ".$listele['ItemCategory']."<p>\n\t";
}
//sonra yukardaki bağlantı sayesinde o kişiye ait son 10 yazıyı getirmiş oluyoruz. kolay gelsin.. - 15-02-2013, 00:05:08Çözümü paylaştığınız için de ben size teşekkür ederim. Çok büyük farklar yaratmayan, ancak yine de bilinmesinde fayda olan birkaç şey var kodlarınızda.
- Sorgu cümlelerinizi bir değişkene atmak yerine doğrudan mysql_query fonksiyonunun içine yazın. Değişkene atmanızın hiçbir gereği yok, boşuna memory'i doldurur.
- $_GET ve $_POST ile gelen bilgiye hiçbir zaman güvenmeyin. Her zaman güvenlik kontrollerinizi yapın.
- Tıpkı sorgu cümlesi gibi, yazar ID'yi farklı bir değişkene almanızın hiçbir gereği yok. Direk olarak uyeno = ".$a1['uyeno']." yazabilirsiniz.
- Tırnak kullanım stiliniz en kötü yöntemlerden biri. Çift tırnak yerine tek tırnak kullanmanız daha iyi olur. Ayrıca echo komutunda nokta yerine virgül kullanabilirsiniz, birçok yerde daha performanslı olduğu söyleniyor.
- mysql_fetch_array yerine mysql_fetch_assoc kullanın. Sizin kullanımınız için doğru olan fonksiyon odur.
Ancak üstte de belirttiğim gibi; bunlar çok büyük performans farkları yaratmayan, ama bilinmesinde fayda olan şeyler. İyi çalışmalar.