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]

 PHP.SU

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


 Страниц (3): « 1 [2] 3 »   

> Описание: Счётчик
Эдвард
Отправлено: 30 Сентября, 2014 - 13:59:19
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2014  


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




dcc0 пишет:
Чтобы заниматься отладкой чужого скрипта, нужно видеть весь код


Весь код сюда не перенесёшь – он слишком громоздкий. Но его можно просмотреть непосредственно на самой странице: http://med-75[dot]hol[dot]es/4/1.php .

dcc0 пишет:
Я почему-то думаю, что с циклом так:


IllusionMH пишет:
Эдвард, массивы вы сооздали, а заполнять их кто будет?


С массивом и циклом для переменной d вроде понятно, но как заполнить массивы для переменных a, b и c, не понимаю.
 
 Top
dcc0
Отправлено: 30 Сентября, 2014 - 16:31:37
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Советую
http://javascript[dot]ru/Array
Тема несложная, но не у всех получается сразу въехать в массивы, я бы посоветовал отложить основную задачу на некоторое время и прочитать раздел по массивам и поупражняться в составлении разных конструкций.
А именно:

1. Создание массива.
2. Перебор значений массива в цикле и вывод значений.
3. Перебор и ключей, и значений.
4. Подстановка условия в цикл.


Для массивов довольно много встроенных функций, которые иногда избавляют от циклов, но придется читать и упражняться на простых конструкциях, иначе трудно будет понять и составить более сложную.

P.S.
Скрипт довольно объемный, чтобы его доработать нужно вникать, а не хочется.
При том, что многие тут JS знают, в основном, форум по языку PHP.

Заодно, наверное, имеет смысл прочитать или перечитать что-нибудь общее по теории множеств.

(Отредактировано автором: 30 Сентября, 2014 - 17:31:33)



-----
Март 2021. Бросил программирование
 
 Top
esterio
Отправлено: 30 Сентября, 2014 - 17:22:25
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




а еще мета тег в начале
такого не должно быть
Прикреплено изображение (Нажмите для увеличения)
Screenshot from 2014-09-30 17:21:44.png
 
 Top
Эдвард
Отправлено: 30 Сентября, 2014 - 21:35:39
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2014  


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




dcc0 пишет:
но не у всех получается сразу въехать в массивы


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

dcc0 пишет:
я бы посоветовал отложить основную задачу на некоторое время и прочитать


Отклад не идёт в лад. Раз никто не хочет помогать, придётся пока работать на switch-ах, хоть это и убьёт уйму времени и, возможно, скажется на быстродействии скрипта. Недовольство, огорчение
(Добавление)
esterio пишет:
а еще мета тег в начале


Это PHP-часть. По идее, данный код должен быть скрыт.
 
 Top
esterio
Отправлено: 01 Октября, 2014 - 12:15:12
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Эдвард
чем вам еще помочь. вам же еще с первого сообщения сообщили о массивах и циклах. потом привели ссилку на учебник где можно почитать. что еще нужно? что бы за вас все написали? вы говорити вам нужны примеры
http://javascript[dot]ru/basic/array
здесь полно. или вы думаете кто-то другое придумает
поймите речь не в том что никто не хочет помогать, а в том что вы ленитесь сами поискать по ключевых словах (массивы, циклы) в гугле и не особо проявляете интерес к учебе программирования.

(Отредактировано автором: 01 Октября, 2014 - 12:16:51)

 
 Top
dcc0
Отправлено: 01 Октября, 2014 - 12:54:01
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Эдвард
Я бы даже сказал так: если действительно вам кажется сложным тема массивов, но хотите, чтобы программа заработала, наверное, есть смысл поискать специализированные форумы JS, вероятно, найдутся люди, которые тренировки ради перепишут скрипт.


-----
Март 2021. Бросил программирование
 
 Top
tato
Отправлено: 02 Октября, 2014 - 01:01:57
Post Id



Посетитель


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


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





Эдвард,

Эдвард пишет:

--- Эдвард, Вам срочно надо почитать про циклы.
--- Почитал. Но как применить конкретно к моему случаю, не понимаю.


Плохо почитали значит. Должно прийти озарение.


-----
просто ?: сложно
 
 Top
Эдвард
Отправлено: 02 Октября, 2014 - 10:52:07
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2014  


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




dcc0 пишет:
есть смысл поискать специализированные форумы JS, вероятно, найдутся люди, которые тренировки ради перепишут скрипт


