PDA

View Full Version : سوال: ثبت تاريخ در mysql



ravand
دوشنبه 07 آذر 1390, 10:49 صبح
سلام
من ميخوام وقتي مطلبي رو به پايگاه داده ارسال ميكنم به همراهش تاريخ اون مطلب ارسالي هم ثبت بشه.
اين كدهاي من:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8"/>
</head>
<body>
<?php
$Host="localhost";
$User="root";
$Password="";
$Dbname="cms2";
$Tablname="jadval";
$Link= mysql_connect($Host,$User,$Password);

$Query="INSERT into $Tablname values ('$_POST[id]','$_POST[title]','$_POST[msg]')";
mysql_query("SET CHARACTER SET utf8",$Query);
if (mysql_db_query($Dbname,$Query,$Link)) {
print("اطلاعات ثبت شد ");
} else {
print("خطا در ثبت اطلاعات");
}
?>
</body>
</html>


و اينم كدهاي كه مخصوص تاريخ شمسي هست.

<?php
include('jdf.php');
$date=jdate('l, j F Y');
echo "$date";
?>
گفتم اينا رو بذارم كسي دنبالش نگرده :لبخند:
متشكرم

pejman_view
دوشنبه 07 آذر 1390, 11:27 صبح
سلام

امیدوارم خوب باشید،

نگاه کنید بهترین و ساده ترین روش برای ثبت تاریخ در بانک اطلاعاتی timestamp می باشد شما می توانید با تابع time() در php و NOW() در mysql زمان ثبت مطلب را وارد نمایید.
به مثال زیر در mysql توجه کنید:



INSERT INTO table_name (id,title,content,timestamp) VALUES ('$id','$title','$content',NOW())


و مثال برای PHP


$time = time();
INSERT INTO table_name (id,title,content,timestamp) VALUES ('$id','$title','$content','$time'))

سپس وقتی اطلاعات را خواستی برگردانی هم می توانید شمسی، میلادی و قمری از آن استفاده کنید.

ravand
دوشنبه 07 آذر 1390, 13:39 عصر
من يه جورايي گيج شدم كاش بيشتر توضيح ميداديد.
من الان توي mysql يه فيلدي ساختم به نام timestamp با نوع date ، تا تاريخ توي ديتابيس ذخيره بشه.
ولي الان گيج شدم و نميدونم چجوري بايد اين فيلد جديد رو بهش معرفي كنم.
الان كل كدهاي من اينه و هر كاري كردم كار نكرد :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8"/>
</head>
<body>
<?php
$Host="localhost";
$User="root";
$Password="";
$Dbname="cms2";
$Tablname="jadval";
$Link= mysql_connect($Host,$User,$Password);
mysql_select_db("$Dbname");
$time = time();
$id=$_POST['id'];
$title=$_POST['title'];
$msg=$_POST['msg'];

$Query=mysql_query("INSERT INTO $Tablname (id,title,msg,timestamp) VALUES ('$id','$title','$msg','$time')")or die(mysql_error());
mysql_query("SET CHARACTER SET utf8",$Query);
if (mysql_db_query($Dbname,$Query,$Link)) {
print("اطلاعات ثبت شد ");
} else {
print("خطا در ثبت اطلاعات");
}
?>
</body>
</html>

ravand
سه شنبه 08 آذر 1390, 10:01 صبح
نميدونم چجوريه كه هيچ كس جواب سوالاي منو نميده. همه اش آخرش خودم مشكل خودم رو حل ميكنم :قهقهه:
بالاخره رفتم يه فيلد توي mysql ساختم و اسمش رو گذاشتم date با نوع varchar(50) .
بعد امدم اين كدها رو نوشتم:

<?php
$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('cms2');
if($db==false){
die("can not connect db.\r\n");
}
$id= $_POST['id'];
$title= $_POST['title'];
if($title=="")
die('فيلد خالي است');
$msg= $_POST['msg'];
if($msg=="")
die('فيلد خالي است');

include('jdf.php');
$date=jdate('l, j F Y');


$query = "INSERT INTO jadval SET msg = '$msg',title='$title',date='$date'";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo "تغییر یافت ";
}
else
if($num == 0){
echo"تغییر نیافت ";
}
mysql_close($handle);
?>

Arthas1990
چهارشنبه 09 آذر 1390, 00:40 صبح
نميدونم چجوريه كه هيچ كس جواب سوالاي منو نميده. همه اش آخرش خودم مشكل خودم رو حل ميكنم :قهقهه:
بالاخره رفتم يه فيلد توي mysql ساختم و اسمش رو گذاشتم date با نوع varchar(50) .
بعد امدم اين كدها رو نوشتم:

<?php
$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('cms2');
if($db==false){
die("can not connect db.\r\n");
}
$id= $_POST['id'];
$title= $_POST['title'];
if($title=="")
die('فيلد خالي است');
$msg= $_POST['msg'];
if($msg=="")
die('فيلد خالي است');

include('jdf.php');
$date=jdate('l, j F Y');


$query = "INSERT INTO jadval SET msg = '$msg',title='$title',date='$date'";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo "تغییر یافت ";
}
else
if($num == 0){
echo"تغییر نیافت ";
}
mysql_close($handle);
?>

سلام دوسته گلم
این روش شما خوبه اما یه مشکل بزرگ داره اونم اینه که اگه بخوای بین داده هات بر اساس تاریخت جستجو کنی واست مشکل ساز میشه .
بهترین راه اینه که همین فیلد کاراکتریت رو نگه داری و یه فیلد دیگه از نوع date به جدولت اضافه کنی و در زمان درج به اوم مقدار now() رو بدی
بنا براین هم میتونی براساس زمان جستجو کنی و هم شمسیش رو داری.
وا3 خیلی از دوستان این سوال پیش میاد که چرا شمسی رو هم توی جدول درج کنند و فکر میکنند این کار سرباره وا3 بانکشون
اما این کار برای تراکنش های بالا از تخصیص اضافه منابع جلوگیری میکنه به این شکل که اگر فقط از نوع تاریخ میلادی داشته باشیم برای بازیابی اونا باید تبدیلشون کنیم به شمسی که این کار در تراکنش های میلیونی بسیار منابع رو اشغال میکنه و اما اگه مثل دوستمون بخوایم فقط شمسی رو در جدول ذخیره کنیم بنابراین در زمان جستجو میان داده ها مشکل نوع تاریخ داریم .
در این روش در زمان درج شمسی و میلادی رو درج میکنیم . زمان جستجو و غیره میلادی رو استفاده میکنیم و زمان خواندن اطلاعات فیلد شمسی رو می خونیم.
اگه دوستان سوالی براشون پیش اومد ، به این دلیل که کم میام برنامه نویس واسم pm بدن یا بزنگن

امیدوارم کمکی کرده باشم

ravand
چهارشنبه 09 آذر 1390, 08:51 صبح
من متوجه منظور شما نميشم. يعني نميشه يه جستجوگر براش ساخت و توي جستجوگر نوشت مثلا 13 آذر؟:متفکر:

Arthas1990
چهارشنبه 09 آذر 1390, 21:33 عصر
من متوجه منظور شما نميشم. يعني نميشه يه جستجوگر براش ساخت و توي جستجوگر نوشت مثلا 13 آذر؟:متفکر:
شما اگه بخوای بازه 10 آدر تا 16 اسفند رو خروجی بگیری باید کلی کد بنویسی که باعث کاهش سرعتت میشه وا3 تراکنش بالا . حالا اگه date باشه و خوده جناب مای واست خرروجی میده 3 سوت . اگه قبول داری حرفم رو تشکر بزن :چشمک:

امیدوترم کمکی کرده باشم

ravand
چهارشنبه 09 آذر 1390, 21:39 عصر
شما اگه بخوای بازه 10 آدر تا 16 اسفند رو خروجی بگیری باید کلی کد بنویسی که باعث کاهش سرعتت میشه وا3 تراکنش بالا . حالا اگه date باشه و خوده جناب مای واست خرروجی میده 3 سوت . اگه قبول داری حرفم رو تشکر بزن :چشمک:

امیدوترم کمکی کرده باشم

