Если я правильно понимаю, ваш while () l oop должен прерваться, если вы встретите действительный $ POST ["submit $ num"]?
$ num не увеличивается в пределах while () l oop: его значение остается равным -1,! isset () остается действительным, и поэтому у вас есть бесконечный l oop
Я предлагаю переписать вашу таблицу как
echo "... <input type='submit' name 'btnSubmit' value='$num'> ..." ;
Затем вы можете напрямую запросить $ _POST ['btnSubmit'], без необходимости указывать бесконечное l oop.
По вашему вопросу о полях $ _POST против полей ввода: нет, вам нужно хотя бы скрытое поле ввода, чтобы оно отображалось в $ _POST []
edit : попробуйте этот пример кода в http://phpfiddle.org/:
<html>
<head>
</head>
<body>
<?php
if ( isset($_POST['btnSubmit']) )
{
echo "<P>In previous run, submitted value " . $_POST[ 'entry' . $_POST['btnSubmit'] ] . "</P> \r\n" ;
}
else
echo "<P>No submit in previous run ...</P> \r\n" ;
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<input type=text name="entry1" value="123">
<input type=submit name="btnSubmit" value="1"><br/>
<input type=text name="entry2" value="456">
<input type=submit name="btnSubmit" value="2">
</form>
</body>
</html>
Вы можете отредактировать оба текстовых поля, затем нажать 1 кнопку отправки: скрипт отобразит соответствующее обновленное значение
edit 2 :
<html>
<head>
<script>
function mySubmit(submitValue)
{
try
{
// store selected submit value in hidden INPUT
document.getElementById('submitID').value = submitValue ;
// manually submit the form
document.getElementById('formID').submit() ;
}
catch(err)
{
alert(err.message) ;
}
}
</script>
</head>
<body>
<?php
if ( isset($_POST['btnSubmit']) )
echo "<P>In previous run, you submitted value " . $_POST[ 'entry' . $_POST['btnSubmit'] ] . "</P> \r\n" ;
else
echo "<P>No submit in previous run ...</P> \r\n" ;
?>
<form id='formID' name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<input type=text name="entry1" value="123">
<button onClick="mySubmit(1);">Submit me !</button><br/>
<input type=text name="entry2" value="456">
<button onClick="mySubmit(2);">Submit me !</button><br/>
<input type=hidden id='submitID' name='btnSubmit'>
</form>
</body>
</html>
Теперь, это быстрый и грязный метод - поэтому, в зависимости от вашего полного случая, вы можете рассмотреть возможность установки AJAX call