الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة في عمل كود استعلام

بدأه man in dark في 9 ديسمبر 2009 · 4 رد · 589 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني اريد المساعدة في كود استعلام

ولدي التاريخ مخزن في قاعدة البيانات في حقل واسمة datatime بهذا الشكل 1241902800

طبعا بـ timestamp

طبعا التاريخ 1241902800 يرمز الى تاريخ اليوم 2009-05-10

طبعا شهر 5 هو مايو اريد كود يعرض لي البيانات حقت شهر 4 وهو ابريل يعني في كل بداية شهر جديد اريد ان يعرض لي بيانات الشهر السابق

كيف يمكنني عمل هذا الاستعلام

الكود

 <?php
 $host="localhost"; // Host name
 $username="root"; // Mysql username
 $password=""; // Mysql password
 $db_name="tuo"; // Database name
 $tbl_name="acv"; // Table name

 mysql_connect("$host", "$username", "$password")or die("cannot connect");
 mysql_select_db("$db_name")or die("cannot select DB"); 

 $sql="SELECT * FROM $tbl_name";
 $result=mysql_query($sql);
 $rows=mysql_fetch_array($result);

 ?>

اسماء الشهر الماضي
<?php echo $rows['name']; ?>
#2

السلام عليكم و رحمة الله و بركاته..

استخدام timestamp يصعب عملية التعامل مع هذا الحقل كتاريخ و بالتالي التحكم في محتوياته بشكل مباشر باستخدام الدوال المتوفرة من شركة MySQL.. بإمكاننا تحويل هذا الـ timestamp إلى datetime و التعامل معه..

أنا أقترح حل من الحلول التي يمكن أن تساعدك في هذه المشكلة و هي استخدام هذه الدوال:

function getFirstDayTimestampOfPreviousMonth() {
	$timestamp = strtotime(date("Y-m-1 00:00:00") . ' - 1 months');

	return $timestamp;
}

function getFirstDayTimestampOfCurrentMonth() {
	$timestamp = strtotime(date("Y-m-1 00:00:00"));

	return $timestamp;
}

و في النهاية يمكنك نتفيذ الاستعلام على النحو التالي:

$startDate=getFirstDayTimestampOfPreviousMonth();
$endDate=getFirstDayTimestampOfCurrentMonth();
$query = "SELECT * FROM $tbl_name WHERE datetime>=$startDate AND datetime<$endDate";

إن كان لدي شيء على مثل هذا الحل فهو كثرة عمليات الـ Conversion و تحويلات النصوص أو String Manipulation .. فمن الأفضل أن تكون الاستعلامات تعتمد كلياً على الـ SQL قدر المستطاع و لو كان الـ DBMS الذي نقوم باستخدامه Oracle لقمنا بعمل هذا الأمر بالمطلق في PL/SQL Procedure و أرجعنا النتيجة النهائية للمستخدم، و لكن كما واضح مثل هذا الاستعلام لا ينفذ كل لحظة و بالتالي يمكننا التجاوز عن هذا الأمر..

أتمنى أن يفيدك هذا الكود.. و لا تتردد في طرح أي سؤال،،

تحياتي،،

تم تعديل هذه المشاركة بواسطة محمد رياض الخضري في 22 ديسمبر 2009 في 23:33

1
n622971709_461151_8573.jpg
#3

اخي مشكور على ردك ولكن الصفحة فارغة لم تظهر اي بيانات و لا اي رسالة خطاء

لقد استعملت الكود هكذا ولم يعمل معي

function getFirstDayTimestampOfPreviousMonth() {
        $timestamp = strtotime(date("Y-m-1 00:00:00") . ' - 1 months');

        return $timestamp;
}
function getFirstDayTimestampOfCurrentMonth() {
        $timestamp = strtotime(date("Y-m-1 00:00:00"));

        return $timestamp;
}
$startDate=getFirstDayTimestampOfPreviousMonth();
$endDate=getFirstDayTimestampOfCurrentMonth();
$query = "SELECT * FROM acv  WHERE datatime >=$startDate AND datatime <$endDate";

تم تعديل هذه المشاركة بواسطة man in dark في 5 يناير 2010 في 14:23

#4

السلام عليكم

جرب هذا الكود اخى :

<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="tuo"; // Database name
$tbl_name="acv"; // Table name

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

//بداية الايام فى شهر 4
$starttime = mktime(0, 0, 0, 04, 1, 2009); // ==> 01/04/2009
//نهاية الايام فى شهر 4
$endtime = mktime(0, 0, 0, 04, 30, 2009); // ==> 30/04/2009

$sql="SELECT * FROM $tbl_name where datatime >= '".$starttime."' and datatime <='".$endtime."' ";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);

?>

اسماء الشهر الماضي
<?php echo $rows['name']; ?>

ولله التوفيق

تم تعديل هذه المشاركة بواسطة القادرى في 12 يناير 2010 في 20:48

#5

الف شكر اخي القادرى

مواضيع مشابهة