PDA

View Full Version : سوال: جمع ساعت



ravand
سه شنبه 13 دی 1390, 19:34 عصر
سلام
من اولش ميخواستم بشينم ساعات كاريم رو با ماشين حساب جمع كنم ، چون تعدادشون خيلي زياده. براي همين تصميم گرفتيم از php كمك بگيرم.
مثلاً سه روز كاري من اين بوده:
8:15 تا 4:30
روز دوم : 8:00 تا :4
روز سوم : 9:30 تا 3:00
ميخوام با php حساب كنم ببينم كل ساعاتي كه من كار كردم چقدره؟
اگه تكست بسازم و ساعات رو توش وارد كنم بهتره.
متشكرم.

ravand
سه شنبه 13 دی 1390, 21:10 عصر
تا اينجا پيش رفتم:

<form action="8.php" method="POST">
ساعت<input type=text" name="s"><br><br>
ساعت<input type=text" name="s2">
<input type="submit" value="جمع ">
</form>


<?php
$s1=$_POST['s'];
$s2=$_POST['s2'];
$s=$s1+$s2;
echo "$s";
?>






دقيقه
<form action="8.php" method="POST">
دقيقه<input type=text" name="d"><br><br>

دقيقه<input type=text" name="d2">
<input type="submit" value="جمع ">
</form>


<?php
$d1=$_POST['d'];
$d2=$_POST['d2'];
$i=$d1+$d2;
echo date('i',$i);
?>

ممنون ميشم اگه يه نفر بياد اين مطلب رو ادامه بده .

ravand
دوشنبه 19 دی 1390, 22:05 عصر
اين روشي كه نوشتم كاملا اشتباه است. اين روش به جاي اينكه مقدار ساعتي رو بين دو ساعت گفته شده رو حساب كنه داره اونا رو با هم جمع ميكنه.
مثلا من الان ميخوام ببينم بين ساعت 8:15 صبح تا 16:45 دقيقه ي بعد از ظهر چند دقيقه و ساعت ميشه . اينطوري كه من حساب كردم 8:30 است . حالا چجوري براش يه كدي بنويسم كه اين كار رو بكنه؟ من بايد دنبال يه الگوريتم براي اين كار باشم . كه اصلا بدونم بايد چيكار بكنم؟ در مرحله ي بعد ميخوام توي ديتابيس ساعات كاريم رو ثبت كنم كه برام حساب كنه چقدر كار كردم.
ممنون ميشم راهنماييم كنيد . از هر كي پرسيدم نتونسته كمكم كنه . حتي مربيم هم اشتباه جوابمو داد.:لبخند:

mbf5923
سه شنبه 20 دی 1390, 09:22 صبح
علامت دو نقطه وسطشون رو حذف کن بعد از هم کم کن و توی عدد بدست اومده دوباره دونقطه رو بذار
البته فکر میکنم php خودش توابعی برای اینکار داشته یاشه

mbf5923
سه شنبه 20 دی 1390, 09:32 صبح
اینم یه راه

<?php
$start = explode(":", $_GET['begin']);
$start_hour = $start[0];
$start_minute = $start[1];

$end = explode(":", $_GET['end']);
$end_hour = $end[0];
$end_minute = $end[1];

$result_minutes = $end_minute - $start_minute;
$result_hours = $end_hour - $start_hour;

echo $result_hours . ":" . $result_minutes . "<Br>";
?>

mbf5923
سه شنبه 20 دی 1390, 09:34 صبح
اینم یه راه دیگه:

$start = strtotime("08:15");
$end = strtotime("16:45");
$elapsed = $end - $start;
echo date("H:i", $elapsed);

hamed-php
سه شنبه 20 دی 1390, 09:49 صبح
سلام

در اینجا بنظر سه ستون در دیتابیس نیاز دارید.
یکی مربوط به آخرین زمان ورود
یکی مربوط به آخرین زمان خروج
و یکی هم مجموع ساعات

مثلاً شما یک قسمت مدیریت سایت دارید که با هر بار وارد کردن نام کاربری و پسورد خودتون وارد صفحه مدیرت وب سایت خود میشوید. در اینجا میتوانید به محض اولین ورود، ساعت ورود خود رو update کنید (a) و در لحظه خروج هم ساعت خروج خود رو update کنید (b). ضمناً در هنگام خروج باید مقدار مجموع ساعات رو هم که با تفریق a از b حاصل میشود در ستون سوم update کنی.

فقط یک ایده است ،

ravand
چهارشنبه 21 دی 1390, 09:59 صبح
يه نمونه كد نوشتم كه اين كار رو ميكنه فقط وقتي جمع ساعت ها بيش از 24 ساعت ميشه به جاي يه روز مي نويسه دو روز. چيكار كنم كه بنويسه يه روز؟

<form action="8.php" method="POST">
شروع<input type=text" name="start"><br>
پايان<input type=text" name="end"><br>
<br>
<input type="submit" value="جمع ">
</form>


8.php





<?php
$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('date');
if($db==false){
die("can not connect db.\r\n");
}
$id=$_POST[id];
$shoro=$_POST[start];
$akhar=$_POST[end];

$start = strtotime($shoro);
$end = strtotime($akhar);


$sql="INSERT INTO times (`id`,`start`,`end`) VALUES ('$id','$start','$end')";
$num=mysql_query($sql,$handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
mysql_close($handle);
?>

chap.php

<?php
$servername = 'localhost';
$dbname = 'date';
$user= 'root';
$pass = '';
mysql_connect($servername, $user, $pass) or die('Connection error');
mysql_select_db($dbname) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$result = mysql_query('SELECT * FROM `times`');
$sum = 0;
while($row = mysql_fetch_assoc($result)) {
$start =$row['start'];
$end= $row['end'];
$s+=$end - $start;
echo $s;
}
echo "<br>";
$chap= date("d ,H:i", $s);
echo "$chap";
?>