Yine Bir Mysql Sorusu
-
Arkadaşlar ben projemde arkadaşlık bölümü de olsun istiyorum
bunun için bir tablo oluşturdum. kullanıcı id si ile arkadaş olunan kişinin id sini kaydediyorum.
çekerken bir sorgu yapmam gerekiyor. Kullanıcımız bir başkasının profiline gittiğinde sorguyu çalıştırıp eğer veritabanında bu kişi ile ilgili bir bilgi eklenmiş ise siz arkadaşsınız yazdıracağım.
eğer daha önce böyle bir kayıt yok ise yeni bir kayıt ekleteceğim. Mysql sorgumu veritabanından sorguladığımda pekala istediğim verileri getiriyor bana.
Lakin şöyle bir sıkıntım var. Veritabanında aşağıdaki gibi iki kayıt var. iki kaydın da bulunması gerekiyor. zira bir kişi diğeriyle arkadaş olabilir ancak arkadaş olduğu kişi de onun profiline gittiğinde sorguda hata olmasın diye iki kaydında bulunması gerekiyor.
İki kayıt birden listelendiği için sorgumda arkadasid yi çekerken hangisi olduğunu belirtmediğim için sorgu hata veriyor.
Team den bağlanıp destek olabilecek biri olursa daha detaylı anlatabilirim .

Sorgum şu :
$arkadaskontrolu= $db->query("SELECT * from arkadasolundu WHERE kullaniciid='1' and arkadasid='2' or kullaniciid='2' and arkadasid='1' order BY kullaniciid ASC", PDO::FETCH_ASSOC);
if ( $arkadaskontrolu->rowCount()){
foreach( $arkadaskontrolu as $row ){
$arkadasid = $row['arkadasid'];
$kullaniciid2 = $row['kullaniciid'];}}
-
müdür anladığım kadarı ile veri tabanına eklerken her türlü iki kaydediyorsun bunda problem yok
profile gittiğin kişinin arkadaşım olup olmadıığıunı örenmek istesem
$arkadaskontrolu= $db->query("SELECT * from arkadasolundu WHERE kullaniciid='$benimid' and arkadasid='$profilsahibiid' ", PDO::FETCH_ASSOC);
if ( $arkadaskontrolu->rowCount()){
echo "siz arkadaşsınız";
} else {
echo "arkadaş olun";
}
kendi profilinde olan arakdaşları listeleyecesen
$arkadaslar= $db->query("SELECT * from arkadasolundu WHERE kullaniciid='$benimid' ", PDO::FETCH_ASSOC);
if ( $arkadaslar->rowCount()){
echo "arkadaslarin";
foreach($arkadaslar as $arkadas){
echo "$arkadas['arkadasid']";
}
} esle {
echo "yalnızsın müdür";
}
wert tarafından 29/May/17 23:46 tarihinde düzenlenmiştir -
wert bunu yazdı
müdür anladığım kadarı ile veri tabanına eklerken her türlü iki kaydediyorsun bunda problem yok
profile gittiğin kişinin arkadaşım olup olmadıığıunı örenmek istesem
$arkadaskontrolu= $db->query("SELECT * from arkadasolundu WHERE kullaniciid='$benimid' and arkadasid='$profilsahibiid' ", PDO::FETCH_ASSOC);
if ( $arkadaskontrolu->rowCount()){
echo "siz arkadaşsınız";
} else {
echo "arkadaş olun";
}
kendi profilinde olan arakdaşları listeleyecesen
$arkadaslar= $db->query("SELECT * from arkadasolundu WHERE kullaniciid='$benimid' ", PDO::FETCH_ASSOC);
if ( $arkadaslar->rowCount()){
echo "arkadaslarin";
foreach($arkadaslar as $arkadas){
echo "$arkadas['arkadasid']";
}
} esle {
echo "yalnızsın müdür";
}
hocam yemiyor hala arkadaş olun uyarısı geliyor.
bir türlü siz arkadaşsınız dedittiremedim. Mysql Nuh diyor Peygamber demiyor. Nuh diyoorrr Peygamber demiyor arkadaş :D
-
$ExecutedQuery="SELECT * from arkadasolundu WHERE kullaniciid='$benimid' and arkadasid='$profilsahibiid' "; echo $ExecutedQuery; //Aldığın çıktıyı Mysql de çalıştır. Eğer bir cevap dönüyorsa buraya kadar okey. $Result=$db->query($ExecutedQuery,PDO::FETCH_ASSOC); if($Result->rowCount()) { echo "siz arkadaşsınız"; }else{ echo "değilsin" } //Bu çıktılardan eğer cevap dönüyorsa ve hala else deki değilsin seçeneği dönüyorsa Hatayı kodda değil my.ini içeresinde ara timeout falan düşüyor olabilir çok data varsa vs. vs. (Emin değilim.)EDİT : Girdileri de kontrol et. $benimid ve $profilsahibiid değişkenlerin değerleri doğru mu geliyor ?
MhmdAlmz tarafından 30/May/17 00:24 tarihinde düzenlenmiştir -
Hocam tek kayıtla işi bitirebilirdin.
select * from tablo where (kullaniciid = $deger1 and arkadasid = $deger2) or (kullaniciid = $deger2 and arkadasid = $deger1)
işini çözerdi.
-
ontedi bunu yazdı
Hocam tek kayıtla işi bitirebilirdin.
select * from tablo where (kullaniciid = $deger1 and arkadasid = $deger2) or (kullaniciid = $deger2 and arkadasid = $deger1)
işini çözerdi.
sonunda öyle yaptık zaten hocam :D
wert hocam team ile bağlandı yanlış yaptığım yeri değiştirip bir de sorgu mantığımı değiştirdi. sql injectiona önlem için.
güzel de bir php dersi verdi sağolsun :D
-
ontedi bunu yazdı
Hocam tek kayıtla işi bitirebilirdin.
select * from tablo where (kullaniciid = $deger1 and arkadasid = $deger2) or (kullaniciid = $deger2 and arkadasid = $deger1)
işini çözerdi.
teamviewer yardımcı olmaya çalıştım
en son bu mantığa geldik :D
