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 :: Не разделить 2 поля из MySQL бд..

 PHP.SU

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


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

> Без описания
Extazy
Отправлено: 31 Мая, 2012 - 23:11:48
Post Id


Посетитель


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


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




Здравствуйте.
Код приведён ниже. Мне необходимо получить переменную $mark[], которая должна быть равна округлённому значению частного $rating[] на $votes[]... При запуске кода ниже выдаёт ошибку:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: Cannot use a scalar value as an array in Z:\home\test1.ru\www\engine\modules\user.php on line 246


Подскажите, пожалуйста, что это за ошибка и как её убрать? Что-то вроде не так с типом переменных..

PHP:
скопировать код в буфер обмена
  1. $arr = array();
  2.     $result = mysql_query("SELECT u.nickname, m.text, u.about, u.rating, u.votes
  3.                            FROM comments m
  4.                                JOIN users u ON u.id = m.author_id
  5.                                JOIN users x ON x.id = m.user_id
  6.                                    WHERE x.nickname = '".$_GET['nickname']."'
  7.                                        LIMIT 5") OR die(mysql_error());
  8.  
  9.     while ($row = mysql_fetch_assoc($result)) {
  10.         $rating[] = $row['rating'];
  11.         $votes[] = $row['votes'];
  12.         $mark[] = round('$rating/$votes');
  13.         $author[] = $row['nickname'];
  14.         $comments_text[] = $row['text'];
  15.     }
 
 Top
Toxa
Отправлено: 31 Мая, 2012 - 23:17:25
Post Id



Посетитель


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


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

[+]


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

Это первое, что бросается в глаза.

А вообще, приводите весь код, пожалуйста, откуда мне знать, что у вас там в 246 строке


-----
Удобный сервис для хранения файлов
 
 Top
Extazy
Отправлено: 31 Мая, 2012 - 23:23:30
Post Id


Посетитель


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


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




246 строка это и есть деление массивов:

По сути ничего кроме приведённого выше кода не имеет отношения к ошибке.

оба массива содержит цифры.. так как же тогда правильно поделить эти значения?
 
 Top
Toxa
Отправлено: 31 Мая, 2012 - 23:31:59
Post Id



Посетитель


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


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

[+]


нельзя делить массивы, можно делить элементы массивов, например


Это во-первых.
Во-вторых надо убрать кавычки



такая конструкция будет работать, но не факт что она будет работать так, как надо вам.
Не понимаю, зачем вы в этих строках заполняете массивы
PHP:
скопировать код в буфер обмена
  1.         $rating[] = $row['rating'];
  2.         $votes[] = $row['votes'];
  3.         $mark[] = round('$rating/$votes');
  4.         $author[] = $row['nickname'];
  5.         $comments_text[] = $row['text'];

казалось бы тут просится что-то вроде
PHP:
скопировать код в буфер обмена
  1.         $rating = $row['rating'];
  2.         $votes = $row['votes'];
  3.         $mark = round($rating/$votes);
  4.         // etc.
  5.         $comments_text = $row['text'];


-----
Удобный сервис для хранения файлов
 
 Top
Extazy
Отправлено: 31 Мая, 2012 - 23:42:06
Post Id


Посетитель


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


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




Toxa, я к своему движку подключил Smarty шаблонизатор (может быть знакомы), и в моём случае работает только вариант с массивами - если убрать [], то в шаблон передаётся не имена, а каждая буква имени по отдельности... или я чтото неправильно написал, но вариант с массива точно работает Не понял

Цитата:

не думаю, что у меня будет правильно работать, если указать 0-ой номер элемента, но данный код всё-равно выдаёт ту же ошибку на 246 строке.
(Добавление)
так чтож мне делать?(
(Добавление)
PHP:
скопировать код в буфер обмена
  1.         $rating = $row['rating'];
  2.         $votes = $row['votes'];
  3.         $mark[] = round($rating/$votes);

такой вариант тоже выдаёт ошибку:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: Cannot use a scalar value as an array in Z:\home\test1.ru\www\engine\modules\user.php on line 246
 
 Top
avtor.fox
Отправлено: 01 Июня, 2012 - 08:12:06
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




Extazy пишет:
а каждая буква имени по отдельности


Видимо вывод у вас происходит примерно так -



В данном случае пыха обращается к первому байту.

И почему не сделать вот так? -

PHP:
скопировать код в буфер обмена
  1. $i = 0;
  2. while ($row = mysql_fetch_assoc($result)) {
  3.         $rating[$i] = $row['rating'];
  4.         $votes[$i] = $row['votes'];
  5.         $mark[$i] = round($rating[$i]/$votes[$i]);
  6.         $author[$i] = $row['nickname'];
  7.         $comments_text[$i] = $row['text'];
  8. $i++;
  9. }


А ещё лучше сказать что именно у Вас должно получиться на выходе.
 
 Top
Extazy
Отправлено: 01 Июня, 2012 - 21:23:03
Post Id


Посетитель


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


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




Ваш вариант подходит, но $mark он всё равно выдаёт ошибку. Вот что содержат переменные:
print_r ($rating):
PHP:
скопировать код в буфер обмена
  1. Array ( [0] => 63 [1] => 37 [2] => 37 [3] => 51 [4] => 63 )

print_r ($votes):
PHP:
скопировать код в буфер обмена
  1. Array ( [0] => 11 [1] => 5 [2] => 5 [3] => 7 [4] => 11 )

print_r ($author):
PHP:
скопировать код в буфер обмена
  1. Array ( [0] => Pavel [1] => Боня [2] => Боня [3] => Мария [4] => Pavel )

print_r ($mark):


то есть $mark всё равно содержит только 1 число.. и всё равно выдаёт ошибку на строке $mark[$i] = round($rating[$i]/$votes[$i]);
PHP:
скопировать код в буфер обмена
  1. Warning: Cannot use a scalar value as an array in Z:\home\test1.ru\www\engine\modules\user.php on line 274



подскажите что делать?
(Добавление)
даже если так записать, то ту же ошибку выдаёт:
PHP:
скопировать код в буфер обмена
  1. $mark[$i] = $rating[$i]/$votes[$i];
 
 Top
Extazy
Отправлено: 02 Июня, 2012 - 01:41:42
Post Id


Посетитель


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


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




никто не может помочь?( может я комунить дам доступ через team viewer к моему компьютеру и вы сами посмотрите что там за не дела? Растерялся
 
 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