2017-01-19 3 views
1

Я искал решение этой проблемы, ближе всего я пришел this answer, однако он не дает достаточного объяснения.PHP Получить значение имени из кнопки отправки

Следующая кнопка содержит BOTH имя турнира и номер турнира.

<input type="submit" name="<?php echo $tournament.$weekNumber ?>" />

Турниры могут VARY т.е. иметь различные названия & круглые числа. Когда кнопка нажата и отправлена ​​форма, как вы получите имя турнира и круглый номер, содержащийся в названии кнопки?

Я попытался

foreach($_POST as $name => $content) { //echo "The TOURNAMENT NAME IS: $name <br>"; $tournament = $name; }

Проблема ... это дает мне круглое число и название турнира каскадного ....

я мог бы использовать substr() отделить турнир и раунд, но он не будет работать, поскольку имена турниров и круглые номера могут варьироваться ...

Мне нужно ОБА турнир nt и номер недели, который объединен в имени кнопок name="<?php echo $tournament.$weekNumber ?>"

+0

try name = "". затем взорваться с помощью *. –

+0

Вы можете использовать '[]' для отправки массива. Это может быть намного легче обрабатывать, чем разделение строки. Например. '' приведет к чему-то вроде '$ _POST ['t1'] [17] == 'foo''. – Yoshi

ответ

2

Попробуйте это: Раздельные имя с asymbol, а затем разделить.

<input type="submit" name="<?php echo $tournament.'_'.$weekNumber ?>" /> 

foreach($_POST as $name => $content) { 
     //echo "The TOURNAMENT NAME IS: $name <br>"; 
     list($tournament, $round) = explode('_', $name); 
    } 
+0

ЭТО РАБОТАЕТ БОЛЬШОЙ. Единственная проблема, которую раунд остается связанным с названием турнира, но круглые дисплеи отлично. Пример '$ tournament = PremeirLeague_5'' $ round = 5' Как я могу избавиться от этого' _5', связанного с именем турнира ...? спасибо – gekkogurru

+0

Неправильно понял, просто используйте функцию 'explode()' – gekkogurru

2

При объединении обеих переменных вы можете добавить уникальную строку, которую вы можете использовать для разделения.

Например

<input type="submit" name="<?php echo $tournament.'|-|'.$weekNumber ?>" /> 

В коде PHP, вы можете сделать это:

foreach($_POST as $name => $content) { 
    //echo "The TOURNAMENT NAME IS: $name <br>"; 
    list ($tournament, $weekNumber) = explode('|-|', $name); 
} 
+0

Большое спасибо, сейчас реализуем и обеспечиваем обратную связь – gekkogurru

1

Почему бы не сделать это:

<input type="submit" name="tournament[<?php echo $tournament ?>][<?php $weekNumber ?>]" /> 

, а затем

if (isset($_POST["tournament"]) { 
foreach ($_POST["tournament"] as $tournament => $weeks) { 
     foreach ($weeks as $round=> $value) { 
      //Do stuff 
     } 
} 
1

почему вы не используете скрытое значение.

<input type="hidden" name="tournament" value="<?php echo $tournament ?>" /> 
<input type="hidden" name="weekNumber " value="<?php echo $weekNumber ?>" /> 

<input type="submit" name="<?php echo $tournament.$weekNumber ?>" /> 

Теперь вы можете получить оба значения.