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 :: ассоциативный массив)

 PHP.SU

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


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

> Без описания
PATCH
Отправлено: 12 Июня, 2011 - 21:59:37
Post Id



Частый посетитель


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


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




как правильно реализовать функцию по следующей аналогии.
1.делаем выработку из базы и заносим в ассоциативный массив
2.делаем проверку есть ли в ассоциативном массиве допустим целочисленое значение = 1 (там все числа целые округлять ненада)
3.если есть то создаем новую переменую и присвоить ей значение 1 .

или проще говоря сделать выборку из массива и вытянуть переменую с ключом и со значением равной 1. (если конечно существует в массиве значение 1)

выборку производить foreach на скока я помню однако она не для ассоциативных вроде массивов ибо уже попытался) не совсем правильно вывело.

(Отредактировано автором: 12 Июня, 2011 - 22:06:31)

 
 Top
OrmaJever Модератор
Отправлено: 12 Июня, 2011 - 22:42:12
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




PATCH пишет:
выборку производить foreach на скока я помню однако она не для ассоциативных вроде массивов ибо уже попытался) не совсем правильно вывело.

какраз foreach для асоциативных масивов.
Как пытались? Как получилось? И как нужно?
PATCH пишет:
3.если есть то создаем новую переменую и присвоить ей значение 1 .

это плохая идея, лутше зделть это всё в масиве для того они и существуют чтобы собирать большое количество переменых.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
PATCH
Отправлено: 12 Июня, 2011 - 22:59:16
Post Id



Частый посетитель


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


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




foreach ($prov_acc_mass as $key => $value)
{print "<b>$value - $key</b><br>";}


выводит
1 - 0
1 - имя столбца

хотя запрос был

@$prov_acc = mysql_query ("SELECT id_acc FROM acc_party WHERE id_party =".$user_party."");
@$prov_acc_mass = mysql_fetch_array($prov_acc);

в таблице данные

1 1
1 2
выбираем второй столбец
(Добавление)
P.S нашел альтернативу . займет меньше места в БД да и без выборки обойдусЬ)
(Добавление)
OrmaJever пишет:
это плохая идея, лутше зделть это всё в масиве для того они и существуют чтобы собирать большое количество переменых.

не получится дело в том что я реализую как бы динамические группы которым можно устанавливать права, проверка прав такая, в этот раздел есть доступ если в бд стоит значение 1) я думал сделать в 2 столбца) 1ый ID группы 2 права доступа (права доступа различаются по 1 допустим вход в админ панель 2 работа с категориями 3 работа с постом)) тупанул) если б я так сделал пришлось бы все через массив делать + каждое новое право записывалось с каждой строкИ) я сча решил для каждого доступа создать столбец) в итоге для 1 группы будет 1 строка с правами доступа 1 или 0 , 1 пустить 0 запретить
 
 Top
OrmaJever Модератор
Отправлено: 12 Июня, 2011 - 23:30:37
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




PATCH пишет:
foreach ($prov_acc_mass as $key => $value)
{print "<b>$value - $key</b><br>";}


выводит
1 - 0
1 - имя столбца
...
в таблице данные

1 1
1 2

А?! а как должно быть? нулевой индекс и значение 1 и id_acc и значение 1.

Я не очень понял как у вас права устроены но предлогаю всё переделать.
PHP:
скопировать код в буфер обмена
  1.  
  2. // устанавливаем права
  3. $access = array('admin' =>0,
  4.                         'category'=>1,
  5.                         'post'=>1);
  6. // любое количество индексов и любые значения
  7. // затем в бд в колонке с групой или пользователем (что там у вас) одна колонка для прав например access
  8. mysql_query('UPDATE `acc_party` SET `access` = "'.serialize($access).'" WHERE `id_party` = "'.$user_party.'"');
  9. // затем при выборке
  10. $row = mysql_fetch_array($query);
  11. $row['access'] = unserialize($row['access']);
  12. // и теперь масив прав доступа лежит в $row['access']
  13. print_r($row['access']);

(Отредактировано автором: 12 Июня, 2011 - 23:37:35)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
White
Отправлено: 13 Июня, 2011 - 09:11:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




В mysql_fetch_array указывайте второй аргумент. Не будете путаться в результате.

$prov_acc_mass = mysql_fetch_array($prov_acc, MYSQL_ASSOC);

http://php.net/manual/ru/functio...-fetch-array.php
(Добавление)
Цитата:
CODE (htmlphp):
скопировать код в буфер обмена
  1. mysql_query('UPDATE `acc_party` SET `access` = "'.serialize($access).'" WHERE `id_party` = "'.$user_party.'"');


функция serialize в результирующей строке выдает большое количество двойных кавычек, поэтому непременно вызовет ошибку в синтаксисе SQL


-----
if(time()>1356048000) die();
 
 Top
serega_dgl20
Отправлено: 13 Ноября, 2018 - 14:32:12
Post Id



Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2018  
Откуда: Москва


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




PATCH пишет:

Преобразование объекта PHP в ассоциативный массив
foreach ($prov_acc_mass as $key => $value)
{print "<b>$value - $key</b><br>";}


выводит
1 - 0
1 - имя столбца

хотя запрос был

@$prov_acc = mysql_query ("SELECT id_acc FROM acc_party WHERE id_party =".$user_party."");
@$prov_acc_mass = mysql_fetch_array($prov_acc);

в таблице данные

1 1
1 2
выбираем второй столбец
(Добавление)
P.S нашел альтернативу . займет меньше места в БД да и без выборки обойдусЬ)
(Добавление)
OrmaJever пишет:
это плохая идея, лутше зделть это всё в масиве для того они и существуют чтобы собирать большое количество переменых.

не получится дело в том что я реализую как бы динамические группы которым можно устанавливать права, проверка прав такая, в этот раздел есть доступ если в бд стоит значение 1) я думал сделать в 2 столбца) 1ый ID группы 2 права доступа (права доступа различаются по 1 допустим вход в админ панель 2 работа с категориями 3 работа с постом)) тупанул) если б я так сделал пришлось бы все через массив делать + каждое новое право записывалось с каждой строкИ) я сча решил для каждого доступа создать столбец) в итоге для 1 группы будет 1 строка с правами доступа 1 или 0 , 1 пустить 0 запретить


PROFIT Радость
1.делаем выработку из базы и заносим в ассоциативный массив
2.делаем проверку есть ли в ассоциативном массиве допустим целочисленое значение = 1 (там все числа целые округлять ненада)
3.если есть то создаем новую переменую и присвоить ей значение 1 .
 
 Top
Строитель
Отправлено: 13 Ноября, 2018 - 16:13:17
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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





Спойлер (Отобразить)

(Отредактировано автором: 13 Ноября, 2018 - 16:13:56)

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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB