HTML список кнопок в PHP "For Loop" не работает


Мне кажется, что у меня очень простая проблема, но я не могу обернуть свою голову вокруг этой проблемы. Заранее благодарю за любую помощь, которую вы можете оказать.

Во-первых, вот описание кода: Следующий фрагмент кода взят со страницы действий пользователя. Этот фрагмент отображает все ставки, которые были размещены на "холсте" пользователя."

<table  width="400" align=center frame=below>

    <ul>
    <?php for ($j = 0 ; $j < $numBids ; ++$j) { $cbid= mysql_fetch_row($bids); ?>   
     <li><strong>$<?php echo "$cbid[2]"; ?>.00 </strong> by <a href="profile.html?view=<?php echo "$cbid[4]"; ?>"><?php $name=getUser($cbid[4]); echo "$name"; ?></a>
     <br/>"<?php echo "$cbid[3]"; ?>"<br/>

     <p align=CENTER>

     <!-- Message Artist-->
     <form method="post" action="messages.html?msg=<?php echo $cbid[4]; ?>" >    
    <input type="submit" name="message" value="Message Artist" > 
    </form>

    <!-- Accept Bid-->
     <form method="post" action="contract.html?bid=<?php echo "$cbid[0]"; ?>" class="login-form">                       
    <input type="submit" value="ACCEPT BID!" > 
    </form>

    </p>

     </li>                                  
    <?php   } ?>                                    
   </ul>

Если $numBids = 3, то HTML-вывод этого кода выглядит следующим образом:

    <ul>

     <li><strong>$150.00 </strong> by <a href="profile.html?view=169&sid=d0ba8340cdb156c233baf364960ac3e9">Artist Name</a>
     <br/>"I would like to paint this in acrylic."<br/>

     <p align=CENTER>
     <!-- Message Artist-->
     <form method="post" action="messages.html?msg=151" ><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />    
    <input type="submit" name="message" value="Message Artist" > 
    </form>
    <!-- Accept Bid-->
     <form method="post" action="contract.html?bid=76" class="login-form"><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />                       
    <input type="submit" value="ACCEPT BID!" > 
    </form>
    </p>

     </li>                                  

     <li><strong>$150.00 </strong> by <a href="profile.html?view=169&sid=d0ba8340cdb156c233baf364960ac3e9">Artist Name</a>
     <br/>"I would like to paint this in acrylic."<br/>

     <p align=CENTER>
     <!-- Message Artist-->
     <form method="post" action="messages.html?msg=151" ><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />    
    <input type="submit" name="message" value="Message Artist" > 
    </form>
    <!-- Accept Bid-->
     <form method="post" action="contract.html?bid=72" class="login-form"><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />                       
    <input type="submit" value="ACCEPT BID!" > 
    </form>
    </p>

     </li>                                  

     <li><strong>$150.00 </strong> by <a href="profile.html?view=169&sid=d0ba8340cdb156c233baf364960ac3e9">Artist Name</a>
     <br/>"I would like to paint this in acrylic."<br/>

     <p align=CENTER>
     <!-- Message Artist-->
     <form method="post" action="messages.html?msg=169" ><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />    
    <input type="submit" name="message" value="Message Artist" > 
    </form>
    <!-- Accept Bid-->
     <form method="post" action="contract.html?bid=70" class="login-form"><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />                       
    <input type="submit" value="ACCEPT BID!" > 
    </form>
    </p>

     </li>                                  

   </ul>

Живая тестовая версия страница была настроена: http://www.canvasmatch.com/test/activity.html .


Теперь к проблеме:

Если пользователь нажимает кнопку "исполнитель сообщения", то он переходит на страницу сообщений, где, очевидно, может отправить сообщение исполнителю. Эта кнопка работает для всех ставок, кроме первой. Если вы нажмете первую кнопку "исполнитель сообщений", она просто обновит страницу, неправильно. Однако, если вы нажмете на вторую кнопку "исполнитель сообщения", это будет перейти к сообщениям.html соответственно. Если бы было, скажем, 6 ставок, все кнопки" исполнитель сообщений " работали бы, кроме первой.

Самое странное для меня, что все кнопки" Принять ставку " работают, даже первая.

Кто-нибудь испытывал нечто подобное раньше? Есть мысли о том, что мне следует искать? Вам нужен весь html-файл, чтобы найти проблему? Я ценю любую помощь, которую вы можете оказать!

Спасибо,

Джейк

4 2

4 ответа:

В принципе, когда вы проверяете элемент с помощью Firebug, вы увидите, что он не инкапсулирован в форму. Что-то странное происходит, потому что HTML на самом деле выглядит нормально для этого конкретного элемента. Остальная часть документа полна ошибок, поэтому, хотя я не могу определить ее напрямую, я бы рекомендовал сначала, по крайней мере, исправить большинство ошибок, которые можно найти, выполнив валидационный тест W3C. Я могу почти гарантировать, что это сработает, как только они будут исправлено.

Http://validator.w3.org/check?uri=http%3A%2F%2Fwww.canvasmatch.com%2Ftest%2Factivity.html

Похоже, вам нужны кавычки вокруг $cbid[4]

Текущий:

<form method="post" action="messages.html?msg=<?php echo $cbid[4]; ?>" >

Изменить на

<form method="post" action="messages.html?msg=<?php echo "$cbid[4]"; ?>" >

Если $numBids = 3, то HTML-вывод этого кода выглядит следующим образом:

Вы устанавливаете $numBids на 3 каждую итерацию? Если это сравнение, то оно должно быть $numBids == 3, но оно немного двусмысленно, потому что фрагмент не находится в блоке кода.

Проблема заключается в приращении для $j. оператор for должен выглядеть следующим образом:

for ($j = 0 ; $j < $numBids ; $j++)

++$j сначала увеличивает, а затем делает цикл, так что вместо первого раза 0, он заканчивается 1. Цитаты вокруг переменной в php-скрипте не нужны.

У меня есть вопрос, почему вы используете цикл for вместо цикла while со счетчиком, определенным перед циклом и инкрементом в конце?

EDIT

Только что вспомнил, что у меня была проблема с галереей, в которой я был использование форм на и первый из них не работал. Чтобы исправить это, я должен был добавить случайное имя строки к каждому из них. Попробуйте добавить имя к каждому тегу формы со случайно сгенерированной строкой или числом.

Пример:

 <form method="post" action="messages.html?msg=151" class="login-form" name="fEd5t89">

Редактирование-Работа

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