Отправка нескольких значений через форму через цикл - PullRequest
1 голос
/ 01 февраля 2012

То, что я пытаюсь сделать, это отправить идентификатор и содержание обзора на страницу, где он может быть обновлен.Содержание отображается правильно.Однако всегда публикуется только последнее значение, поэтому по какой-то причине переменная перезаписывается, как я вижу, когда я проверяю вывод на следующей странице (updatereview.php).Как я могу отправить идентификатор для каждого содержимого обзора?мой код до сих пор ниже:

<?php
while($row2 = mysql_fetch_array($result2))
{
    echo"<tr>";   
    ?><td> <? echo "Comment left for ".$row2['game_name'].", ".$row2['game_platf'] ?> <br />
    <form method="post" action="updatereview.php?id=<? echo $row2['review_id']  ?>"> 
    <textarea  name= "content" class= "rev" ><? echo $row2['content'] ?></textarea></td> 
    <td><input name="Submit1" type="submit" value="Update" />||</td>  
    <? echo"</tr>";
}
echo "</table>";

Ответы [ 3 ]

0 голосов
/ 01 февраля 2012

Ну, это то, что я придумал, поместив код только в том случае, если кто-то знает о более эффективном способе. Я использовал метод Рокки, но сохранил значения в массиве в поле имени, решая проблему перезаписи. Однако я все еще думаю, что использование get будет работать вместо создания скрытого поля, но это сработало хорошо, поэтому я буду придерживаться его. : (извините за грязный отступ, стараюсь изо всех сил;))

$n = 1; 
echo "<table>";
while($row2 = mysql_fetch_array($result2))
{
    echo"<tr>";
?>
<td>
<? 
    echo "Comment left for ".$row2['game_name'].", ".$row2['game_platf'] 
?>
  <br />
  <form method="post" action="updatereview.php"> 
    <textarea  name= "content[<?php echo $n ?>]" class= "rev" >
    <? echo $row2['content'] ?> 
    </textarea> 

    <input type="hidden" name="review_id[<?php echo $n ?>]" value=<?php echo $row2['review_id'] ?> /></td>

    <td><input name="Submit1" type="submit" value="Update" />||</td> 

  </form>
  <td><a href = "deletereview.php?id=<? echo $row2['review_id'] ?>" >Delete</a></td>  
 <? echo"</tr>"; 
 $n++;    
 }
echo "</table>";

, а затем в updatereview.php:

foreach($_POST['content'] as $content) { 
    echo "$content"; // to test values
    foreach($_POST['review_id'] as $review_id) { 
        echo "$review_id";
    }
0 голосов
/ 01 февраля 2012

Вам нужно будет структурировать значения атрибутов имени таким образом, чтобы они считались массивами

<input type="hidden" name="review_id[][<?php echo $n ?>]" value=<?php echo $row2['review_id'] ?> />

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

name="review[1][review_id]"
name="review[1][content]"

тогда для следующей записи вы можете использовать другой индекс

name="review[2][review_id]"
name="review[2][content]"

Я обычно использую идентификатор строки из базы данных в качестве индекса.

0 голосов
/ 01 февраля 2012

способ, которым вы вызывали действие формы, в основном сделал метод формы get. Поместите переменную id в скрытый элемент, чтобы он мог публиковать сообщения, если вы поместите его в URL-адрес действия, вы получите только один идентификатор.

Это может быть лучше в foreach

<?php
//use alternate syntax in html pages it's much easier to keep track off
foreach(mysql_fetch_array($result2) as $row2): ?>
<tr>  
    <td> 
    <?php echo "Comment left for ".$row2['game_name'].", ".$row2['game_platf'] ?></td><br />

    <form method="post" action="updatereview.php"> 

    //add hidden input element and give it the value of the id so it will be part of the $_POST array
    <td> <input type="hidden" name="id" value="<?php echo $row2['review_id'] ?>" /></td>

    <td><textarea  name= "content" class="rev" ><?php echo $row2['content'] ?></textarea></td>

    <td><input name="Submit1" type="submit" value="Update" />||</td> 
    </form>
</tr>

<?php endforeach ?>
</table>

теперь при публикации формы идентификатор будет доступен в массиве $ _POST.

также, как это структурировано, вы получите кнопку отправки для каждой записи, переместите отправку за пределы цикла, если хотите только одну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...