На специализированном форуме тоже пока глухо: http://javascript[dot]ru/forum/dom-w[dot][dot][dot]stit-skript[dot]html .
(Добавление)
esterio пишет:
вы ленитесь сами поискать по ключевых словах (массивы, циклы) в гугле и не особо проявляете интерес к учебе программирования


Сам не из ленивых. С поисковыми системами работаю постоянно. Но всё равно пока не въезжаю в синтаксис массивов и циклов. Ещё раз повторю: нужны близкие по смыслу примеры – и не просто код, а демонстрация работы.
 
 Top
esterio
Отправлено: 02 Октября, 2014 - 13:29:59
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




смотрите в контексте JS
CODE (javascript):
скопировать код в буфер обмена
  1. var arr = [1, 2, 3, 4, 5, 6];
  2. var i = 0;
  3. var n = arr.length;
  4. for(i = 0; i < n; i++){
  5.     alert(arr[i]);
  6. }
 
 Top
Эдвард
Отправлено: 02 Октября, 2014 - 13:38:40
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2014  


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




esterio пишет:
смотрите в контексте JS
CODE (javascript):
скопировать код в буфер обмена
  1. var arr = [1, 2, 3, 4, 5, 6];
  2. var i = 0;
  3. var n = arr.length;
  4. for(i = 0; i < n; i++){
  5.     alert(arr[i]);
  6. }


В Сети уже видел уйму подобных примеров. Только вот какое отношение они имеют к моей задаче (особенно alert)?

Многого не прошу: объясните хотя бы, как исправить ошибку с вводом массивов a, b и c. Если разберусь в этом, дальше проще должно быть.
 
 Top
Sail
Отправлено: 02 Октября, 2014 - 13:49:13
Post Id



Участник


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


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




Эдвард пишет:
Только вот какое отношение они имеют к моей задаче (особенно alert)?

Про остальное не скажу, но вот alert - это пример того, как обратиться к конкретным данным... Простейшая демонстрация...
 
 Top
Эдвард
Отправлено: 02 Октября, 2014 - 14:07:49
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2014  


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




Ещё одна попытка:

CODE (javascript):
скопировать код в буфер обмена
  1. var d = [1, 2, 3];
  2.  
  3. var a = [1, 2, 3];
  4. var b = [1, 2, 3];
  5. var c = [1, 2, 3];
  6.  
  7. for (i = 0; i <= 3; i++){
  8.         d[i] = Math.ceil(a[i]/100)+Math.ceil(b[i]/100)+Math.ceil(c[i]/100);
  9.  
  10.    if (a[i] == 0){a[i] = "P"; }
  11.    if (b[i] == 0){b[i] = "P"; }
  12.    if (c[i] == 0){c[i] = "P"; }
  13. }
  14.  
  15. form.total10.value = d[0];
  16. form.total11.value = d[1];
  17. form.total12.value = d[2];



В колонке «Итого игр» появились цифры, но при любых комбинациях – только «тройки». Конструкция «if» вообще не работает. Опять что-то упустил. Недовольство, огорчение

(Отредактировано автором: 02 Октября, 2014 - 14:08:06)

 
 Top
Эдвард
Отправлено: 06 Октября, 2014 - 19:23:38
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2014  


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




tato пишет:
Должно прийти озарение


Озарение так и не пришло, хотя перелопатил кучу «учебников» и провёл массу экспериментов. Лишний раз убедился, что доступная для понимания информация по массивам и циклам в Сети попросту отсутствует. Скудные и невнятные уроки/примеры всюду практически одни и те же – словно скопированы из одного убогого источника, где изначально не ставилась цель – внести ясность и сделать уроки максимально доступными для новичков. Более того, закралось подозрение, что сама по себе тема массивов и циклов сложна и для некоторых программистов (хотя оные стесняются в этом признаться).

dcc0 пишет:
Скрипт довольно объемный, чтобы его доработать нужно вникать, а не хочется


