Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: console в Sep 21, 2008, 19:44



Титла: (РЕШЕН) Mysql
Публикувано от: console в Sep 21, 2008, 19:44
Здравейте!

Имам база данни в която се записват чаове в формат (ЧЧ,ММ,СС).

Имам примерно :
18:00:00 и
18:00:10
като те са в различни колони разбира се.

Мога ли да селектирам чрез Mysql времето между двата часа в секунди?
В случая е 10 секунди.


Титла: (РЕШЕН) Mysql
Публикувано от: neter в Sep 21, 2008, 22:17
Примерен код
select TIMEDIFF('18:00:10' , '18:00:00')

Това устройва ли те?

edit: Естествено, заявката ще е по-сложна, тъй като ще трябва да има и условие за избор на точно тези стойности, но за това което питаш... Дай повече информация, ако ще градим цяла заявка ;)





Титла: (РЕШЕН) Mysql
Публикувано от: console в Sep 22, 2008, 17:06
Neter тази заявка ми върши работа само че немога да го комбинирам с php

Примерен код

<?php
$connect=mysql_connect("localhost","root","password");
$db = mysql_select_db("database",$connect);
$sql ="select time,time1 from table where id=1";
$result=mysql_query($sql,$connect);

while ($line = mysql_fetch_array($result) )
{
$time = $line['time'];
$time1 = $line['time1'];
}
$sql = "SELECT TIMEDIFF ($time,$time1)";
$result = mysql_query($sql,$connect);
echo $result;
?>


Примерен код
# php fail.php
Resource id #6



Мога ли въобще по този начин да го направя?


Титла: (РЕШЕН) Mysql
Публикувано от: neter в Sep 22, 2008, 19:04
1. Махни интервала между TIMEDIFF и скобата. Понякога създава проблеми;
2. Използвай единични кавички, вместо двойни, освен ако кодът не изисква задъжително двойни кавички. Подобрява се бързодействието;
3. Не е нужно да пълниш кода с излишни указатели за връзка във всяко mysql_query, когато имаш само една връзка към базата;
4. Извежда ти "Resource id #6" тъй като викаш резултата от mysql_query, вместо от пропуснатия mysql_fetch_array. Допълнително, при echo се указва и колоната, която трябва да се изведе, тъй като $result е масив, а не единична стойност. И допълнително, указвай на mysql_fetch_array как да си кръсти стойностите с MYSQL_ASSOC и MYSQL_NUM или използвай кратката функция mysql_fetch_assoc. И още едно допълнително, ако използваш ASSOC, то имай предвид, че колоната при втория SELECT ще има ново име и то ще бъде "TIMEDIFF('{$time}','{$time1}';)". И това всичкото в пример
Примерен код
<?php
$connect = mysql_connect('localhost','root','password');
$db = mysql_select_db('database',$connect);
$sql = 'select time,time1 from table where id=1';
$result = mysql_query($sql);

while ($line = mysql_fetch_assoc($result) )
{
$time = $line['time'];
$time1 = $line['time1'];
}
$sql = "SELECT TIMEDIFF('{$time}','{$time1}')";
$result = mysql_query($sql);
$result1 = mysql_fetch_assoc($result);
echo $result1["TIMEDIFF('{$time}','{$time1}')"];
?>

5. Можеш драстично да съкратиш кода си като обединиш двете заявки в една и използваш MYSQL_NUM. Tогава примерът изглежда така
Примерен код
<?php
$connect = mysql_connect("localhost","root","password");
$db = mysql_select_db("database",$connect);
$sql = "SELECT TIMEDIFF((select time from table where id=1),(select time1 from table where id=1))";
$result = mysql_query($sql);
$result1 = mysql_fetch_array($result, MYSQL_NUM);
echo $result1[0];
?>






Титла: (РЕШЕН) Mysql
Публикувано от: console в Sep 24, 2008, 09:57
Благодаря свърши ми прекрасна работа :)