Добрый день, вот какая-то надеюсь простая фигня, но решения не могу найти. Форма, где выбирается группа и альбомы, которые она создала с разными данными. Цель - могу корректоровать поля (рейтинг, например), удалить альбом, добавить новыйю Данныу в MySQL. При нажатии кнопки submit HTML: <input type="submit" class="span_b" name = "edit" value="UPDATE" <input type="hidden" name="formobject" value="<?=$al['id']?>" все работае,НО, всегда передается значение из последней строки (посл. альбом.) Ну, понятно, отправляетс все, а не только данные сточки, в которой нажата кнопка, так как "name" у всех строчек edit, то переписывает и коррегирутся всегда последняя. Как сделать, чтобы отправлялся только ID альбома, который корректируетя? Попробовал с Javascript, который почти не знаю - вооще не хочет отправлять данные. Вот что стоит в браузере. HTML: <td colspan="4" align="center"> <input type="submit" class="span_b" name="del" value="DELETE" /> <!--<input type="button" value="DELETE" onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del'; document.form2.formobject.value='336'; document.form2.submit();" />--> </td> <td colspan="4" align="center"> <input type="button" value="UPDATE" onClick="document.form2.formaction.value='edit'; document.form2.formobject.value='336'; document.form2.submit();" /> <!--<input type="submit" class="span_b" name = "edit" value="UPDATE" /> <input type="hidden" name="formobject" value="336" />--> </td> </tr> <tr> <td><input type="text" required="required" name="data[id_band]" value="125"></td> <td><input type="text" required="required" name="data[name]" value="AAAAAAAAAAA3"></td> <td><input type="text" required="required" name="data[year]" value="1967"></td> <td><input type="text" required="required" name="data[music_kind]" value= "Hardrock"></td> <td><input type="text" name="data[music_kind_2]" value= "Blues"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[main_rating]" value="1.0"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[rating_art]" value="8.0"></td> <td><input type="text" name="data[concept]" value= "no"></td> <td><textarea name="data[comment]" placeholder=""></textarea></td> </tr> <tr > <td colspan="4" align="center"> <input type="submit" class="span_b" name="del" value="DELETE" /> <!--<input type="button" value="DELETE" onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del'; document.form2.formobject.value='337'; document.form2.submit();" />--> </td> <td colspan="4" align="center"> <input type="button" value="UPDATE" onClick="document.form2.formaction.value='edit'; document.form2.formobject.value='337'; document.form2.submit();" /> <!--<input type="submit" class="span_b" name = "edit" value="UPDATE" /> <input type="hidden" name="formobject" value="337" />--> </td> Заранее спасибо.
у тебя случайно не value='337' этот пост редактируеться все время? Именно так. Видимо плохо обьяснил. Сначала делается запрос (user выбирает, например Beatles), затем из БД выбираются и в виде таблицы представляются все альбомы, скажем 15. Одна строчка на альбом и под ней строчка для данного альбома с двумя кнопками DELETE, UPDATE. В примере value='337' стоит на самой последней строчке. И при нажатии кнопки "input" , без разницы, на какой строчке - отправляются данные из последней строки. Строчка HTML: <input type="submit"class="span_b"name="edit"value="UPDATE" повторяется 15 раз, если из БД выбрано 15 альбомов. PHP: function table_album_update($rs,$bname ) { $formaction = ''; echo "<br_/>";## echo_r($rs); ?> <form name="form2" action="<?=$_SERVER["PHP_SELF"]?>" method="POST" > <table border="3" cellpadding="3" cellspacing="1" bgcolor="#FFCC66"> <!--width="600px"--> <tr><td> <?=$bname?></td></tr> <tr bgcolor="#00CC99"> <th>ID_BAND </th> <th>NAME </th> <th>YEAR </th> <th>MUSIC_KIND</th> <th>MUSIC_KIND2</th> <th>Rating </th> <th>Rating_ART </th> <th>Concept </th> <th>COMMENT </th> </tr> <?php foreach ($rs as $al) { ?> <tr> <td><input type="text" required="required" name="data[id_band]" value="<?=$al['id_band']?>"></td> <td><input type="text" required="required" name="data[name]" value="<?=$al['name']?>"></td> <td><input type="text" required="required" name="data[year]" value="<?=$al['year']?>"></td> <td><input type="text" required="required" name="data[music_kind]" value= "<?=$al['music_kind']?>"></td> <td><input type="text" name="data[music_kind_2]" value= "<?=$al['music_kind_2']?>"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[main_rating]" value="<?=$al['main_rating']?>"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[rating_art]" value="<?=$al['rating_art']?>"></td> <td><input type="text" name="data[concept]" value= "<?=$al['concept']?>"></td> <td><textarea name="data[comment]" placeholder="<?=$al['comment']?>"></textarea></td> </tr> <tr > <td colspan="4" align="center"> <input type="submit" class="span_b" name="del" value="DELETE" /> <!--<input type="button" value="DELETE" onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del'; document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />--> </td> <td colspan="4" align="center"> <!--<input type="button" value="UPDATE" onClick="document.form2.formaction.value='edit'; document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />--> <input type="submit" class="span_b" name = "edit" value="UPDATE" /> <input type="hidden" name="formobject" value="<?=$al['id']?>" /> </td> </tr> <?php } ?> </table> </form> <br /><br /> <?php }
еще я заметил что ты в форме вместо ID="" или Class="" указываешь name="" а потом этот name передаешь в js обработку, мне так кажется что js не догадывается что ему взять с какой формы, так как тип данных указан не верно. Спойлер: код, смореть тут PHP: function table_album_update( $rs,$bname ) { $formaction = ''; echo "<br/>"; # echo_r($rs); ?> <form id="form2" action="<?=$_SERVER["PHP_SELF"]?>" method="POST"> <table border="3" cellpadding="3" cellspacing="1" bgcolor="#FFCC66"> <!--width="600px"--> <tr><td> <?=$bname?></td></tr> <tr bgcolor="#00CC99"> <th>ID_BAND </th> <th>NAME </th> <th>YEAR </th> <th>MUSIC_KIND</th> <th>MUSIC_KIND2</th> <th>Rating </th> <th>Rating_ART </th> <th>Concept </th> <th>COMMENT </th> </tr> <?php foreach ($rs as $al): ?> <tr> <td><input type="text" required="required" name="data[id_band]" value="<?=$al['id_band']?>"></td> <td><input type="text" required="required" name="data[name]" value="<?=$al['name']?>"></td> <td><input type="text" required="required" name="data[year]" value="<?=$al['year']?>"></td> <td><input type="text" required="required" name="data[music_kind]" value= "<?=$al['music_kind']?>"></td> <td><input type="text" name="data[music_kind_2]" value= "<?=$al['music_kind_2']?>"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[main_rating]" value="<?=$al['main_rating']?>"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[rating_art]" value="<?=$al['rating_art']?>"></td> <td><input type="text" name="data[concept]" value= "<?=$al['concept']?>"></td> <td><textarea name="data[comment]" placeholder="<?=$al['comment']?>"></textarea></td> </tr> <tr > <td colspan="4" align="center"> <input type="submit" class="span_b" name="del" value="DELETE" /> <!--<input type="button" value="DELETE" onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del'; document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />--> </td> <td colspan="4" align="center"> <!-- <input type="button" value="UPDATE" onClick="document.form2.formaction.value='edit'; document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" /> --> <input type="submit" class="span_b" name = "edit" value="UPDATE" /> <input type="hidden" name="formobject" value="<?=$al['id']?>" /> </td> </tr> <?php endforeach ?> </table> </form> <br/><br/> <?php } попробуй так, если не получися нужно на месте смотреть удаленно подключатся к тебе, ибо объясняешь ты не очень. Допусим я не знаю что такое: Beatles Вот допустим еще вот так: PHP: <input type="hidden" name="formobject" value="<?=$al['id']?>" /> можно делать но не желательно, ибо это все можно изменять, через браузер, эту строку нужно сохранять в сессию и там уже передавать правильно. По поводу повторений 15 раз, это же логично у тебя стоит цикл. а так по логике вроде форма оформленна правильно и таблица тоже.
Ну, во-первых спасибо. 2. ОК, no Beatles, let us Rolling Stones. 3. Почему скрипт передает последнюю строчку - понятно: при нажатии HTML: <input type="submit" class="span_b" name = "edit" value="UPDATE" /> передаются все поля в форме, которые предназначены для передачи. Если передается "имя" - "значение" ( id = 25), все хорошо. Если в форме еще раз встречается и соответсвенно передается (id = 34)_ то PHP получит ОДИН раз id с последним значением. Как это обойти я и не понимаю. По идее отправка с помощью js должна решать проблему, но почему-то не реагирует никак кнопка через js. Пока в голове пусто, пошел спать. Твой вариант с ID то же самое, никакой реакции: PHP: function table_album_update($rs,$bname ) { $formaction = ''; ?> <form id="F2" action="<?=$_SERVER["PHP_SELF"]?>" method="POST" > <table border="3" cellpadding="3" cellspacing="1" bgcolor="#FFCC66"> <!--width="600px"--> <tr><td> <?=$bname?></td></tr> <tr bgcolor="#00CC99"> <th>ID_BAND </th> <th>NAME </th> <th>YEAR </th> <th>MUSIC_KIND</th> <th>MUSIC_KIND2</th> <th>Rating </th> <th>Rating_ART </th> <th>Concept </th> <th>COMMENT </th> </tr> <?php foreach ($rs as $al) { ?> <tr> <td><input type="text" required="required" name="data[id_band]" value="<?=$al['id_band']?>"></td> <td><input type="text" required="required" name="data[name]" value="<?=$al['name']?>"></td> <td><input type="text" required="required" name="data[year]" value="<?=$al['year']?>"></td> <td><input type="text" required="required" name="data[music_kind]" value= "<?=$al['music_kind']?>"></td> <td><input type="text" name="data[music_kind_2]" value= "<?=$al['music_kind_2']?>"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[main_rating]" value="<?=$al['main_rating']?>"></td> <td><input type="number" required="required" type="number" max="10" min="1" name="data[rating_art]" value="<?=$al['rating_art']?>"></td> <td><input type="text" name="data[concept]" value= "<?=$al['concept']?>"></td> <td><textarea name="data[comment]" placeholder="<?=$al['comment']?>"></textarea></td> </tr> <tr > <td colspan="4" align="center"> <input type="submit" class="span_b" name="del" value="DELETE" /> <!--<input type="button" value="DELETE" onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del'; document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />--> </td> <td colspan="4" align="center"> <input type="button" value="UPDATE" onClick="document.getElementById('F2').formaction.value='edit'; document.getElementById('F2').formobject.value='<?=$al['id']?>'; document.getElementById('F2').submit();" /> <!--<input type="submit" class="span_b" name = "edit" value="UPDATE" /> <input type="hidden" name="formobject" value="<?=$al['id']?>" />--> </td> </tr> <?php } ##endforeach ?> </table> </form> <br /><br /> <?php }
конечно не срабатывает потому что ты уже изменил id="F2" в форме на свое название, а при обработке js ты используешь form2 а должен использовать form2 может кто и сможет другой помочь.
К сожалению дело не в этом: я не изменил для DELETE, а для UPDATE изменил, с ним и игрался. Там стоит HTML: [LIST=1] [*]<input type="button" value="UPDATE" [*] onClick="document.getElementById('F2').formaction.value='edit'; [*] document.getElementById('F2').formobject.value='<?=$al['id']?>'; document.getElementById('F2').submit();" /> [/LIST]
Хмм.... Вверху показывает ошибку, если я правильно думаю, что красная звездочка и т.д. - ошибка. Но где - не понимаю, может кто надоумит ?
HTML: <input type="button" value="UPDATE" onClick="document.getElementById('F2').formaction.value='edit'; document.getElementById('F2').formobject.value='<?=$id_a?>'; document.getElementById('F2').submit();" /> --- Добавлено --- Так тоже ошибку вроде дает ???