Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SQL запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Gory26
Отправлено: 31 Августа, 2013 - 12:33:41
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2013  
Откуда: Chisinau, Moldova


Помог: 0 раз(а)




Добрый день. Помогите пожалуйста составить правильный запрос. Есть база, в которой много народу, чей пол храниться в графе `gender`. Нужно взять рандомного человека, но чтобы он обязательно был заданного пола.

На данный момент реализован процесс рандомного отбора, но без учёта пола:
PHP:
скопировать код в буфер обмена
  1.  
  2. function random_id() {
  3. $query = "SELECT `id` FROM `cl` ORDER BY rand() LIMIT 1";
  4. $res = mysql_query($query) or die(mysql_error());
  5. $row = mysql_fetch_array($res);
  6. $n = $row[0];
  7. return $n;
  8. }
  9.  
  10. $id_inc_1 = random_id();
  11.  

...
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT `name`, `f_name` FROM `cl` WHERE `id`='$id_inc_1'";
  3. $res = mysql_query($query) or die(mysql_error());
  4. $row = mysql_fetch_array($res);
  5. $but_2 = $row['name']." ".$row['f_name'];
  6.  

(Добавление)
Думал в функции изменить запрос на:

PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT `id` FROM `cl` WHERE `gender`='$gender' ORDER BY rand() LIMIT 1";
  3.  


Но работать это всё как-то не изъявило желания.
 
 Top
zelenin
Отправлено: 31 Августа, 2013 - 12:51:36
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




запрос составлен верно. $gender передаете в функцию?
 
 Top
Gory26
Отправлено: 31 Августа, 2013 - 13:02:20
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2013  
Откуда: Chisinau, Moldova


Помог: 0 раз(а)




zelenin пишет:
запрос составлен верно. $gender передаете в функцию?


Да, переменная определяется до этого и на экран выводится нормально, но в выборке всё равно встречаются оба пола.
 
 Top
zelenin
Отправлено: 31 Августа, 2013 - 13:08:26
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




я спросил передается ли переменная, а не определяется ли она раньше. код покажите.
 
 Top
LIME
Отправлено: 31 Августа, 2013 - 13:09:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




zelenin пишет:
передаете в функцию?
пе ре да ешь???
 
 Top
Gory26
Отправлено: 31 Августа, 2013 - 13:10:39
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2013  
Откуда: Chisinau, Moldova


Помог: 0 раз(а)




... До этого идёт определение $id_c по имени рандомного файла, этот кусок я опустил ...
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT `name`, `f_name`, `gender` FROM `cl` WHERE `id`='$id_c'";
  3. $res = mysql_query($query) or die(mysql_error());
  4. $row = mysql_fetch_array($res);
  5. $gender = $row['gender'];
  6. echo $gender." ";                                                               // Убрать
  7. if ($row){
  8. $but_1 = $row['name']." ".$row['f_name']." #";                                  // Убрать диез
  9. }
  10. else{
  11. $but_1 = "~ НЕАКТИВНЫЙ ~";
  12. }
  13.  
  14. function random_id() {
  15. $query = "SELECT `id` FROM `cl` WHERE `gender`='$gender' ORDER BY RAND() LIMIT 1";
  16. $res = mysql_query($query) or die(mysql_error());
  17. $row = mysql_fetch_array($res);
  18. $n = $row[0];
  19. return $n;
  20. }
  21.  
  22. $id_inc_1 = random_id();
  23. $id_inc_2 = random_id();
  24.  
  25. echo "id_c = ".$id_c." ";                                                                         // Убрать
  26. echo "id_inc_1 = ".$id_inc_1." ";                                                             // Убрать
  27. echo "id_inc_2 = ".$id_inc_2." ";                                                             // Убрать
  28.  
  29.  
  30. $query = "SELECT `name`, `f_name` FROM `cl` WHERE `id`='$id_inc_1'";
  31. $res = mysql_query($query) or die(mysql_error());
  32. $row = mysql_fetch_array($res);
  33. $but_2 = $row['name']." ".$row['f_name'];
  34.  
  35. $query = "SELECT `name`, `f_name` FROM `cl` WHERE `id`='$id_inc_2'";
  36. $res = mysql_query($query) or die(mysql_error());
  37. $row = mysql_fetch_array($res);
  38. $but_3 = $row['name']." ".$row['f_name'];
  39.  
  40.  

(Добавление)
Спасибо большое, ошибку нашёл. Передал переменную в функцию. В echo $query появился нужный параметр. Подмигивание
 
 Top
zelenin
Отправлено: 31 Августа, 2013 - 13:17:29
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




что и требовалось доказать Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB