Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

[Mysql query] Yardım


Öne çıkan mesajlar

Mesaj tarihi:
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ı?
Mesaj tarihi:
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);
}
}
}
Mesaj tarihi:
ş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 :)
Mesaj tarihi:
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 ?
Mesaj tarihi:
ö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
Mesaj tarihi:
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 =)
Mesaj tarihi:
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.
Mesaj tarihi:
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.
Mesaj tarihi:
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
Mesaj tarihi:
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.
×
×
  • Yeni Oluştur...