Максимально упрощённый вариант моей задачи: http://med-75[dot]hol[dot]es/1/8[dot]html :

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <meta charset="utf-8">
  3.  
  4. <head>
  5. <script type="text/javascript">
  6.  
  7. function calculator(form) {
  8.  
  9. var e1 = form.e1.value;
  10. var e2 = form.e2.value;
  11. var e3 = form.e3.value;
  12.  
  13. switch (e1)
  14. {      
  15. case "ab" : a1=1 , b1=1 , c1=""; break;
  16. case "ac" : a1=1 , b1="" , c1=1; break;
  17. case "bc" : a1="" , b1=1 , c1=1; break;
  18. default:  a1="" , b1="" , c1="";
  19. }
  20.  
  21. switch (e2)
  22. {      
  23. case "ab" : a2=1 , b2=1 , c2=""; break;
  24. case "ac" : a2=1 , b2="" , c2=1; break;
  25. case "bc" : a2="" , b2=1 , c2=1; break;
  26. default:  a2="" , b2="" , c2="";
  27. }
  28.  
  29. switch (e3)
  30. {      
  31. case "ab" : a3=1 , b3=1 , c3=""; break;
  32. case "ac" : a3=1 , b3="" , c3=1; break;
  33. case "bc" : a3="" , b3=1 , c3=1; break;
  34. default:  a3="" , b3="" , c3="";
  35. }
  36.  
  37. form.a1.value = a1;
  38. form.a2.value = a2;
  39. form.a3.value = a3;
  40.  
  41. form.b1.value = b1;
  42. form.b2.value = b2;
  43. form.b3.value = b3;
  44.  
  45. form.c1.value = c1;
  46. form.c2.value = c2;
  47. form.c3.value = c3;
  48. }
  49.  
  50. </script>
  51. </head>
  52.  
  53. <style type="text/css">
  54.     .s1 {
  55.       text-align: center;
  56.       font-weight: bold;
  57.       width: 100px;
  58.     }
  59. </style>
  60.  
  61. <form name="f1">
  62.  
  63. <select name="e1" class="s1">
  64.  <option>ab</option>
  65.  <option>ac</option>
  66.  <option>bc</option>
  67. </select>
  68. <select name="e2" class="s1">
  69.  <option>ab</option>
  70.  <option>ac</option>
  71.  <option>bc</option>
  72. </select>
  73. <select name="e3" class="s1">
  74.  <option>ab</option>
  75.  <option>ac</option>
  76.  <option>bc</option>
  77.  </select>
  78.  
  79. <br>
  80.  
  81. <input name="a1" type="text" class="s1"> <input name="a2" type="text" class="s1"> <input name="a3" type="text" class="s1">
  82.  
  83. <br>
  84.  
  85. <input name="b1" type="text" class="s1"> <input name="b2" type="text" class="s1"> <input name="b3" type="text" class="s1">
  86.  
  87. <br>
  88.  
  89. <input name="c1" type="text" class="s1"> <input name="c2" type="text" class="s1"> <input name="c3" type="text" class="s1">
  90.  
  91. <br><br>
  92.  
  93. <input type="button" value="Калькуляция" onClick="calculator(this.form)">
  94. <input type="reset" value="Сброс">
  95.  
  96. </form>
  97. </html>


В идеале вместо трёх switch-ей должен быть один – например, такой:

CODE (javascript):
скопировать код в буфер обмена
  1. switch (e[i])
  2. {      
  3. case "ab" : a[i]=1 , b[i]=1 , c[i]=""; break;
  4. case "ac" : a[i]=1 , b[i]="" , c[i]=1; break;
  5. case "bc" : a[i]="" , b[i]=1 , c[i]=1; break;
  6. default:  a[i]="" , b[i]="" , c[i]="";
  7. }


Но опять же встаёт вопрос, как грамотно заполнить массивы для переменных e, a, b, c и создать для них соответствующий цикл.
 
 Top
IllusionMH
Отправлено: 06 Октября, 2014 - 20:09:13
Post Id



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


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


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




Эдвард пишет:
В колонке «Итого игр» появились цифры, но при любых комбинациях – только «тройки».

Эдвард, а чему равно Math.ceil(1/100)? Math.ceil(2/100)? Math.ceil(3/100)? И почему результат сложения не должен равнятся трем?
Эдвард пишет:
Конструкция «if» вообще не работает. Опять что-то упустил.

Как условие if должно выполниться, если у вас в массивах значения 1,2,3 не равные 0?
 
 Top
Эдвард
Отправлено: 06 Октября, 2014 - 20:21:43
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2014  


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




IllusionMH пишет:
Эдвард, а чему равно Math.ceil(1/100)? Math.ceil(2/100)? Math.ceil(3/100)? И почему результат сложения не должен равнятся трем?


В том-то и вопрос, почему переменные a, b, c не участвуют в математической операции. Сколько не пытался добиться ответа по ошибке, пока только издевательское молчание. Недовольство, огорчение

IllusionMH пишет:
Как условие if должно выполниться, если у вас в массивах значения 1,2,3 не равные 0?


Наоборот: если значение переменной = 0, в окне должна проявиться буква «Р». Без использования массивов данная конструкция работает без проблем: http://med-75[dot]hol[dot]es/1/7[dot]html .
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB