Member 13637584 Ответов: 1

Как я могу получить идентификатор, когда кнопка выбрана?


Привет У меня есть много предметов, которые отображаются. Он находится в цикле while,в котором отображается имя, инструкции и т. д., а также кнопка

Таким образом, каждый предмет имеет свое собственное изображение,инструкции и т. д.

Мне интересно, как я могу получить идентификатор того элемента, для которого была выбрана кнопка?

(см. код ниже)

В принципе, я хочу получить идентификатор этого рецепта и вставить его в базу данных

Что я уже пробовал:

   while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) 
        {
            echo "".$dbRow["Name"].""."<br><img src=\".$dbRow['Picture']."' width='150' height='150' />"."".$dbRow["Instructions"]."<form method='POST'><input type='submit' name='submit' value='Complete' class='button-recipe'>";
echo  "<br><br><h4>".$dbRow["RecipeID"].""; // i put this in even though i dont want it to be displayed, but I'm not sure how else i can get the ID?
			}
    } else {
        echo ""; //output nothing

1 Ответов

Рейтинг:
1

Jochen Arndt

Вы можете использовать имена массивов для кнопок, используя квадратные скобки. Они будут автоматически сохранены в массиве PHP:

echo "<input type='submit' name='RowBtn[" . $dbRow['RecipeID'] . "]' value='Complete' class='button-recipe'>";

Затем выполните цикл через массив при обработке данных формы:
// Get the RowBtn[] array
$rowBtn = $_POST['RowBtn']; 
// EDIT: Must use key => value here
//foreach ($rowBtn as $item)
foreach ($rowBtn as $item => $value)
{
    // Extract the ID from $item here which is the name of the activated button
}

В случае нескольких кнопок отправки массив будет иметь только одну запись или вообще не будет иметь никакой записи. Таким образом, вы также можете проверить размер и получить доступ к первому элементу:
// Get the RowBtn[] array
$rowBtn = $_POST['RowBtn']; 
if (count($rowBtn)) 
{
    $item = $rowBtn[0];
    // Extract the ID from $item here which is the name of the activated button
}


Member 13637584

Привет, если я установлю имя, как вы указали - я не могу выполнять другие функции, так как при отправке этой кнопки для нее есть более одной функции. Я хотел сделать с ним другие функции,поэтому, если имя задано так, то я не могу? Есть ли другой способ обойти это?

Jochen Arndt

В чем же проблема?
При использовании разных имен для разных кнопок просто проверьте, какие имена присутствуют в массиве $_POST. Вы должны были сделать это в любом случае, чтобы знать, какая кнопка была нажата.

Member 13637584

это возвращает ценность как "полная"? не идентификатор рецепта.

Jochen Arndt

Ой.
Я обновлю свой ответ.

Member 13637584

Что должно быть там внутри идентификатора извлечения//?

Jochen Arndt

Какой текст содержит $item?
Это должно быть полное имя кнопки "RowBtn[ID]" (на самом деле я не могу ее проверить).
Затем вы должны вставить код, который извлекает часть идентификатора из имени.