2016-08-22 4 views
2

Я пытаюсь создать таблицу, в которой вы можете «Записать» элементы, заполняющие ее. В настоящее время таблица выглядит заполненной, однако, когда вы переходите к «Sign Off», элемент - он будет действовать только в последней строке mysql ['directory'], а также в последнем текстовом поле, сопровождающем его.PHP Пока цикл в таблице в форме

Когда я говорю «Выйти», я хочу вставить чьи-то инициалы в строку таблицы mysql, связанную с этим элементом. В первую очередь, я должен, конечно, правильно обработать представление POST.

Это, вероятно, совершенно не сочленено, поэтому, пожалуйста, взгляните на мой текущий код;

echo "<form action='signoff.php' method='post' id='signoffform' style='display:inline;'>"; 
echo "<p3><table id='myTable3' class='tablesorter'> 
<thead> 
<tr> 
    <th>To Delete</th> 
    <th>Directory</th> 
    <th>Space Used</th> 
</tr> 
</thead>"; 

while($row = mysqli_fetch_array($result)) 
{ 

echo "<tr>"; 
echo "<td><input type='text' name='signoff' id='signoff' form='signoffform' /><button>Sign Off</button> Signed Off By:" . $row['signoff'] . "</td>"; 
echo "<td><input type='text' name='dir' id='dir' form='signoffform' value='" . $row['directory'] . "' readonly /></td>"; 
echo "<td>" . $row['used'] . "</td>"; 
echo "</tr>"; 

} 
echo "</table></p3>"; 
echo "</form>"; 

signoff.php

<?php 
echo $_POST["signoff"]; 
echo "<br />"; 
echo $_POST["dir"]; 
?> 

Пожалуйста, не стесняйтесь Запрос дополнительной информации

+0

Если ваш код работает, вы должны отправить его на сайт Code Review. – jotadepicas

+0

Не работает должным образом. Пожалуйста, взгляните на мою рекламу, спасибо! –

+0

О, ладно, извините, я не поймал ваш вопрос. – jotadepicas

ответ

1

... когда вы идете в 'выписаться' пункта - он будет действовать только на последнюю строку mysql ['directory'], а также последнее текстовое поле, сопровождающее его.

Проблема в том, что ваши name атрибутов, name='signoff' и name=dir. Когда вы завершаете результирующий набор, значение атрибута name получает перезапись на каждой итерации. Следовательно, любая кнопка, которую вы нажимаете, всегда будет иметь значения последних строк.

Так решение будет выглядеть так:

Измени while петлю следующим образом,

// your code 

while($row = mysqli_fetch_array($result)){ 
    echo "<tr>"; 
    echo "<td><input type='text' name='signoff[".$row['directory']."]' id='signoff' form='signoffform' /><button>Sign Off</button> Signed Off By:" . $row['signoff'] . "</td>"; 
    echo "<td><input type='text' name='dir[".$row['directory']."]' id='dir' form='signoffform' value='" . $row['directory'] . "' readonly /></td>"; 
    echo "<td>" . $row['used'] . "</td>"; 
    echo "</tr>"; 
} 

// your code 

И на signoff.php страницы, обработать вашу форму следующим образом ,

foreach($_POST['dir'] as $dir){ 
    if(!empty($_POST['signoff'][$dir])){ 
     $signoff = $_POST['signoff'][$dir]; 

     // That how you can get $dir and the corresponing $signoff value 

    } 
} 

Sidenote: Если вы хотите увидеть всю структуру $_POST массива, сделать var_dump($_POST); на signoff.php страницы.

+0

Ага! Это сделано! Большое спасибо! –

+0

@ HuckleberryFinn Вы очень желанны! :-) –

Смежные вопросы