PHP форум на ПЫХА.РУ

PHP форум на ПЫХА.РУ

PHP программирование => Базы данных => Тема начата: Malin-ka от 25 Февраль, 2010, 02:47:59



Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 02:47:59
Здравствуйте !
 
1. Нужно просто посчитать кол-во строк. Без массивов и прочей нагрузки.
Я пишу
PHP
$r=mysql_num_rows(mysql_query("SELECT id FROM baza WHERE x=3"));
Как можно проще и с меньшей нагрузкой на сервак получить $r ?
 
2. В столбец таблицы  'foto' пишется значение time().$prefix.
Нужно кроном удалять строки, где time() каждого из этих значений > чем 10 дней.
Можно сделать так:
PHP

$r=mysql_query("SELECT foto FROM baza");
while($m=mysql_fetch_assoc($r)) {
        if(substr($m['foto']0,10)*864000>time()) {mysql_query("DELETE FROM baza WHERE foto=$m['foto']");} }

Можно ли обойтись просто одним DELETE FROM..., и если да, то как ? Ну вобщем тоже, как сделать проще ?


Название: 2 простых вопроса
Отправлено: NRG от 25 Февраль, 2010, 02:51:17
1)  SELECT COUNT .....
2) DELETE FROM `table` WHERE expires_date > current_date


Название: 2 простых вопроса
Отправлено: SpartakuS от 25 Февраль, 2010, 02:54:33
1)
SQL
SELECT COUNT (`id`) AS `number` FROM `baza` WHERE `x` =  3
$result['number'] - то, что тебе нужно. Но не уверен, что правильно синтаксически написал. Поправят если что.
2) Во втором хз. Префикс то зачем?
Спустя 29 секунд добавил
NRG, у нее там
'foto' пишется значение time().$prefix.


Название: 2 простых вопроса
Отправлено: adw0rd от 25 Февраль, 2010, 03:09:56
Нужно кроном удалять строки, где time() каждого из этих значений > чем 10 дней.

А нельзя использовать дату из таблицы?
SQL
DELETE FROM `table` WHERE `created` < DATE_ADD(CURDATE(), INTERVAL -10 DAY)
где created - DATE/DATETIME/TIMESTAMP


Название: 2 простых вопроса
Отправлено: Baboot от 25 Февраль, 2010, 03:55:27
adw0rd, ахуенно! Я совсем забыл про DATE_ADD. Красивый селект получился что пиздец


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 06:03:19
Т.е. полюбому еще одно поле с датой в таблицу, я так поняла...ок, спасибо !
И по первому - тож спасибо ! :)


Название: 2 простых вопроса
Отправлено: adw0rd от 25 Февраль, 2010, 06:13:15
Malin-ka, ну это удобнее будет и быстрее


Название: 2 простых вопроса
Отправлено: Frozzeg от 25 Февраль, 2010, 06:34:52
отличный способ зарегаться под женским ником, чтоб лучше помогали в решении вопросов


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 07:55:07
Обычно регистрируюсь под мужским. Помогают так же, а вот скабрезных шуток намного меньше :)
...и таких вот блестящих догадок тоже...


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 08:05:54
...кстати, это мне муж запретил регистрироваться под мужским именем. Сказал, что так я больше туплю в разговорах :)
А он (Фроззек) меня рассекретил ! :) Ай малацца ! :)))))))))))


Название: 2 простых вопроса
Отправлено: Frozzeg от 25 Февраль, 2010, 08:32:38
а с чего Вы взяли, что я имею ввиду Вас?


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 09:08:52
Тут кроме нас были NRG, SpartakuS, adw0rd и Baboot.
 
Кого имел в виду - вариантов не много :
1. Кого-то из них;
2. Себя;
3. Не в ту тему запостил.
 


Название: 2 простых вопроса
Отправлено: Frozzeg от 25 Февраль, 2010, 09:26:08
4. Pyha style (offtop)


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 09:50:18
Посоветуй лучше, почему у меня запрос не работает.
Пишу
SQL
$q=sprintf("SELECT COUNT (*)  FROM `%s` WHERE `%s`='%s' AND `%s`='%s'",'table','type',$type,'cat',$cat);
$r=mysql_query($q,$db) OR die(mysql_error()); $i=mysql_result($r,0);

В $i должна быть цифра, но до него не доходит. error пишет:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) FROM `table` WHERE `type`='1' AND `cat`='0'' at line 1
 
В примерах везде так. Что я неправильно написала ?


Название: 2 простых вопроса
Отправлено: artoodetoo от 25 Февраль, 2010, 09:57:44
а скобки там зачем?


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 10:06:25
ну так в примерах...пробовала и без них - тоже самое


Название: 2 простых вопроса
Отправлено: SpartakuS от 25 Февраль, 2010, 10:11:26
выведи запрос и кинь сюда.


Название: 2 простых вопроса
Отправлено: Frozzeg от 25 Февраль, 2010, 10:13:11

пробовала и без них - тоже самое
ту же ошибку пишет?


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 10:18:08
Пишет ту же ошибку, только без скобки.
Как вывести запрос ?


Название: 2 простых вопроса
Отправлено: SpartakuS от 25 Февраль, 2010, 10:22:27
echo $q;


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 10:39:21
SQL
SELECT COUNT (*) FROM `table` WHERE `type`='1' AND `cat`='0'


Название: 2 простых вопроса
Отправлено: SpartakuS от 25 Февраль, 2010, 10:48:16
SQL
SELECT COUNT (*) AS `num` FROM `table` WHERE `type`=1 AND `cat`=0
вот так наверное заработает.


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 11:01:37
а с num что потом делать ? Вот пример md5:
 
PHP
$query = "SELECT COUNT(*) AS `counter`
            FROM `table`"
;
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);
 
$elements = $row['counter'];

Он работает, это точно. Но тут мы же опять к массиву пришли...или я не права ?


Название: 2 простых вопроса
Отправлено: adw0rd от 25 Февраль, 2010, 11:09:45

...кстати, это мне муж запретил регистрироваться под мужским именем. Сказал, что так я больше туплю в разговорах :)
А он (Фроззек) меня рассекретил ! :) Ай малацца ! :)))))))))))
вот ты какой ермак!


Название: 2 простых вопроса
Отправлено: SpartakuS от 25 Февраль, 2010, 11:27:21
Malin-ka, а чем не устраивает то? Вроде нет больше вариантов. Это лучше чем брать всё, а потом mysql_num_rows делать.


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 11:32:24
Просто скажи, в этом случае память напрасно не жрётся под массив ?


Название: 2 простых вопроса
Отправлено: SpartakuS от 25 Февраль, 2010, 11:35:23
Ну в таком случае:
PHP
$query = "SELECT COUNT(*) AS `counter`
            FROM `table`"
;
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);
 
$elements = $row['counter'];
unset($row);
 
Но думаю, что это копейки и если проект не высоко нагруженный, то это все хрень...


Название: 2 простых вопроса
Отправлено: Malin-ka от 25 Февраль, 2010, 11:47:28
Иногда в чужих проектах по копейке можно столько сотен рублей насобирать !
Сделаю как ты сказал. Спасибо !


PHP форум на ПЫХА.РУ