nameless Mesaj tarihi: Temmuz 10, 2008 Mesaj tarihi: Temmuz 10, 2008 php'de bir formdan mysql'e query yolluyorum. form'da checkbox var üç tane ve sensör tipi belirlemeye yarıyor. yazdığım fonksiyon şöyle: function mysql_sorgu_uydu(){ $K=$_POST['K']; $J=$_POST['J']; if ( $K != NULL && $J != NULL ) { include ("get_value.php"); if ( $sensor1 != NULL ) { if ( $mode == "All" ) { $sorgu = "SELECT * from image WHERE c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and satellite_name = '$sensor1'"; $sonuc = mysql_query($sorgu); }else { $sorgu = "SELECT * from image WHERE mode = '$mode' and c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and satellite_name = '$sensor1'"; $sonuc = mysql_query($sorgu); } if(! $sorgu){ echo "Sorgu Yapilamadi.<br>"; die('Hata: ' . mysql_error()); exit(); }else{ while ($row = mysql_fetch_array($sonuc)) { mysql_cevap($row); } } } if ( $sensor2 != NULL ) { if ( $mode == "All" ) { $sorgu = "SELECT * from image WHERE c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and satellite_name = '$sensor2'"; $sonuc = mysql_query($sorgu); }else { $sorgu = "SELECT * from image WHERE mode = '$mode' and c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and satellite_name = '$sensor2'"; $sonuc = mysql_query($sorgu); } if(! $sorgu){ echo "Sorgu Yapilamadi.<br>"; die('Hata: ' . mysql_error()); exit(); }else{ while ($row = mysql_fetch_array($sonuc)) { mysql_cevap($row); } } } if ( $sensor3 != NULL ) { if ( $mode == "All" ) { $sorgu = "SELECT * from image WHERE c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and satellite_name = '$sensor3'"; $sonuc = mysql_query($sorgu); }else { $sorgu = "SELECT * from image WHERE mode = '$mode' and c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and satellite_name = '$sensor3'"; $sonuc = mysql_query($sorgu); } if(! $sorgu){ echo "Sorgu Yapilamadi.<br>"; die('Hata: ' . mysql_error()); exit(); }else{ while ($row = mysql_fetch_array($sonuc)) { mysql_cevap($row); } } } } } burdaki sorunum şöyle; işaretlenen checkbox kadar query olduğu için çıktı sıralaması sensör1 için sonuç, sensör2 için sonuç... diye gidiyor ama ben tarihe göre sıralama yapmak istiyorum ve yine işaretlenen checkbox kadar quesry olacağı için sensör1 için tarihe göre sıralanmış, sensör2 için tarihe göre sıralanmış şekilde olacak. satellite_name için OR kullanmayı denedim ama checkbox'ta ilk sensör işaretliyse hemen onda kesiyor sorguyu. Bir el atan çıkar mı?
Mirage Mesaj tarihi: Temmuz 10, 2008 Mesaj tarihi: Temmuz 10, 2008 PHP kullanmayalı baya oldu. Ayrıca deneyemeden yaptım. O yüzden hata çıkacağına eminim. Ama aşağıdaki gibi string akrobasisi ile çözebilmen lazım sorunu (her ne kadar iyi bir çözüm olmasa da). function add_or($satellite, $first_satellite) { if ($first_satellite) { return $satellite; } return $satellite . " OR "; } $first_satellite = TRUE; $satellite = ""; if ( $sensor1 != NULL ) { $satellite = "satellite_name = '$sensor1'"; $first_satellite = FALSE; } if ( $sensor2 != NULL ) { $satellite = add_or($satellite, $first_satellite); $satellite = $satellite . "satellite_name = '$sensor2'"; $first_satellite = FALSE; } if ( $sensor3 != NULL) { $satellite = add_or($satellite, $first_satellite); $satellite = $satellite . "satellite_name = '$sensor3'"; $first_satellite = FALSE; } if ( $satellite != "" ) { if ( $mode == "All" ) { $sorgu = "SELECT * from image WHERE c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and ($satellite) ORDER BY date"; $sonuc = mysql_query($sorgu); }else { $sorgu = "SELECT * from image WHERE mode = '$mode' and c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and ($satellite) ORDER BY date"; $sonuc = mysql_query($sorgu); } if(! $sorgu){ echo "Sorgu Yapilamadi.<br>"; die('Hata: ' . mysql_error()); exit(); }else{ while ($row = mysql_fetch_array($sonuc)) { mysql_cevap($row); } } }
nameless Mesaj tarihi: Temmuz 10, 2008 Konuyu açan Mesaj tarihi: Temmuz 10, 2008 eyvallah babazula halletim olayı. küçük bir special thanks yaparım sana kodların içinde eheh
nameless Mesaj tarihi: Temmuz 10, 2008 Konuyu açan Mesaj tarihi: Temmuz 10, 2008 şimdi yine bir sorum daha var :) kodu şu hale getirdim: // mysql'e gönderilecek k-j uydu koordinatlari için query fonksiyonu function mysql_sorgu_uydu(){ $K=$_POST['K']; $J=$_POST['J']; if ( $K != NULL && $J != NULL ) { include ("get_value.php"); $first_satellite = TRUE; $satellite = ""; $satellite = satellite($satellite, $first_satellite, $sensor1, $sensor2, $sensor3); if ( $satellite != NULL ) { $modeselect=modeselect($mode); $sorgu = "SELECT * from image WHERE $modeselect and c_c_ratio <= '$c_c_r' and date BETWEEN '$basla' AND '$bitis' AND K = '$K' and J = '$J' and ($satellite) ORDER BY date"; $sonuc = mysql_query($sorgu); if(! $sorgu){ echo "Sorgu Yapilamadi.<br>"; die('Hata: ' . mysql_error()); exit(); }else{ while ($row = mysql_fetch_array($sonuc)) { mysql_cevap($row); } } } } } query çıktısının beş olmasını istiyorum ve bunun için sorgu sonucu kaç tane cevap geldiğini gösteren ve bu cevaba göre kaç sayfa olacağını gösteren bir fonksiyon yazdım fakat sayfaları değiştirmeyi beceremedim. link üstünde sorgu.php?id=xyz şeklinde yollasam query'de bir çok değişken olduğu için saçma bir fikir diye vazgeçtim, sonra amelece bir çözüm geldi aklıma (ve fikir çok dahineymiş gibi kendimi avutmaya kastım) sorgular bir tabloya kaydedilecek ve id'ye sahip olacak böylelikle hem bu id sayesinde sayfa geçişi için link üzerinde değişken gönderebilecem hem de yapılan sorgulamaları izliyormuşum gibi bir havam olacak eheh. şöyle bir fikir daha geldi ama çalışır mı bilmiyorum; $sorgu dediğimiz değişken içindeki veriyi class a { char $_sorgu; } gibi bir sınıf yaratıp bu sınıftan yarattığım nesneye yerleştirmek ve bu nesneyi link üzerinden göndermek (link üzerinden diğer sayfaya gidince link üzerinden yolladığımız nesne sayesinde tekrar bir sorgulama yapılacak ve o sayfaya gelecek çıktılar gözükecek) sorgu.php?id=364364safg345dbvxvc&say=1 şeklinde bir linke sahip olacak. benim amatörlüğümle bulabildiklerim bunlar. fikir verirseniz sevinirim :)
di Mesaj tarihi: Temmuz 10, 2008 Mesaj tarihi: Temmuz 10, 2008 Yarım yamalak okudum aceleden ama LIMIT desem faydası olur mu acep ? SELECT * FROM hede LIMIT $start, $count Yoksa tek sorunun hali hazırda değişken yüklenmiş url'lere yeni değişken mi yüklemek ?
nameless Mesaj tarihi: Temmuz 10, 2008 Konuyu açan Mesaj tarihi: Temmuz 10, 2008 önceki postta ifade edememişim tam şimdi kaç sayfa olacağını hesaplıyorum bir fonksiyonla ve benim asıl querymin sonuna "LIMIT $basla,5" ekletip tekrar bir sorgu yapıyorum ($basla, $sayfa değişkenine göre değişiyor) ve bunun gelen cevabını yazdırıyorum. $basla = 0 default olarak başlıyor ve $basla'nın beşer beşer artması lazım birinci sayfadan n. sayfaya giderken. benim sorunum şu; tek değişkenli bir query olmadığı için link üzerinden değişken yollayıp <a href=sorgu.php?id=64565&sayfa=2>sayfa 2</a> (yukarda yazdığı gibi) $basla=10 (yani $sayfa=2) tekrar aynı sorgulamayı yapmasını sağlayamıyorum. yani amacım ilk başta yapılan sorguyu ($sorgu değişkeninin içindekileri yani) da yollamak bir sonraki sayfaya. yine tam ifade edememiş olabilirim çünkü beynim sulandı saatlerdir bir php bir c uğraşmaktan asdf
kehribar21 Mesaj tarihi: Temmuz 10, 2008 Mesaj tarihi: Temmuz 10, 2008 @mirage abi "satellite" nerden çıktı ya :P İnsan kod yazarken daha kısa ve basit değişken adı kullanmaz mı ya napmışsın sen öle X(
di Mesaj tarihi: Temmuz 10, 2008 Mesaj tarihi: Temmuz 10, 2008 Ordakiler sabit değilse şöyle birşey yapabilirsin; $_GET['sayfa'] = $_GET['sayfa'] + 1; $url = ''; foreach($_GET as $variable => $value) { if(!$url) $url = $url.'?'.$variable.'='.$value; else $url = $url.'&'.$variable.'='.$value; } gibi birşey yapabilirsin. Ben de seninle aynı durumdayım, daha bi alternatif gelmedi aklıma =)
nameless Mesaj tarihi: Temmuz 10, 2008 Konuyu açan Mesaj tarihi: Temmuz 10, 2008 benim dediğim şunları yollamalıyım diğer sayfaya $modeselect $c_c_r $basla $bitis $K $J $satellite $basla ama bu kadar çok değişken yollamak çok amelece bir çözüm gibi geliyor. ve şimşekler çaktı zihnimde bir anda. bunları cookie'ye yazdırıyim diğer sayfada cookie içindeki değişkenlere baksın.
di Mesaj tarihi: Temmuz 10, 2008 Mesaj tarihi: Temmuz 10, 2008 session daha rahat ve sağlam olur. edit : cookie'ye göre tabi. yoksa url üstünden zilyon tane değişken göndermekte bir sorun yok. güvenliğini sağlayabildğin sürece gönder.
nameless Mesaj tarihi: Temmuz 10, 2008 Konuyu açan Mesaj tarihi: Temmuz 10, 2008 doğru söylüyorsun zararı yok ama çok çirkin bir görüntü bence eheh. eğer linkten yollamazsam session olarak yaparım dediğin gibi. bir kaç fonksiyon içinde değişiklik daha yapmam lazım baydım kodlamaktan artık asdf
Mirage Mesaj tarihi: Temmuz 10, 2008 Mesaj tarihi: Temmuz 10, 2008 amazon, ebay gibi siteler bile 10 sayfalık url hazırlıyorlar bazen. :D kehribar21 said: @mirage abi "satellite" nerden çıktı ya :P İnsan kod yazarken daha kısa ve basit değişken adı kullanmaz mı ya napmışsın sen öle X( Değişken isminin kısa ve basit olması yararlı tabii. Ama bunlardan daha önemli bir kriter var. Değişken ismi, ne yaptığını anlatabilmeli. Eğer bunu 5 karakterle sağlayabiliyorsan ne ala. Sağlayamıyorsan 20 karakter de kullanırsın 30 da. Asıl ben yerli yersiz i, a gibi değişken isimleri kullanılmasına karşıyım.
Öne çıkan mesajlar