Doğru Cevap
-
WHERE servis_tarih 'ten sonraki kontrol yok
$r[servis_tarih] 'te tırnaklar yok
if ($servistarihi) kontrolünü while'ın dışına koymuşsun
Yerelindeki kayıtlar ile uzaktaki kayıtlar aynı olmadığı için son kayıt koşula uymuyordur, dolayısıyla uzak sunucuda ekrana istediğin çıktı vermiyordur.-
pialfa
Doğrusu nasıl olmalıdır acaba. $r['servis_tarih'] virgüller arasına aldım ve if() koşulunuda while ye dahil ettim.sistem çalıştı ama örn. kayıtlı iki servis olduğunda 2 kez uyarı veriyor.12 yıl önce yazılmış -
necmettin
1. if'li kısım döngünün dışında olur
2. "select * .." yerine "select servis_tarih .." kullanırsın
3. tablonun tamamından servis_tarih'leri alıp hepsini kontrol etmek yerine o kontrolü sql sorgusunun içine koyarsın (kemal'in söylediği gibi), böylece tüm tabloyla uğraşmazsın, sorgudan dönen veri boş bir array değilse ekrana "var" çıktısını verirsin12 yıl önce yazılmış -
pialfa
Kemal Arkadaşın anlattığı olayı yaptım kayıt olmadıdı zaman da çıktı alıyorum onu yapınca şuana kadar tek çalışan fikir if() koşulunu while nin içine aldığımda oldu.Ona birden fazla kayıt olunca ne kadar eşleşmiş tarih varsa o kadar ekrana çıktı veriyor.
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$q=mysql_query("SELECT * FROM servisler WHERE servis_tarih ORDER BY id");
while ($r=mysql_fetch_array($q)) {
$servistarihi=$r['servis_tarih'];
if($servistarihi == date("Y-m-d",strtotime("-6 month"))){
echo "<div style='border:1px solid #ccc;'>
<center><font color=red size=5 face=arial><blink>Sistemde Bu Güne Kayıtlı Servisler Bulunmaktadır..</blink></font></center></div>";
}
}
?>12 yıl önce yazılmış -
necmettin
Programlama konusunda biraz ders alman gerekiyor gibi görünüyor. PHP/MySQL biliyorsun az-çok ama programlama mantığı üzerine biraz kafa yorman gerek bence. Aşağıdaki kodu örnek olsun diye veriyorum, tek yaptığım echo kısmını while(){ if() {} } bloğunun dışına almak oldu.
$kayitvar = false; $q=mysql_query("SELECT * FROM servisler WHERE servis_tarih ORDER BY id"); while ($r=mysql_fetch_array($q)) { $servistarihi=$r['servis_tarih']; if($servistarihi == date("Y-m-d",strtotime("-6 month"))) {$kayitvar = true; } } if ($kayitvar) { echo "<div style='border:1px solid #ccc;'> <center><font color=red size=5 face=arial><blink>Sistemde Bu Güne Kayıtlı Servisler Bulunmaktadır..</blink></font></center></div>"; }
12 yıl önce yazılmış -
pialfa
Saol Necmettin TRUE FALSE mantığı ile hareket etmissin bu benim aklıma gelmemişti.Yardımın için sana ve tüm arkadaşlara teşekkür ederim.12 yıl önce yazılmış
-
Cevaplar
-
çalışmaması çok doğal bence
çünkü $servistarihi=$r[servis_tarih]; ile her seferinde $servistarihi adlı değişkene veri yazıyorsunuz sonra 6 gün öncesinin tarihinle eşleştirmeye çalışıyorsunuz yapmak istediğiniz tam olarak nedir acaba ? mantığını söylerseniz daha faydalı cevaplar gelebilir.-
pialfa
yapmak istediğim 6 ay öncesinin tarihi ile eşleştirmek ve o tarihten varsa ekrana yazıyı basmak12 yıl önce yazılmış -
Kemal
servis_tarih sutunu timestamp olarak varsayıyorum$tane=mysql_num_rows(mysql_query("SELECT * FROM `servisler` WHERE `servis_tarih` >= DATE_SUB( CURDATE( ) , INTERVAL 6 MONTH ) ORDER BY `id` DESC")); if($tane>0){ echo "<div style='border:1px solid #ccc;'> <center><font color=red size=5 face=arial><blink>6 Ay öncesi kayıtlar bulunmakta</blink></font></center></div>"; }
şeklinde yaparsanız sanırım işini görecektir.12 yıl önce yazılmış
-