Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> допустимы ли sql запросы внутри цикла while 
:(
    Опции темы
Shark
Дата 5.5.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



bars80080, + 1...


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
supervladislav
Дата 5.5.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Ну прямо маяковский какой-то ))))
Я извеняюсь перед вами за тупые вопросы ,но мне больше обратиться не к кому .
Скажите пожалуйста  
если внутри цикла while выполняется выборка из базы 
если я создаю условие  

например 
[php code=php]
if($maindat['people']==2 and $maindat['category']==0 and $maindat['sertifikat']==0) {

         $login=$maindat['login'];   
[/code]
тоесть в переменную будут складываться те логины у которых $maindat['people']>2 так 
PM MAIL   Вверх
bars80080
Дата 5.5.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(supervladislav @  5.5.2009,  17:11 Найти цитируемый пост)
Код

if($maindat['people']==2 and $maindat['category']==0 and $maindat['sertifikat']==0) {

         $login=$maindat['login'];   

тоесть в переменную будут складываться те логины у которых $maindat['people']>2 так  


нет, только те у которых $maindat['people']==2, $maindat['category']==0 и $maindat['sertifikat']==0
PM MAIL WWW   Вверх
enof
Дата 5.5.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(supervladislav @  5.5.2009,  18:11 Найти цитируемый пост)
if($maindat['people']==2 and $maindat['category']==0 and $maindat['sertifikat']==0) 

Цитата(supervladislav @  5.5.2009,  18:11 Найти цитируемый пост)
тоесть в переменную будут складываться те логины у которых $maindat['people']>2 так  

Это каким идиотом надо быть? Ну ни один нормальный человек не сможет сделать такой вывод. smile 
Забудьте про пхп или возьмите наконец-то книжку в руки и читайте.
PM MAIL ICQ Skype   Вверх
Shark
Дата 5.5.2009, 18:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



supervladislav, читай  smile , а то мы тут все со схмеху помрем


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
supervladislav
Дата 6.5.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



ну комуто повеселить то вас надо
PM MAIL   Вверх
voral
Дата 6.9.2011, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.3.2008
Где: Иваново

Репутация: нет
Всего: нет



Код

// если таблица имеет больше столбцов чем нужно далее по коду. Избавляйся от звездочки - ставь имена нужных полей
$mainlink=$db->sql_query("SELECT * FROM sh_game ORDER BY data") or die(mysql_error()); 
if($db->sql_numrows($mainlink)>0){

// создаем реально бесконечный цикл. Т.к. согласно условию выше мы доходим до сюда
// только когда количество строк больше 0, внутри запросов нет
while($maindat=$db->sql_numrows($mainlink)){
// дальше начинаем творить чудеса.  $maindat это целое число (не массив)
// содержащий количество строк
$mylogin=$maindat['login'];
if(!empty($maindat['nix1'])){$mynix1=$maindat['nix1'];}
if(!empty($maindat['nix2'])){$mynix2=$maindat['nix2'];}
if($maindat['people']>=2){
$mynix3="(verhuser='$mynix1' or verhuser='$mynix2') and";
}

Очевидно, что здесь хотелось сделать нечто следующее

Код

if ($res=mysql_query("SELECT login, nix1, nix2, people FROM sh_game ORDER BY data")) {
    while ($maindat=mysql_fetch_assoc($res)) {
           $mylogin=$maindat['login'];
           if(!empty($maindat['nix1'])){$mynix1=$maindat['nix1'];}
           if(!empty($maindat['nix2'])){$mynix2=$maindat['nix2'];}
           if($maindat['people']>=2){
              $mynix3="(verhuser='$mynix1' or verhuser='$mynix2') and";
       }
};


Совершать запросы в цикле безусловно можно и, иногда, наиболее оптимально. Простейший пример: делаем выборку, обрабатываем данные и по условию на основании расчета выполняем некий запрос.  Все нужно решать индивидуально для каждого случая и структуры данных. Простой пример
Код

 select t1.name, t2.orgname from t1 inner join t2 on t2.id=t1.subid where t1.kode=10

Если нам нужен всего 2% записей из таблицы t1. На кой черт нам лишний раз обращаться к t2. (При left join на сколько я помню будет легче, но не всегда left join подходит)


Судя по приведенному куску у вас количество подчиненых храниться в базе. Следовательно вам логичнее сделать запрос с условием где
$maindat['people'] > требуемого числа.

PM MAIL WWW   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0731 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.