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
Форумы портала PHP.SU :: Версия для печати :: SQL запрос
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » SQL запрос

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

1. Gory26 - 31 Августа, 2013 - 12:33:41 - перейти к сообщению
Добрый день. Помогите пожалуйста составить правильный запрос. Есть база, в которой много народу, чей пол храниться в графе `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.  


Но работать это всё как-то не изъявило желания.
2. zelenin - 31 Августа, 2013 - 12:51:36 - перейти к сообщению
запрос составлен верно. $gender передаете в функцию?
3. Gory26 - 31 Августа, 2013 - 13:02:20 - перейти к сообщению
zelenin пишет:
запрос составлен верно. $gender передаете в функцию?


Да, переменная определяется до этого и на экран выводится нормально, но в выборке всё равно встречаются оба пола.
4. zelenin - 31 Августа, 2013 - 13:08:26 - перейти к сообщению
я спросил передается ли переменная, а не определяется ли она раньше. код покажите.
5. LIME - 31 Августа, 2013 - 13:09:24 - перейти к сообщению
zelenin пишет:
передаете в функцию?
пе ре да ешь???
6. Gory26 - 31 Августа, 2013 - 13:10:39 - перейти к сообщению
... До этого идёт определение $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 появился нужный параметр. Подмигивание
7. zelenin - 31 Августа, 2013 - 13:17:29 - перейти к сообщению
что и требовалось доказать Улыбка

 

Powered by ExBB FM 1.0 RC1