| быстрая проверка MySQL баз |
|
Иван
|
17.01.09 22:49 |
| меня интересует есть ли такая закономерность чтобы проверить например, существуют ли поля в данной таблице, если нет выводим, что нет данных. И возможно ли такое чтобы без особых затруднений в прописывании SELECT * FROM ... лалала... Получаеться слишком длинный код. Чтобы особо не трепать нервы есть особые функции в php для таких операций? Если есть то какие? ССылка на урок приветствуеться.! |
| ответить |
|
phpfaq
|
17.01.09 23:04 |
есть
В PHP, как и в других языках, есть функции. Определяемые программистом. В которые можно поместить любой код, чтобы потом к нему обращаться.
Вот только я не понял, какой именно код ты хочешь упростить, и до какого. |
| ответить |
|
Иван
|
18.01.09 16:58 |
ну например
SELECT COUNT(*) FROM table;
..... дальше длинный код...
И вот вопрос: какую функчию в php можно применить чтобы при постоянной проверке количества не писать длинные и долгообрабатывающиеся коды. Тоесть мне нужен оптимальный вариант. |
| ответить |
|
phpfaq
|
18.01.09 18:41 |
свою собственную
я что - непонятно написал выше?
пишем СОБСТВЕННУЮ функцию. помещаем в ней любой код. неужели это так сложно?
почему такая проверка выполняется так часто? почему они делаются запросом по всей таблице? |
| ответить |
|
Иван
|
18.01.09 20:55 |
неплохо неплохо
собственно я этого и ожидал вопросом на вопрос одназначно эффективный овет.
Ожидал я не то что мне придеться создавать функцию, а думал есть стандартная например
.....
mysql_select_db($dbname);
$count = sqlcount($table);
....
В таблице $count строк.
М? ну как есть чтото вроде этого? Если нет то я схожу повешусь. |
| ответить |
|
phpfaq
|
18.01.09 21:33 |
вешайся.
ты безнадежен и бесперспективен |
| ответить |
|
Иван
|
18.01.09 22:10 |
моя функция:
include "connect.php";
function countSQL($db_c,$tbl_c){
mysql_select_db($db_c);
$q_c = "SELECT COUNT(*) FROM $tbl_c";
$r_c=mysql_query($q_c);
if(mysql_num_rows($r_c)>0){
$count=mysql_fetch_row($r_c);
}
return $count[0];
}
$countstr = countSQL($database,$table);
echo $countstr;
Вот написал функцию, ее можно еще упростить? |
| ответить |
|
phpfaq
|
18.01.09 22:33 |
зачем?
Зачем её упрощать? Допустим, сократишь ты её код в два раза. Что изменится?
Зачем внутри выбирается база? У тебя это не в коннекте разве происходит? А почему?
И почему тебе вообще понадобилась такая функция? Никому никогда не нужно считать количество записей в таблице. И тем более - для проверки, есть ли там что-нибудь. |
| ответить |
|
Иван
|
18.01.09 22:51 |
...
Нет эти вопросы меян не мучают, сейчас я
столкнулся с проблемой
а именно:
Fatal error: Cannot redeclare countsql()
Я пытаюсь использовать ее дважды например
$countstr1 = countSQL('tovar');
$countstr2 = countSQL('cart');
(На счет выборки БД внутри это я уже давно убрал)
И почему то он ссылаеться на строчку где я вывожу уже результат
echo "В таблице корзины ".$countstr2." строки";
Почему вылазит ошибка и как ее исправить?
Сам пытался разобраться не получилось, везде ответы поверхностные. |
| ответить |
|
phpfaq
|
18.01.09 23:05 |
очень плохо, что не мучают.
ответь мне на них, и после этого я отвечу на твои. |
| ответить |
|
Иван
|
18.01.09 23:38 |
...
Зачем её упрощать? Это сократит сам код, как я полагаю и имхо увеличиться скорость ее выполнения.
Зачем внутри выбирается база? У тебя это не в коннекте разве происходит? А почему?
Потому что у меня в файле connect.php нет выборки базы и эта функция что я написал вначале это была не доделанная я ведь позже убрал выборку БД и оставил только просмотр таблицы.
И почему тебе вообще понадобилась такая функция? Эта функция понадобилась для того чтобы при выводе данных о товаре который существует на складе и в другом случаи который лежит у покупателя в корзине.
Я думаю что ответил на все твои вопросы, а теперь жду ответов на свои. |
| ответить |
|
phpfaq
|
19.01.09 00:19 |
ну и с чего ты взял?
С чего ты взял, что скорость увеличится? А почему вдруг тебе ударило в голову ускорять именно этот кусок кода, когда у тебя весь остальной еще кривее? Работай с тем, что есть. Тебе сейчас лишь бы работало.
Функция, которая считает все записи в таблице, не может понадобиться ни для информации о наличии товаров на складе, ни, тем более - для корзины. Потому что все товары должны лежать в одной таблице. то есть, в ней всегда что-то будет. И дергать её на эту тему бессмысленно. Создавать же отдельную таблицу для корзины - и вовсе идиотизм. В общем, эта функция, как я и предполагал, тебе не нужна. |
| ответить |
|
Ivan
|
21.01.09 08:36 |
я понимаю
тоесть то что у меня все остальное кривое это я понимаю, так как начал писать тот код с самого начала изучения php, я на протяжении пол года делаю этот проект совсместно изучая, а так с течением времени я понимаю что надо сносить все что сделал и писать заного, но смысла нет так как сроки поджимают. сейчас осталось мне доделать корзину, доработать добавление товара и вперед, пускать сайт. Но а если возникнут пробелмы я исправлю. Может это даже не конечный вариант... и я постепенно буду улучшать сайт с помощью своих функций, а то уменя весь код это практически постоянно повторяющийся отрезок. Но вот возникла пробелма о которой я написал в предыдущем посте. О ошибке возникающей при одновременном использовании 1-ой и той же функции.
Вопрос состоит на данный момент как мне эту ошибку исправить, а потом все остальное будет легче уже понять. |
| ответить |
|
phpfaq
|
21.01.09 10:17 |
"может это не конечный вариант"
мне нравится это "может".
ну ищи, где у тебя функция два раза определяется. |
| ответить |
|
Ivan
|
21.01.09 13:49 |
вот этот код
<?php
include "install/into.php";
function countSQL($db_c,$tbl_c){
mysql_select_db($db_c);
$q_c = "SELECT COUNT(*) FROM $tbl_c";
$r_c=mysql_query($q_c);
if(mysql_num_rows($r_c)>0){
$count=mysql_fetch_row($r_c);
}
return $count[0];
}
$countstr1 = countSQL('$user','$table');
$countstr2 = countSQL('$user','$table');
echo "В таблице товаров ".$countstr1." строк"."<br />"."\n";
echo "В таблице корзины ".$countstr2." строк";
?>
Fatal error: Cannot redeclare countsql() in /usr/home/'user'/domains/'domain.ru'/public_html/install/into.php on line 15
Однако в этой строчке ничего странного я не обнаружил. Вот тут то и произошел стопор. |
| ответить |
|
Ivan
|
21.01.09 13:50 |
может
из-за того что выборка ДБ доложна быть в into.php а не в функции? |
| ответить |
|
Ivan
|
21.01.09 18:53 |
...
ошибку решил, просто у меня в двух файлах которые инклудились в исполняемом файле была практически одна и та же функция. |
| ответить |