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 :: Версия для печати :: Обработка данных из Mysql в Php
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Обработка данных из Mysql в Php

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

1. LCarlo - 26 Октября, 2011 - 12:27:34 - перейти к сообщению
Здравствуйте ! Я столкнулся с проблемой небольшой проблемой и ,если Вас не затруднит, могли бы Вы объяснить мне кое-что:
Есть таблица `news`, в ней есть следующие: `id`, `autor`, `text`, `date`, `access` . Поле id - auto_increment, все остальные - text, но в поле `access` должна быть информация о том, кто (по никам) может видеть данную статью.
Вот сам вывод у меня получился так:
$db = "test";
$query = mysql_query("SELECT access FROM users where id = 1",$db);
$result = mysql_fetch_array($query);
$group = $result['access'];
echo $group;
Мне, к примеру, выводит следующие данные (а в бд, в поле `access` прописаны ники:'nick1', 'nick2') :
'nick1', 'nick2' . Если делать через массив, то, как бы я не вводил nick1,nick2 или 'nick1', 'nick2' - все-равно это выводится как один идентификатор - 0.
Можно ли как-то по-другому организовать (не через массив или же через массив, но по-другому), а то я так и,к сожалению, не смог справится...

Главное, что суть такова:
`news` = `id` `autor` `text` `date` `access`
И что к каждой новости, нужно прописывать: кто к ней будет иметь доступ, а главное это все средствами php сделать. Когда доступ есть только у одного - там все просто:
$nick = "nick1";
if($group == $nick) {
Вывод новости
}else{
Новость недоступна
} .
А вот когда несколько пользователей - это уже для меня "сверхфантастика" ...
Можете помочь Огорчение ?...
2. salim - 26 Октября, 2011 - 12:34:00 - перейти к сообщению
Пихаем в поле access такие данные:
'Коля|Вася|Петя'
При просмотре новости получает строку и делаем то-то типа
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!preg_match("/$user_name/i", $access ))
  3. {
  4. echo "ERROR";
  5. }
  6. else
  7. {
  8. echo "текст новости";
  9. }
3. LCarlo - 26 Октября, 2011 - 12:39:14 - перейти к сообщению
А как сделать так, чтобы при вводе Вася, Петя, Коля в базу они записывались, как
Вася|Коля|Петя, то есть "," в базу вносилась "|" и чтобы в поле вводилось : Вася, Петя, Коля, а в БД отправлялось, как 'Вася|Петя|Коля' ?
4. Zuldek - 26 Октября, 2011 - 12:45:10 - перейти к сообщению
LCarlo пишет:
А как сделать так, чтобы при вводе Вася, Петя, Коля в базу они записывались, как
Вася|Коля|Петя, то есть "," в базу вносилась "|" и чтобы в поле вводилось : Вася, Петя, Коля, а в БД отправлялось, как 'Вася|Петя|Коля' ?


CODE (htmlphp):
скопировать код в буфер обмена
  1. $value_for_bd = "|".$_POST['name']."|";
5. LCarlo - 26 Октября, 2011 - 12:51:45 - перейти к сообщению
salim, Zuldek Спасибо Вам огромное ! Радость
(Добавление)
Zuldek, столкнулся с небольшой проблемой:
в начале и в конце:

не должно быть "|" . То есть $user_name должна быть: nick1|nick2|nick3|nick4, а так (по Вашему коду) выйдет |nick1|nick2|nick3|nick4| и тогда для любого значение условие будет выполняться.
Как сделать так, чтобы в таблицу вносились nick1|nick2|nick3|nick4, а в поле вводилось
nick1,nick2,nick3,nick4 ? Извините, если я что-то "намудрил", то Вашим способом не работает...
6. salim - 26 Октября, 2011 - 13:48:55 - перейти к сообщению
Zuldek немного не верно
PHP:
скопировать код в буфер обмена
  1. $users = $_POST['user_name'] .'|';


LCarlo, а если Вам надо в UI вывести Коля, Вася, Петя, то делаем

PHP:
скопировать код в буфер обмена
  1. $users = str_replace('|', ', ', $users);
7. LCarlo - 26 Октября, 2011 - 14:06:40 - перейти к сообщению
salim, большое спасибо за Ваше внимание Радость .
Все получилось вот так(суть практически та, что и в Вашем коде):
$a1 = "Коля, Вася, Петя";
$a2 = str_replace(" ","", $a1); //Удаляю пробелы
$a3 = str_replace(',' ,'|', $a2); //Замена , на |
echo $a3;

Только я немного не понял: скобки " " и ' ' обрабатываются по-разному, когда я $a2 записал вот так: $a2 = str_replace(' ','', $a1); , то ничего не произошло, значит "" обрабатывают пробелы, а '' нет ?
Будьте добры, если можете, объясните разницу и возможности скобок ('' и "") .
8. salim - 26 Октября, 2011 - 18:15:00 - перейти к сообщению
Когда интерпретатор видит двойные кавычки, то он (интерпретатор) ждет переменную, в следствии чего скорость генерации скрипта медленнее (вы этого не заметите)...
а когда одинарные кавычки, то интерпретатор ожидает simple string - простую строку.

Что из них использовать - решать Вам

В любом случае код ДОЛЖЕН работать и в Вашем первом и втором случае, я удевлен что 1-й вариант у Вас не срабатывает

 

Powered by ExBB FM 1.0 RC1