Помощник
|
Проверка таблицы на пустоту |
Mishko_hb
|
Сообщение
#1
|
||
|
|
||
|
|||
Mulder_hb |
8.9.2010, 13:46;
Ответить: Mulder_hb
Сообщение
#2
|
|
[PHP]$result = mysql_query("SELECT `name` FROM `table` ORDER BY `name`");
for ($name = array(); $row = mysql_fetch_assoc($result); $name[] = $row); if (!$name) { echo "Таблица пуста"; } else { for ($i = 0; $i < count($name); $i++) { echo $name[$i]['name']."<br/>"; } }[/PHP] |
|
|
Mishko_hb
|
Сообщение
#3
|
|
Спасибо! И еще вопрос, чтобы не плодить тем..
Совсем заработался, не могу понять в чем проблема.. Есть база с каталогом товаров, 2 таблицы "cats" (с названиями, описаниями и фотками категорий товаров) и "goods" - с самими товарами. Делаю админку. На странице редактирования категорий у админа должна быть возможность переименовать название и описание категории. Админ нажимает на "редактировать", появляется форма, в полях которой вписаны существующие значения полей таблицы. Что-то меняет, нажимает "ок" и данные в базе обновляются. Вот обработчик последнего: [PHP]if(isset($_GET[ok_editcat])) { $sql="UPDATE cats SET catname='$_GET[catname]', cat_desc='$_GET[cat_desc]'"; mysql_query($sql); header("location: index.php"); } [/PHP] При этом он меняет все названия и описания, что есть в таблице. А нужно, чтобы менял только у одной строки. Как передать id этой редактируемой категории? Помогите... |
|
|
LifeUP |
8.9.2010, 16:48;
Ответить: LifeUP
Сообщение
#4
|
|
Проверка на пустоту:
[PHP] $res = mysql_query ("SELECT * FROM `table`"); if (mysql_num_rows ($res) == 0) { echo 'Пусто'; } else { echo 'Чето есть'; } [/PHP] Для подобного редактирования вам нужно назначить ID (уникальный идентификатор) каждой таблице к примеру 1. таблица id name 2. таблица id name при редактировании одной из них вы будете цеплятся за ID. [PHP] $sql="UPDATE cats SET catname='$_GET[catname]', cat_desc='$_GET[cat_desc]' WHERE id = '" . $id . "'"; [/PHP] |
|
|
Mulder_hb |
8.9.2010, 17:15;
Ответить: Mulder_hb
Сообщение
#5
|
|
Проверка на пустоту: Снова проявлю свое занудство. Никогда не применяйте подобный код на больших базах и высоконагруженных сайтах. Золотое правило гласит: "Никогда не используйте средства стороннего яп для реализации того, что способна сделать сама СУБД". В данном случае запрос: SELECT COUNT('name`) FROM `table`; выполнит нужное действие куда быстрее и менее затратно, чем mysql_num_rows(). А в примере автора темы, использование этой пхп-функции еще и лишнее, т.к. автору в случае непустой таблицы нужно будет эту таблицу парсить и окажется, что он дважды вызовет фактически одну и туже по нагруженности и затратам функцию: mysql_num_rows() и mysql_fetch_assoc(). Зачем дважды парсить один и тот же результат? Давайте писать религиозно правильный и красивый пхп-код. |
|
|
unnormal |
8.9.2010, 17:33;
Ответить: unnormal
Сообщение
#6
|
|
|
|
|
Mulder_hb |
8.9.2010, 17:56;
Ответить: Mulder_hb
Сообщение
#7
|
|
|
|
|
LifeUP |
8.9.2010, 20:56;
Ответить: LifeUP
Сообщение
#8
|
|
Снова проявлю свое занудство. Никогда не применяйте подобный код на больших базах и высоконагруженных сайтах. Золотое правило гласит: "Никогда не используйте средства стороннего яп для реализации того, что способна сделать сама СУБД". В данном случае запрос: SELECT COUNT('name`) FROM `table`; выполнит нужное действие куда быстрее и менее затратно, чем mysql_num_rows(). А в примере автора темы, использование этой пхп-функции еще и лишнее, т.к. автору в случае непустой таблицы нужно будет эту таблицу парсить и окажется, что он дважды вызовет фактически одну и туже по нагруженности и затратам функцию: mysql_num_rows() и mysql_fetch_assoc(). Зачем дважды парсить один и тот же результат? Давайте писать религиозно правильный и красивый пхп-код. Доказательства? помоему это лучше будет чем писать ваш for (), даже взять DLE там проверки через мой способ видел, ваш вижу впервые. накройняк COUNT(). |
|
|
Mulder_hb |
8.9.2010, 23:34;
Ответить: Mulder_hb
Сообщение
#9
|
|
Доказательства? Неужели вы думаете, что инструменты базы данных, которые специально созданы для работы со своими данными, проведут вычисления над ними гораздо медленнее, чем сторонние языки программирования? Была у меня как-то жутко здоровая база, которая крутилась на загруженном под завязку сервере. Нужно мне было делать выборку из одной таблицы с почти миллионом строк, а потом дальше работать с этим набором. Решил я сделать общий запрос (SELECT * ...), а потом mysql_num_rows() и затем mysql_fetch_assoc() и вывод данных пользователю. Каково же было мое удивление, когда пользователь ждал вывод данных почти 2 десятка секунд. Но вот когда я сделал запрос (SELECT COUNT(`id`)) страница вывелась мгновенно. помоему это лучше будет чем писать ваш for () for здесь вообще не при делах. Вы не туда смотрите. Это просто парсинг результирующего набора с сохранением результатов предыдушего прохода. Обыкновенный бестельный цикл. Вы можете применять цикл с телом [PHP]while ($data = mysql_fetch_assoc($result)) { echo $data; }[/PHP] Но в этом случае вы теряете предыдущие данные. Если предыдущие данные вам не нужны, то можно использовать while, если нужны - нужно использовать for. даже взять DLE Дле не показатель. В любом проекте даже самом крутом, встречается быдло код. В дле очень дорожат совместимостью своего кода с предыдущими версиями как своего движка, так и пхп. Там до сих пор 80% кода ядра основано на стандартах третьей версии пхп. накройняк COUNT(). Задача ведь не стоит узнать кол-во записей. Задача стоит узнать пуста ли таблица и в зависимости от результатов скрипт начинает ветвление. Так зачем делать два запроса (SELECT COUNT(*) и SELECT *) или дважды парсить результирующий набор (сначала mysql_num_rows(), а потом в довесок mysql_fetch_*())? Можно ведь все сделать одним запросом и одним парсингом. Как думаете, будет ли это быстрее? |
|
|
Mishko_hb
|
Сообщение
#10
|
|
LifeUP, да, разумеется в каждой таблице есть id. Только вот у меня не получается связать id категории, напротив которой пользователь нажимает "редактировать" и id каткгории в которую вносятся изменения (у меня он все изменяет). Нужно как раз правильное условие WHERE. И я не разобрался в том, что у вас написано после WHERE..
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Проверка позиций сайтов в поисковых системах с помощью Positon.ru Мониторинг продвижения сайтов |
182 | Positon | 178941 | 23.2.2024, 9:53 автор: Positon |
|
Проверка качества прогона по трастовым сайтам, профилям, каталогам | 0 | bestweb20_mw | 1383 | 21.12.2017, 18:36 автор: bestweb20_mw |
|
Отсортировать данные таблицы по дням/часам и тп |
3 | tube | 2316 | 1.7.2017, 0:38 автор: Shandanakar |
|
Фейк вконтакте - лучшая фотомодель (проверка на валид, админка) | 0 | Quant | 2204 | 26.5.2017, 14:33 автор: Quant |
|
Чистим сайты от вирусов, рекомендации, проверка сервера на уязвимость! | 80 | Rxp | 56449 | 16.2.2017, 15:05 автор: Andro11 |
Текстовая версия | Сейчас: 29.3.2024, 5:51 |