Цитата:
Вот допустим в $post поместились такие поля: Код:
Array ( [sat] => Terra [device] => MODIS ) |
Ага, вот теперь вспомнил о чем речь была, тогда информация к размышлению:
- Истинный ариец, связей порочащих не имеет, ... ) Цитата:
Вспоминайте, что выделали, методично if($_POST[station] == "empty") ..., то есть фактически устанавливая значения по умолчанию. А делать надо было так: удалили сразу у всех значений массива пробелы крайние, после чего удалили те поля, что стали пустыми. Осталось заменить в определенном массиве хранящем значения по умолчанию, значениями пришедшими из формы (читать о функции array_replace()). Как это делается я показывал. После этого есть подготовленный массив полученных от формы данных, не заполненные поля которой будут заменены значениями по умолчанию. Правда необработанный с точки зрения безопасности, но это опускаем. Осталось разобраться с ключами. Стоит заметить, о чем не сказал ранее, что вот так указывать имя ключа $_POST[station] нельзя, хотя РНР и не сообщит ни о чем, и выполнит. Строковые значения должны заключаться в кавычки, если их нет, значит это константа. Прежде чем выполнить условие $_POST[station], РНР будет искать среди объявленных констант константу station, а не найдя ее, примет это как строковое значение. То есть допущенную вами ошибку он исправит сам. Но если в понедельник 32 числа разработчики зарезервируют это имя в РНР, то выполнение вашего кода будет уже не предсказуемо. PHP такое написание будет воспринимать как строковое значение в случаях, если эта переменная указана в строке с двойными кавычками. Если ключи массива также являются параметрами запроса, то их необходимо проверять и экранировать также как и значения ключей. Цитата:
После обработки пришедших данных как говорилось ранее составить запрос, например для записи, это: $sql = 'INSERT INTO table (`prefix_' . implode('`, `prefix_', array_keys($post)) . '`) VALUES ("' . implode('", "', $post) . '")'; //получим, для примера - INSERT INTO table (`prefix_field_1`, `prefix_field_2`, `prefix_field_3`) VALUES ("text1", "text2", "text3") Можно давать полям формы одно и тоже имя как ключа индексного массива, явно указывая индекс каждого поля. Можно вообще в качестве этого имени иметь хеш, который действителен только на время сеанса обработки формы. Главное здесь индексы, которые соответствуют порядку полей в SQL таблице. Получив индексный массив формы, отсортировав его по индексу, и получив имена полей таблицы, можно пересечением этих массивов сопоставить поля формы с полями таблицы. В общем решений гораздо больше, чем зная что обозвали поле "male", получив его, обращаемся к SQL полю "female". Как видите во многом можно работать с полями и анонимно. |
laimas,
Спасибо за пояснение! А вот такой случай: Поиск по дате и времени лежит в каком-то диапазоне, но может быть случай когда в базе данных появилась запись о снимке, но ещё не заполнены эти поля, как можно сделать, если пользователь не выбирал дату, вошли и эти значения? У меня получается так, что они не попадают в поиск по умолчанию. |
Никак. Если объект можно идентифицировать по характеристике, но он ее не имеет, то понятно, что определить будет не возможно.
Наверное нужно исключать такие ситуации и характеристика идентификатор должна быть обязательным значением при записи. |
Часовой пояс GMT +3, время: 13:24. |