خب من نيازي به همچين كاري ندارم. من فوقش براي قالبش يه آرشيو ماهانه ميذارم. و براي قسمت مديريت يه جستجوگر ميسازم كه دو تا فيلد داشته باشه يه فيلدش مخصوص جستجو در عنوان مطالب هست و ديگري جستجو در مطلب و تاريخ. تا بنويسي تاريخ مثلا 18 آذر يا آذر همون مطالب برات رديف شه.
خيلي راحت. الان اگه بري سايت بلاگ اسكاي رو هم ببيني همينطوريه.

ravand
چهارشنبه 21 دی 1390, 11:14 صبح
من امدم تاريخ رو به ميلادي در ديتابيس ثبت كردم و بعد وقتي خواستم چاپش كنم خواستم به شمسي تبديلش كنم به مشكل برخوردم.

<?php
include('jdf.php');
$servername="localhost";
$dbname="date";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM jadval",$dblink);
while($record=mysql_fetch_assoc($dbresult))
{
echo ($record['title']);
echo "<br>";
echo ($record['msg']);
echo "<br>";
$date=($record['date']);
$jdate=jdate($date);
echo "$jdate";
}
mysql_close($dblink);
?>

الان تاريخ به فارسي نوشته ميشه به جاي اينكه به شمسي تبديل بشه.
بايد چيكار كرد؟
نميشه اصلا تاريخ رو همون موقع به شمسي تبديل كرد و بعد وارد ديتابيس كرد؟
من رفتم اين كار رو بكنم اصلا در ديتابيس ثبت نشد.

mamali-mohammad
چهارشنبه 21 دی 1390, 11:18 صبح
مقدار date رو بد فراخوانی کردی .
درستش :

echo $date=jdate("Y/m/d",strtotime($row["date"]));

jaafar1363
سه شنبه 19 دی 1391, 09:26 صبح
ببخشید.اشتباه پست زدم.

ebrahim rezaee
پنج شنبه 24 اسفند 1391, 13:35 عصر
سلام بر همه دوستان حرفه ای
من هنوز خیلی خیلی مبتدی هستم
پست های بالا رو خوندم و jdf رو هم includ کردم کار هم می کنه
اما نمی دونم وقتی دارم یک خبر وارد می کنم چیکار کنم که تاریخ و ساعت اتوماتیک درج شه (البته غیر اتوماتیکش رو هم بلد نیستم:ناراحت:)
و ازون طرف راحت نشونش بدم
لطفا راهنماییم کنید.

ravand
پنج شنبه 24 اسفند 1391, 13:43 عصر
سلام بر همه دوستان حرفه ای
من هنوز خیلی خیلی مبتدی هستم
پست های بالا رو خوندم و jdf رو هم includ کردم کار هم می کنه
اما نمی دونم وقتی دارم یک خبر وارد می کنم چیکار کنم که تاریخ و ساعت اتوماتیک درج شه (البته غیر اتوماتیکش رو هم بلد نیستم:ناراحت:)
و ازون طرف راحت نشونش بدم
لطفا راهنماییم کنید.
این تاپیک خیلی قدیمیه :لبخند:
تاریخ رو میخوای به فارسی وارد کنی یا انگلیسی؟

$date_1=date('Y-m-d h:i:s');
mysql_set_charset('utf8',$Link);
$Query="INSERT into $Tablname (`title`,`msg`,`edame`,`date`) values ('$title','$msg','$edame','$date_1')";

ebrahim rezaee
پنج شنبه 24 اسفند 1391, 13:54 عصر
مرسی فکر نمیکردم کسی جواب بده
به فارسی اما نمیدونم چجوری در منیجر (مثلا زمان اضافه کردن خبر) باید با input type=select از کاربر بگیریم یا خود برنامه تولید کنه این کد منه
$sql="insert into news (title, short, textnews, date) value('$title','$short','$textnews','$date') ";

ravand
پنج شنبه 24 اسفند 1391, 13:59 عصر
خوب مثل این روشی که گفتم هست دیگه. زمان رو میدی به متغییر خودش با insert وارد فیلد مخصوصش در جدول میکنه.