![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Если речь идет про таблицы InnoDB, то действительно, один запрос и так всегда будет выполнятся в одной транзакции, а обновление одной строки вообще можно считать атомарной операцией (не может быть обновлена только половина строки). А если про MyISAM, то тут по вообще транзакции почти не имеют смысла. Мне кажется, что автору рано еще работать с транзакциями, по этому я бы предложил убрать все запросы по работе с ними до тех пор пока не будет абсолютного понимания их работы. |
|||
|
||||
| xarakiry |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 28.5.2008 Репутация: -1 Всего: -1 |
Эт так. Лирическое отступление
--------------------
Все университеты Азербайджана на students.az |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
xarakiry, ты бы, вместо отступлений, лучше написал здесь, что у тебя получилось в итоге.
|
|||
|
||||
| xarakiry |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 28.5.2008 Репутация: -1 Всего: -1 |
Просмотрел, всё что написано... начал писать... к примеру
не подходит потому что форма multipart/form-data и помимо обычных значений загружаются и файлы, которые предварительно сохраняются и переименовываются. Кроме того если брать полный просчёт массива пост то вместе со всеми переменными также идёт и сабмит, который ясное дело не нужен в базе. Что касается транзакций, то да... я почистил функции свои убрал транзакции..для однострокового запроса они дейст-но ни к чему. единственное что более менее подошло это array_walk($_POST,'trim'); так что вопрос преобразования элементов массива в переменную остаётся... --------------------
Все университеты Азербайджана на students.az |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Das is fantastisch... То есть, для чего нужен массив $allowed, ты не понял. попробуй перечитать ответы ещё раз. И пример, который тебе дали. И перестань говорить "не подходит". замени это выражение на более корректное "я опять ничего не понял". |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Feldmarschall,
говоришь, он слушает? ну-ну -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Да, действительно. Он вообще ничего не слушает.
xarakiry. Читай, пожалуйста, внимательнее. Не путай обработку формы в цикле и составление запроса. Для обработки (trim, escape_string) цикл прекрасно подходит. Для составления запроса, действительно, просто автоматом обрабатывать пост не получится. Но тебе это никто и не предлагает. Тебе предлагают сделать массив с именами полей в базе. И по этому массиву составлять запрос. в функцию, которая составляет запрос, ты передаешь ДВА массива. свою дату, и $allowed, про который тебе писали. В самом простом варианте $allowed - это просто массив имен полей. В результате вся запись в базу сведется к двум строчкам: $allowed=array("dk_nomre","sehra_qeydi" и так далее $query="UPDATE museum_base SET ".create_set_query($_POST,$allowed); mysql_query($query); и никакая отдельная функция не будет нужна. и писать по 10 раз свои переменные тоже не нужно будет. теперь ты веришь, что с массивами и циклами удобнее? |
|||
|
||||
| xarakiry |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 28.5.2008 Репутация: -1 Всего: -1 |
Да, не внимательно прочитал... вот что у меня получилось...
крутил вот эту строку
хотел добавить в неё picture1='$picture1' ,picture2='$picture2' ,picture3='$picture3' атак же условие WHERE unical_number='$data[unical_number]' ... до 3-х провозился... --------------------
Все университеты Азербайджана на students.az |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
ты так и не понял, зачем нужны циклы.
циклы нужны для того, чтобы не писать функцию trim стописят тысяч раз! и к массиву POST обращаться тоже - только ОДИН раз! точно так же, как ты ОДИН РАЗ пишешь функцию mysql_real_escape_string. А не сто тысяч раз, как trim. и функция updatedbitems тебе тоже не нужна. а нужна универсальная функция для составления запросов. в которую передавать не массив $data, $_POST! Потому что в $_POST у тебя ледат все данные! а имена картинок можно дописать в $_POST. и в $allowed Добавлено через 5 минут и 12 секунд Fortop, еще одна трудноуловимая проблема. Он не понимает, что значит $allowed. Для нас стобой имя этой переменной не нуждается в комментариях. а ему надо объяснять, что это массив, содержащий разрешенные имена переменных. |
|||
|
||||
| xarakiry |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 28.5.2008 Репутация: -1 Всего: -1 |
Ребята ...не надо на меня злится...я щас сижу и разбираю.... я знаю я вас замучил... Я сам хочу приучится писать циклами ... --------------------
Все университеты Азербайджана на students.az |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Не надо учиться писать циклами.
Надо учиться ЧИТАТЬ. я тебе написал готовый, практически, код. показал, что должно быть в массиве $allowed показал, что в функцию надо передавать массив $_POST. который и является массивом с данными, то есть, $data и массив $allowed, в котором перечислены разрешенные поля. и перебирая в цикле $allowed, подставлять соответствующие данные из $_POST в строку запроса, попутно обрабатывая их. я тебе 5 раз написал, что функция updatedbitems не нужна. но она у тебя все равно на первом месте. читать тебе нужно учиться. читать. твоя проблема не в том, что ты вопросы задаешь, а в том, что ответы не читаешь |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
xarakiry,
Да, я виноват, как всегда все меряю по себе, забывая что все люди разные. Хотя предложенный мной способ большинству ни разу не очевиден. Давай все-таки по шагам, как предлагал Feldmarschall вначале. 1. У тебя есть данные из $_POST 2. тебе нужно каждый элемент обработать trim и другими функциями. Ты можешь это сделать в цикле? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| xarakiry |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 28.5.2008 Репутация: -1 Всего: -1 |
Прошу прощения что долго не отвечал...просто работой завалили....
Да... могу конструкцией foreach ($_POST as $key => $value){ $value=trim($value); } --------------------
Все университеты Азербайджана на students.az |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
я думаю автор просил что-то вроде функции serialize и unserialize...
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
xarakiry, посмотрите вот на эту функцию array_keys( ) она возвращает массив, содержащий все ключи исходного массива, переданного в качестве параметра.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |