Merhaba arkadaslar;
MySQL'de veri çekerken takıldığım bir nokta oldu.
malzeme adlı tablomda toplam 6 sütun var:
ID
Isim
Tarih
Fiyat
Zaman1
Zaman2
şeklinde.
Zaman1 ve Zaman 2 sütununa date picker ile tarihleri giriyorum.
Örneğin Zaman1 : 01/06/2013 ve Zaman2 : 30/06/2013.
Şimdi benim istediğim bu iki sütun arasında arama yapmak.Sadece bu iki sütun arasındaki tarihlerin verileri listelensin.
Bunu nasıl yapabilirim?
Şimdiden ilgilenen arkadaşlara çok teşekkürler.
İyi çalışmalar.
Seçili 2 tarih arasındaki verileri listeleme
9
●16.597
- 29-06-2013, 23:46:52Kimlik doğrulama veya yönetimden onay bekliyor.arkadaşım öncelikle sql de tarih sütunlarını date olarak girmelisin. Daha sonra istediğin gibi sorgu yapabilirsin. misal:
select * from tablo where tarih1 > "2013-06-26"
select * from tablo where tarih2 < "2013-06-26"
select * from tablo where tarih1 > "2013-06-26" and tarih2 < "2013-10-10"
select * from tablo where tarih1 between "2013-06-26" and "2013-10-26"
vs.vs. - 01-07-2013, 11:06:55Öncelikle cevabınız için çok teşekkürler.
Ama malesef sonuç alamadım
Boş sonuç döndürüyor.
Nerde hata yapıyorum bilmiyorum.
Kodlarım aşağıda :
<html> <head> <meta http-equiv="Content-Language" content="tr"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> <link rel="stylesheet" type="text/css" href="images/style.css" /> </head> <?php $arama = $_POST['arama']; if(empty($arama)){ echo("<center><b>Arama Kutusunu Boş Bıraktınız. Lütfen Geri Dönüp Doldurunuz.</b></center>"); }else{ include "database.php"; $sayfa = $_GET['sayfa'] ? $_GET['sayfa'] : 0; $sayfabasi=30; $sorgu=mysql_query("SELECT * FROM 'depo' WHERE 'zaman' BETWEEN '{$zaman1}' AND '{$zaman2}' ( `id` LIKE '%$arama%' OR `zaman` LIKE '%$arama%' )"); $toplam=mysql_num_rows($sorgu); $kacsayfa=ceil($toplam/$sayfabasi); $basla=$sayfa*$sayfabasi; echo"<table border=\"1\" width=\"870\" cellspacing=\"0\" cellpadding=\"0\" height=\"63\">"; echo"<tr><td width=\"20\" height=\"30\" align=\"center\">"; echo"<font face=\"Agency FB\">No</font></td><td width=\"120\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Resim</font></td><td width=\"150\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Malzeme Adı</font></td>"; echo"<td width=\"70\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Malzeme Kodu</font></td><td width=\"100\" height=\"30\" align=\"center\">"; echo"<font face=\"Agency FB\">Kategori</font></td><td width=\"80\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Stok Miktarı</font></td>"; echo"<td width=\"100\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Kayıt'ı Yapan Personel</font></td>"; echo"<td width=\"50\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Birim Fiyat</font></td><td width=\"50\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Kdv</font></td><td width=\"50\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Toplam Fiyat</font></td><td width=\"80\" height=\"30\" align=\"center\"><font face=\"Agency FB\">Seçenekler</font></td></tr>"; $bilgi = mysql_query("SELECT * FROM 'depo' WHERE 'zaman' BETWEEN '{$zaman1}' AND '{$zaman2}' ( `id` LIKE '%$arama%' OR `zaman` LIKE '%$arama%' ) limit $basla, $sayfabasi"); if($bilgi) { while($satir = mysql_fetch_array($bilgi)) { $mesaj = $satir['mesaj']; echo"<tr><td width=\"20\" height=\"30\">$satir[id]</td>"; echo"<td width=\"120\" height=\"30\"><a href=\"$satir[resim]\" target=\"_blank\"><img src=\"$satir[resim]\" width=\"75px\" border=\"0\"></a></td>"; echo"<td width=\"150\" height=\"30\">$satir[urunadi]</td>"; echo"<td width=\"70\" height=\"30\">$satir[malzemekodu]</td><td width=\"100\" height=\"30\">$satir[urunkategorisi]</td>"; echo"<td width=\"80\" height=\"30\">$satir[miktar] $satir[birim]</td><td width=\"100\" height=\"30\">$satir[personel]</td>"; echo"<td width=\"50\" height=\"30\">$satir[birimfiyat] $satir[fiyatbirimi]</td>"; echo"<td width=\"50\" height=\"30\">$satir[kdv] $satir[fiyatbirimi]</td>"; echo"<td width=\"50\" height=\"30\">$satir[toplamfiyat] $satir[fiyatbirimi]</td>"; echo"<td width=\"80\" height=\"30\"><a href=\"guncelle.php?id=$satir[id]\"><img src=\"images/edit.png\" border=\"0\" alt=\"Düzenle\"></a> <a href=\"sil.php?id=$satir[id]\"><img src=\"images/sil.png\" border=\"0\" alt=\"Sil\"></a> <a href=\"stok-azalt-tamamla.php?id=$satir[id]\"><img src=\"images/stok-.png\" border=\"0\" alt=\"Stok Azalt\"></a> <a href=\"stok-yukselt-tamamla.php?id=$satir[id]\"><img src=\"images/stok+.png\" border=\"0\" alt=\"Stok Yükselt\"></a></td></tr>"; } } echo"</table>"; for ($i=0;$i<$kacsayfa;$i++) { if ($sayfa == $i) echo "[<b>".$i."</b>]"; else echo "<a href=arama.php?sayfa=".$i.">".$i."</a>"; } } echo"</center>"; ?> <tr> <td width="120" align="center"> <form name="arama" id="arama" action="arama1.php" method="post"> Tarih 1:<input name="zaman" type="text" size="15" /> Tarih 2:<input name="zaman" type="text" size="15" /> <input name="button" class="arama" type="submit" value=""> </form> </td> </tr> <?php if (isset($_REQUEST["kullanici"])) { include("database.php"); $sql = ("select * from uye"); } else { header ("Location: uyari.html"); } ?>Bir yardım lütfen
- 01-07-2013, 13:23:13hocam sorun şu sizin veritabanına kaydettiğiniz tarih formatı olan "gun/ay/yil" ın veritabanı yapısının gözünde varchar dır. ilk önce tarih formatınızı "bence, benim tavsiyeme göre" timestamp a çevirmeniz. yani tarih sütünunuzun formatını timestamp a çevirip, daha sonra @acayip arkadaşımızın verdiği örnekteki gibi kodunuzu değiştirmeniz gerekir.
bu haliyle yaparsanız yanlış sonuç dönecektir.
mesela burada da böyle bir şey konuşulmuştu : https://www.r10.net/php/927673-tarih-...tutulmali.html
en son arkadaşımız timestamp kullanmaya karar vermişti, farkını anlayınca. - 02-07-2013, 11:00:14Hocam çok teşekkürler cevap için.cleaner80 adlı üyeden alıntı: mesajı görüntüle
İlk fırsatta tekrar deneyip sonucu buraya yazacağım.
İyi çalışmalar. - 02-07-2013, 13:44:17timstamp olayını karıştırmışım. mktime olayını kullanabilirsin.
Benim bi scriptimde kullandığım iki tarih arası veri çekme işlemi alttaki gibi
$zamanpulu = mktime(0, 0, 0,$basay,$basg,$basyil); $zamanpulu2 = mktime(0, 0, 0,$bitay,$bitg,$bityil); $sqlgid =mysql_query("SELECT * FROM yapgider WHERE tarih >='$zamanpulu' AND tarih <='$zamanpulu2' ");tarih alanı varchar(11) olarak kayıtlı. Alttaki işlemde tarihi kaydederkenki kullandığım kodlar aşağıdaki gibi. ben tarih alanındaki herhangi iki zaman arasındaki kodları yukarıdaki gibi çekebiliyorum.
//Bugünün tarihini aldık $tarih = date("d-m-Y"); //Tarihi gün ay ve yıl olarak ayırdık $tarih = explode('-',$tarih); //Gün ay ve Yılı Değişkenlere Atadık $gun = $tarih[0]; $ay = $tarih[1]; $yil = $tarih[2]; //Değişkenleri Zaman Puluna çevirdik $zamanpulu = mktime (0, 0, 0,$ay,$gun,$yil); //İş Kaydetme Sorgusu $is_giris = mysql_query("INSERT INTO yapgider VALUES ('','$gider_id','$aciklama','$tutar ','$zamanpulu')");Daha iyi bilenler yanlış varsa düzeltebilirler.
