Получение имени элемента ввода из массива $ _POST, когда имя элемента неизвестно - PullRequest
1 голос
/ 17 ноября 2011

У меня есть PHP-файл, который включает в себя другой файл, который используется для создания таблицы, циклически повторяя результат запроса MySQL, а затем возвращая все переменные HTML и PHP в виде строки. Эта строка отображается в теге div.

Функция PHP, которая создает таблицу, также создает элементы ввода с уникальными именами и идентификаторами из имен строк / столбцов, в которых она находится. Это означает, что каждый элемент управления уникален, и я не знаю, какой будет использоваться для отправки данных , Это было сделано, чтобы я мог использовать встроенное редактирование через JavaScript Таким образом, пользователю нужно только щелкнуть элемент в таблице на странице, и отображаются скрытые элементы управления вводом.

При нажатии отправьте форму сообщения. Чтобы узнать, куда должны поступать данные в базе данных и как сгенерировать строку SQL для обновления, мне нужно взять имя текстового поля, которое было опубликовано. Массив post будет содержать только два элемента: кнопку отправки и текстовое поле. Как мне разобрать это имя?

В настоящее время я проверяю, установлена ​​ли кнопка отправки со следующим кодом:

if(isset($_POST['submit'])) 
{
  //do stuff here
  $sql= update TABLENAME set ...

  $results = $dbConnect->prepare($sql);
}

и т.д..

образец $_POST содержимое массива:

Array ( [submit] => submit [newText_primaryKey_columnName] => User Input Text )

Ответы [ 3 ]

0 голосов
/ 18 ноября 2011

Если вы начнете все свои Cell Id со стандартного имени, такого как ячейка, его очень легко вытащить.

//Assuming CellID's Like cell_1, cell_2, cell_3 etc

foreach ($_POST as $Key => $Value)  //Check all posted values
{
    if (strpos('cell',$Key) !== false ) //if cell is at the begining of the key name
    {
        $OurKey = $Key; 
            //This will put cell into $temp and our id will be put in $CellID
        list($temp,$CellID) = implode('_', $OurKey);
        break;
    }

}

//Do Something With Our ID
SubmitData($CellID, $Value);

Надеюсь, это то, что вы ищете.

Одна из разновидностей связанных заметок: библиотеки javascript, такие как YUI или jquery , могут быть полезны для сокращения необходимого количества встроенных форм. Стоит посмотреть.

0 голосов
/ 18 ноября 2011

Если ваш массив $_POST выглядит так:

Array ( [submit] => submit [newText_primaryKey_columnName] => User Input Text )

Затем вы можете найти ключ, который не является вводом ввода:

$my_key = '';
if (!empty($_POST)) {
    foreach ($_POST as $key => $val) {
        if ($key != 'submit') {
            $my_key = $key;
        }
    }
}

//you can now access the value of your text input using $_POST[$my_key]
//you can also determine what to do with your information

$tmp = explode("_", $my_key);//$tmp[0] = "newText"; $tmp[1] = "primaryKey"; $tmp[2] = "columnName";
0 голосов
/ 17 ноября 2011

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

$post = $_POST;
unset($post['submit']);
$keys = array_keys($post);
$key = $keys[0];

Полный пример:

<?php
//$post = $_POST;
$post = array('submit' => True, 'some key I made up' => 'foobar');
unset($post['submit']);
$keys = array_keys($post);
$key = $keys[0];

print $key;
// some key I made up
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...