|
|
|
| Как вывести конкретные записи из БД имея глобальную переменную.
Имеется глобальная переменная $cat.
Ecли $cat=1, то выводи записи с id(10,11,12)
Ecли $cat=2, то выводи записи с id(20,21,22)
Как это лучше реализовать? | |
|
|
|
|
|
|
|
для: designshadow
(21.06.2009 в 17:00)
| |
<?php
$cat*=10;
$query = mysql_query("SELECT * FROM `table` WHERE `id`>'".$cat."'");
while($a=mysql_fetch_array($query))
{
echo $a['id'];
}
?>
|
| |
|
|
|
|
|
|
|
для: DEM
(21.06.2009 в 17:17)
| | А если нужно вывести где id=118,34,2? | |
|
|
|
|
|
|
|
для: designshadow
(21.06.2009 в 17:34)
| | Создаёте массив с нужными числами и пропускаете через цикл.
<?php
$nm = array('1','2','3','5','235','4');
for($f=0; $f<count($nm); $f++)
{
$query = mysql_query("SELECT * FROM `table` WHERE `id`='".$nm[$f]."'");
while($a=mysql_fetch_array($query))
{
echo $a['id'];
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 18:29)
| | А куда подставить глобальную переменную $cat? | |
|
|
|
|
|
|
|
для: designshadow
(21.06.2009 в 18:33)
| |
<?php
// В зависимости от $cat, выводятся определенные записи
if($cat == '1') { $nm = array('1','2','3','5','235','4'); }
if($cat == '2') { $nm = array('7','9','53','74','25','122'); }
for($f=0; $f<count($nm); $f++)
{
$query = mysql_query("SELECT * FROM `table` WHERE `id`='".$nm[$f]."'");
while($a=mysql_fetch_array($query))
{
echo $a['id'];
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 18:44)
| | Ужас, причём далеко не тихий... | |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 18:48)
| | у меня всегда так :) | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 19:03)
| | это плохо...
учитесь работать с базой данных, и для этого я предлагаю Вам на время забыть всё что вы знаете о РНР | |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 19:05)
| | Я понимаю, что мой способ грузит базу ровно на столько, сколько элементов в массиве... но для небольших сайтов это допустимо...
А если брать обширно, то Ваша критика правильная. Спасибо за неё, буду учиться ;) | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 18:44)
| | Thanks! | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 18:44)
| |
<?php
// В зависимости от $cat, выводятся определенные записи
if($cat == '1') $nm = "10,11,12";
if($cat == '2') $nm = "20,21,22";
$query = "SELECT * FROM `table` WHERE `id` IN ($nm)";
$res = mysql_query($query);
while($a=mysql_fetch_array($res)) {
echo $a['id'];
}
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 19:03)
| | Два разных способа.. не вижу ничего совсем убийственного в моём.. | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 19:04)
| | 1) для обхода массива практически всегда используйте foreach, а не for
2) в моём примере 1 запрос к БД, у Вас их столько сколько надо выбрать строк (а если их будет к примеру 500?) | |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 19:09)
| | 1) Хорошо, исправлюсь. Спасибо
2) Свою ошибку уже понял, написал чуть выше :) | |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 19:09)
| | 1) для обхода массива практически всегда используйте foreach, а не for
А можно узнать, чем foreach предпочтительнее? На сколько я знаю, это довольно тяжелая и медленная конструкция...
для: Diplex
Вот вызывать функцию count() при каждой интерации точно не след... Достаточно до цикла записать результат в переменную и использовать её вместо. | |
|
|
|
|
|
|
|
для: Николай2357
(21.06.2009 в 19:32)
| | И с этим согласен :)
Но! Все мои огрехи лишь тормозят работу, но не меняют смысл... | |
|
|
|
|
|
|
|
для: Николай2357
(21.06.2009 в 19:32)
| | На сколько я знаю, это довольно тяжелая и медленная конструкция...
дайте ссылку для ознакомления пожалуйста | |
|
|
|
|
|
|
|
для: Николай2357
(21.06.2009 в 19:32)
| | А можно узнать, чем foreach предпочтительнее?
можно
как вы будете обходить массив с ключами 1,2,3,4,6,9?
как вы будете обходить ассоциативный массив? | |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 19:59)
| | Нет, я не про это спросил. Если есть возможность использовать for то почему foreach все таки предпочтительнее? Почему его нужно использовать
>практически всегда
? | |
|
|
|
|
|
|
|
для: Николай2357
(21.06.2009 в 20:06)
| | да по одной простой причине... потому что его специально придумали для этого | |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 20:17)
| | Я почему спросил... Читал гдето, непомню где, что foreach довольно громоздкая конструкция и работает с копией массива. И что по возможности нужно стараться её избегать. Если пытаться писать оптимально. Думал что есть более серьёзная причина. Ну так, пусть будет так... | |
|
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 20:32)
| | Во, вот это уже интереснее. Правда тот тест некорректен, но зато дошли руки убедиться. foreach и for работают почти одинаково, первый даже чуточку быстрее. Вот и верь после этого людям))) | |
|
|
|
|
автор: 345345 (21.06.2009 в 23:23) |
|
|
для: Николай2357
(21.06.2009 в 21:24)
| | Николай2357, быстрее, но foreach генерирует в памяти еще один экземпляр массива. В обычной ситуации это фигня, но, например, в программировании под мобильники за такое руки отрывают. Там обычного около 10 Mb оперативной памяти, каждый килобайт на счету. | |
|
|
|
|
|
|
|
для: 345345
(21.06.2009 в 23:23)
| | Что же ты для мобильного такого написал? | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 20:32)
| | Добро пожаловать в почетный клуб быдлокодеров. Если не нравится наш клуб быдлокода, можете примкнуть к гавнокодерам, а их гораздо больше чем нас, гораздо... Это конечно шутка, я если бы такую херню написал, а поначалу я такого гавна написал не одну сотню строк, ну а в прочем не важно... | |
|
|
|
|
|
|
|
для: Skinhead1
(21.06.2009 в 21:49)
| | Оставьте свои "шутки" при себе. Мне глубо *******, когда меня принижают, но молчать не буду. Я "работаю" на результат - а он был достигнут, и больше меня ничего не волнует. Вся конструктивная критика была выслушана и с благодарностью принята, а все оскорбления прошу оставлять при себе. | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 23:15)
| | Это просто была штука, хоть и злая... | |
|
|
|
|
|
|
|
для: Valick
(21.06.2009 в 19:03)
| | И тебе спасибо! :-) | |
|
|
|