[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Снова о циклах и выборки с базы
Dima85
В переменной $email у меня хранятся такие данные: galja,dima,olja,karina
Мне нужно проверить есть ли в базе такой Users и если есть вывести его email.
Делаю я это так, но выводится у меня только первый user. Подскажите пожалуйста как правильно реализовать такую функцию.


	$rows = mysql_query("SELECT Users, mail FROM `users`");
$str = explode(',', $email);
foreach($str as $v){
while ($sta = mysql_fetch_array($rows)){
if (strtolower($sta['Users']) == $v) {
echo " ".$sta['mail'];
}
}
}
Valick
Dima85, в корне не верный подход.

_____________
Стимулятор ~yoomoney - 41001303250491
Dima85
Покажите пожалуйста верный подход.
Valick
Dima85, при работе с базой данных в идеале РНР используется только для вывода готового результата в браузер. Все что можно сделать средствами СУРБД, в подавляющем большинстве случаев и нужно делать средствами Системы Управления Реляционной Базы Данных (СУРБД).
В итоге чтобы проверить есть ли в базе определённый пользователь надо составить запрос с условием.
$user = mysql_real_escape_string($_POST['user']);
$query = "SELECT id, mail FROM users WHERE `Users` ='$user'";
$res = mysql_query($query) or die(mysql_error());
if($res){
if(mysql_num_rows($res) > 0){
// пользователь существует
$rows = mysql_fetch_assoc($res)
echo $rows['mail'];
}
}


_____________
Стимулятор ~yoomoney - 41001303250491
Dima85
Что-то не то. Вы наверное не поняли.
У меня есть переменная $email в ней хранятся данные такого вида galja,dima,olja,karina
ее нужно разбить опираясь на запятые.
Я это делаю так:
$str = explode(',', $email);


далее каждый $str проверить на наличие такого пользователя в базе.
Поэтому я делаю цикл:
foreach($str as $v){
}


В котором насколько я понимаю и должны быть запросы в базу.
А вы насколько я понимаю предлогаете сразу проверить всю переменну $email не разбивая ее. Таким образом ничего не получится.
sergeiss
Цитата (Dima85 @ 26.04.2014 - 13:14)
А вы насколько я понимаю предлогаете сразу проверить всю переменну $email не разбивая ее. Таким образом ничего не получится.

Если ты уверен, что твой подход правильный и что ничего не получится из рекомендуемого, то зачем же тогда спрашиваешь на форуме?

Тебе уже сказали:
Цитата (Valick @ 25.04.2014 - 10:13)
Dima85, в корне не верный подход.

Цитата (Valick @ 25.04.2014 - 12:53)
надо составить запрос с условием.

Если тебе нужно проверить наличие одного (любого) юзера из списка, то тогда надо просто другое условие составить. Ищи инфу про условия в запросе, в частности, про условия вида
WHERE .... IN (....)


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
Dima85, я вам толкую про то что надо сравнение делать средствами СУРБД, а вы его делаете средствами РНР.
sergeiss вам уже подсказал направление WHERE .... IN (....)
В итоге вы получите только тех кто есть в базе из вашего списка.

$query = "SELECT `Users`, `mail` FROM `users` WHERE `Users` IN($email)";
$res = mysql_query($query) or die(mysql_error());
if($res){
if(mysql_num_rows($res) > 0){
// пользователь существует
$rows = mysql_fetch_assoc($res)
echo '<p>'.$rows['Users'].' - '.$rows['mail'].'</p>';
}
}


_____________
Стимулятор ~yoomoney - 41001303250491
twin
Цитата (Valick @ 25.04.2014 - 08:53)
Dima85, при работе с базой данных в идеале РНР используется только для вывода готового результата в браузер. Все что можно сделать средствами СУРБД, в подавляющем большинстве случаев и нужно делать средствами Системы Управления Реляционной Базы Данных (СУРБД).

Да ладно. Это верно только для малонагруженных систем. Не далее чем вчера я положил базу одним запросом на выборку. Тоже решил, что нафиг мучаться. И innodb, как оказалось, не помогает. А разделил на несколько и перенес часть логики в PHP - все летает как самолет.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Dima85
Все получилось. Спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.