Лолшто, языки-то разные. Но, во-первых, С++, хоть это будет и не совсем корректно, но можно считать надмножеством С. А во-вторых, С позволяет прочувствовать работу кода. Изучение необходимых для этого основ С не занимает много времени. И пусть программист не станет в дальнейшем использовать специфичные возможности С, ему будет гораздо проще быстро и корректно вникнуть в то, о чем рассказывают авторы книг про другие языки, в частности, про С++.
Jamba7, раскуривайте консоль. Может быть, у вас в itemName или trade какая-нибудь не та хрень, которая требуется. В представленной функции они берутся из другой области видимости, и я понятия не имею, что там. Есть вероятность, что вместо одного из них ставится undefined, и в базу пишется именно оно, со всеми вытекающими последствиями.
Не знаю, почему вы до сих пор не попытались отладить, хотя как это сделать, я уже сказал. Попробуйте хотя бы рядом с xmlhttp.open расположить alert("/zakaz/?item=" + itemName + "™=" + trade), чтобы посмотреть, на какой адрес в реальности уходит запрос.
Jamba7, есть тысяча и один вариант возможной причины. Отлаживайте. Например, в хроме F12, и на в кладке Network можно увидеть все запросы. Делайте запрос и смотрите, что вам возвращает ваша страница.
Саму функцию relocate() точно вызываете? В консоли ошибки есть?
Как вариант, можно вместо alert'а делать console.log(xmlhttp.responseText).
Илья Казначеев, скажу так. Когда мне наконец удалось заставить работать OpenCL на видеокарте, одновременно появилась возможность в качестве OpenCL-устройства использовать процессор (видеоядро его). При том, что у меня процессор второго поколения, а у вас четвертого. Откровенно говоря, не помню, что я и как конкретно устанавливал. Драйвера открытые или проприетарные?
Илья Казначеев, сложно сказать. Вообще, карты AMD под linux — это вечное шаманство. OpenCL у меня поднялся, кажется, на второй день однообразных действий в виде установок-переустановок. Так что за карта у вас?
Возможно, вы что-то где-то поставили не так. Насколько я помню, «could not get platforms» — это о невозможности найти хоть один поддерживающий OpenCL девайс (при отсутствии драйверов будет вроде так же). И меня смущает тот факт, что оно пытается подцепить модуль nvidia.
Станислав Кукаев, это только обработчик будет браться по index.php. А адрес фактически будет оставаться тот, по которому зашли, в $_SERVER['REQUEST_URI'] будет он лежать. Можно, например, прям содержимое этого $_SERVER['REQUEST_URI'] класть в БД в качестве ключа. То есть вместо id будет храниться адрес относительно корня.
Alex222, вы путаете незнание и отсутствие цели для непосредственного решения задачи. HTML-парсеры вам отдадут измененную структуру, в которой вы потеряете положение курсора. И придется городить уйму костылей, ибо задача слишком специфичная для них. Если требуется именно положение границ, то лучшее решение, чем банальный проход курсором (один проход), придумать будет затруднительно. В итоге у вас должна получиться реализация конечного автомата, для создания которой даже не обязательно знать, что это конечный автомат. Набор структур данных минимальный: входная строка, позиция курсора, список строк для балансировки тегов (описывал в ответе) и список символов (строка), в который будет заноситься текущий тег для его сравнения с искомым.
Хотите программировать, учитесь мыслить алгоритмически и программировать, а не исключительно готовые кубики LEGO собирать. Решение задачи я вам уже расписал. Подробнее — только готовый код.
Alex222, я же сказал, что детали реализации остаются за вами. Что бы ни использовалось, все равно придется руками делать часть работы. И либо вы меняете требования к выходным данным, подгоняя их под возможности существующих решений, либо решаете свою задачу любым возможным путем.
Хотите использовать HTMLparser — открывайте документацию и читайте, что он может. Там же и примеры есть. На основании этого делайте вывод о том, насколько он подходит для решения конкретной задачи.
Любые операции с массивами могут реализовываться с помощью циклов. Но под сотню функций для работы с массивами в PHP реализовано именно для того, чтобы пользователи пореже писали непроизводительные многократные обходы массивов для типовых задач.
Антон, вообще, лучше всего пробовать, чтоб убеждаться в утверждениях. В первом случае вы задаете метод прототипа объекта, во втором — самого объекта. Если вы обращаетесь непосредственно к методу объекта, то объект сначала ищет такой метод у себя. Если не находит, тогда уже начинает подниматься по прототипам. Пока метод определен только для прототипа, изменение этого метода затронет все объекты. Если же определен метод непосредственно объекта, то изменение этого метода в прототипе ничего не даст, нужно изменять именно метод внутри объекта. Как-то так.
therealvetalhidden, просто POST без AJAX — это из обычной формы с перезагрузкой страницы-то? Браузер при отправке содержимого формы прозрачно кодирует информацию. Пробелы заменяются на плюсы, плюсы на %2B и т.д. Запросы типа GET и POST работают практически одинаково, передаваемые данные одного типа, и ограничения на них накладываются однообразные. Данные GET-запроса передаются прямо в URL. Список символов, которые могут использоваться в URL, ограничен латинскими буквами, цифрами и некоторыми спецсимволами. Все остальные необходимо заменять escape-последовательностями, что и делает функция encodeURIComponent(). Пробел, например, заменяется плюсом. А на сервере при обработке эти последовательности аналогично расшифровываются и плюс заменяется пробелом.
А JS изначально работает с данными в чистом виде. И из форм забирает из без преобразований. Вы же необязательно будете отсылать их на сервер. И когда эти «чистые» данные посылаете AJAX'ом, на сервер уходят они не кодированными, но все равно там раскодируются при обработке и, в итоге, получается такая вот шляпа.
Asking, много вариантов есть. Можно обрабатывать исключение. Можно проверять наличие требуемого ключа перед присваиванием. А можно сделать так: dict[key] = dict.setdefault(key, 0) + number
setdefault() возвращает значение элемента словаря с первым аргументов в качестве ключа, а если такого значения нет, то сначала создает его, в качестве значения принимая второй аргумент.