Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Есть функция FN_Print_Rubr() которая формирует вывод данных исходя из таблицы. Таблица имеет поля которые идут как данные а также в данных есть инструкция что и как делать (в каком виде выводить клиенту информацию). Есть 7 вложений (Таблица1->Таблица2->.....Таблица7). Данная функция выводит информацию по указанному селектору Код: php 1. Среди указаний инструкции есть одно особенное - нужно залезать на уровень глубже в следующую таблицу и выполнить все ее инструкции. Я делал это путем клонирования данной функции, только изменив чуть названия на FN_Print_Pidrubr() Код: php 1. 2. 3. 4. 5. Так как доработки ведутся постоянно и каждый раз нужно не забыть все продублировать - возник вопрос: Могу я использовать вызов функции внутри той же функции. Я представляю себе это так... Код: php 1. 2. 3. 4. 5. 6. Не знаю только можно ли так делать и что будет если по ошибке что-то пойдет не так и не повиснет ли там сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2013, 23:33 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Попробовал теорию на практике. На небольшом фрагменте скрипта работает все успешно. Управление передается еще раз в ту самую функцию в которой все работает как с чистого листа кроме заявленных в global переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2013, 00:34 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Чесно говоря не понятно что вы делаете, зачем городить 7 таблиц и делать подобие рекурсии, сделайте одну таблицу и внутри организуйте дерево, соотношения легко делать. У вас вероятно 7 каких-то рубрик, а если я захочу сделать еще одну? городить очередную таблицу? и менять программный код? Использовать глобальные переменные внутри функции не есть хорошо, это усложняет понимание того что она вообще делает ($GlibinaFN - вообще не понять что это такое - вероятно какой-то флаг который сигнализирует об окончании рекурсивного обращения, в случае ошибки где-либо вы вообще не найдете где эта переменная меняется). Есть ситуации в которых использование глобальных переменных оправдано, например, объекты соединения с базами, ресурсы открытых файлов и тд Желательно бы уже переходить на PDO, и не использовать устаревшие функции серии mysql_*, выкиньте старые книги по PHP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2013, 08:51 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Все под контролем. Я справляюсь. Зато очень удобно и быстро настраивать внешний вид ввода и вывода информаци, а также поиск ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2013, 18:41 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Андрей159, Чувак, ты что рекурсию заново изобретаешь? С каких х... тебя вообще на эту работу взяли??? Книжки пробовал читать хоть какие-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2013, 19:49 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, Я книги почти не читаю. Там как раз то что нужно - опущено. Отличным программистам нет времени на написание нормальной книги + с каждым годом все морально устаревает. "С каких х... тебя вообще на эту работу взяли???" Я ни на кого не работаю. Сам на себя. А вот постоянно стыкаюсь с подобным. К примеру оплатил услуги на год (учу английский на сайте). В проэкте работает 34 программиста. Прошу сделать маленькую деталь, так как очень трудно и неудобно так как есть. И так уже 3 месяца никто ничего не меняет. Так что про "работу" мне все известно. Работал на вводом данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 06:01 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
На видео может не все показал как надо. Есть рубрики-подрубрики. В каждой рубрики полностью свои элементы (не успел показать, можно понять если внимательно посмотрите). Все вспомогательные данные внесены (много всего....порода кошек если захотите кота продать и т.д.) Двойной вход в функцию был необходим так как есть несколько элементов, к примеру элемент [Checkbox+++] (я его так назвал для себя) который подгружает данные на уровень глубже. На видео видно эти элементы. Там соблюдается отступ слева, а на самом деле в таблице данные находятся в глубине. Именно из-за этого надо было использовать двойное вхождение. Результат просчитываю только один раз и сохраняю готовый html код (то что будет на вывод показывать) в отдельное поле, так что алгоритм используется только при сохранении данных. Когда пользователь захочет что-то отредактировать, его данные отдельно сохранены. Название полей прописаны. Чтоб не париться с каждой рубрикой отдельно и не думать над названием полей - этим мне помогает другая программа сделана на VB6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 06:27 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
самый простой способ построить дерево в рамках одной таблице это добавить в ней 2 технологических поля, это, например, parentId и level первое ссылается на ID родителя, а второе показывает уровень вложений (можно и без него). Как вы говорите можно не париться ни с чем, легко получить данные по выбранному родителю (0- корневые элементы), не нужно городить кучу таблиц и лишнего программного кода, такое дерево легко обойти полностью и частично, нет ограничений по вложенности и легко добавляются уровни, сама по себе рекурсия для обхода такого дерева тоже простая, не нужно городить глобальной переменной с флагом как у вас. Конечно есть другие виды деревьев, получше, где меньше обращений в базу данных и возможно более быстрых ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 08:39 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Знаю. Можно было все на MySQL повесить, но на вывод данных мне важно использовать собственный формат. На словах так не объяснить, короче за одно выполнение должно показать все. Есть элементы к примеру "Шаблон Combo" где указан индекс с которого нужно брать значения. К примеру это "цвет". Он используется и для автомобилей и для мотоциклов (хоть он в другой рубрике)... Могу так и "рубрику шаблон" полностью указать, чтоб не дублировать данные в дереве снова. В MSAccess очень удобно работать с вложенными таблицами. Как вы видели синхронизация с сервером MySQL делается за секунды. Повторюсь: такой код будет использоваться только для сохранения данных в отдельное поле, цель которого быстрое чтение готового HTML. 2. У меня есть алгоритм, который базу MySQL преобразовывает в код PHP, в набор условий, когда число превращается в бинарное. К примеру узнать по индексу значения с числа 13254 можно за 14 операций (11001111000110). Скорость выполнения такого действия в отличии от MySQL 6*10 -5 c. С трудом верится ? } Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. А что говорят книги по этому поводу ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 14:50 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Простой подводный камень о котором книга меня не предупредила ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 15:07 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
в общем вам надо сюда http://govnokod.ru/php с вашим стилем программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 16:38 |
|
||
|
Двойное или тройное вхождение в функцию
|
|||
|---|---|---|---|
|
#18+
Возможно. Я не спорю. Я просто так считаю. Если б я знал как понимает код машина, знал бы точто что и как делать. Сделал тест - результат показывает работу в сотни раз быстрей, той о которой пишут в книге. А смотрю видеофорумы, где молятся над чар, варчар, и каждую мелочь 15 минут рассосоливают и мне спать хочется от их философии. Любой умный код = говнокод, если он не работает на собственный кошелек, и в большинстве случаях мы используем каждый день этот г.. код принимая его за ценность, поскольку все его используют. через два-три года 4х ядерный комп операционку не потянет из-за фантазии программистов а мы тут мелочимся кодовой грамматикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2013, 21:32 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=101&tid=1463345]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 389ms |

| 0 / 0 |
