За последние 24 часа нас посетили 20209 программистов и 1079 роботов. Сейчас ищут 782 программиста ...

Обработка формы и Beatles

Тема в разделе "PHP для новичков", создана пользователем Vladchucha, 22 янв 2019.

  1. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Добрый день, вот какая-то надеюсь простая фигня, но решения не могу найти.
    Форма, где выбирается группа и альбомы, которые она создала с разными данными.
    Цель - могу корректоровать поля (рейтинг, например), удалить альбом, добавить новыйю
    Данныу в MySQL. При нажатии кнопки submit
    HTML:
    1. <input type="submit" class="span_b" name = "edit" value="UPDATE"
    2. <input type="hidden" name="formobject" value="<?=$al['id']?>"
    все работае,НО, всегда передается значение из последней строки (посл. альбом.)
    Ну, понятно, отправляетс все, а не только данные сточки, в которой нажата кнопка,
    так как "name" у всех строчек edit, то переписывает и коррегирутся всегда последняя.
    Как сделать, чтобы отправлялся только ID альбома, который корректируетя?
    Попробовал с Javascript, который почти не знаю - вооще не хочет отправлять данные.
    Вот что стоит в браузере.
    HTML:
    1.  
    2. <td colspan="4" align="center">
    3.         <input  type="submit" class="span_b"  name="del" value="DELETE" />
    4.         <!--<input type="button" value="DELETE"
    5.                onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del';
    6.                 document.form2.formobject.value='336'; document.form2.submit();" />-->
    7.        </td>
    8.         <td colspan="4" align="center">
    9.           <input type="button" value="UPDATE"
    10.                 onClick="document.form2.formaction.value='edit';
    11.                  document.form2.formobject.value='336'; document.form2.submit();" />
    12.          <!--<input type="submit" class="span_b" name = "edit" value="UPDATE" />
    13.         <input type="hidden" name="formobject" value="336" />-->
    14.        </td>
    15.     </tr>
    16.       <tr>
    17.         <td><input type="text" required="required" name="data[id_band]" value="125"></td>
    18.         <td><input type="text" required="required" name="data[name]" value="AAAAAAAAAAA3"></td>
    19.         <td><input type="text"  required="required" name="data[year]" value="1967"></td>
    20.         <td><input type="text" required="required" name="data[music_kind]" value= "Hardrock"></td>
    21.         <td><input type="text" name="data[music_kind_2]" value= "Blues"></td>
    22.         <td><input type="number" required="required" type="number"  max="10" min="1" name="data[main_rating]" value="1.0"></td>
    23.          <td><input type="number" required="required" type="number"  max="10" min="1" name="data[rating_art]" value="8.0"></td>
    24.         <td><input type="text" name="data[concept]" value= "no"></td>
    25.         <td><textarea name="data[comment]" placeholder=""></textarea></td>
    26.       </tr>
    27.       <tr >
    28.        <td colspan="4" align="center">
    29.         <input  type="submit" class="span_b"  name="del" value="DELETE" />
    30.         <!--<input type="button" value="DELETE"
    31.                onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del';
    32.                 document.form2.formobject.value='337'; document.form2.submit();" />-->
    33.        </td>
    34.         <td colspan="4" align="center">
    35.           <input type="button" value="UPDATE"
    36.                 onClick="document.form2.formaction.value='edit';
    37.                  document.form2.formobject.value='337'; document.form2.submit();" />
    38.          <!--<input type="submit" class="span_b" name = "edit" value="UPDATE" />
    39.         <input type="hidden" name="formobject" value="337" />-->
    40.        </td>
    41.  
    Заранее спасибо.
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    у тебя случайно не value='337' этот пост редактируеться все время?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    @Vladchucha, а теперь в чем конкретика проблема ? так как смысла и логики не нашел.
     
  4. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    у тебя случайно не value='337' этот пост редактируеться все время?
    Именно так.
    Видимо плохо обьяснил.
    Сначала делается запрос (user выбирает, например Beatles), затем из БД
    выбираются и в виде таблицы представляются все альбомы, скажем 15.
    Одна строчка на альбом и под ней строчка для данного альбома с двумя
    кнопками DELETE, UPDATE.
    В примере value='337' стоит на самой последней строчке.
    И при нажатии кнопки "input" , без разницы, на какой строчке -
    отправляются данные из последней строки.
    Строчка
    HTML:
    1. <input type="submit"class="span_b"name="edit"value="UPDATE"
    повторяется 15 раз, если из БД выбрано 15 альбомов.
    PHP:
    1. function  table_album_update($rs,$bname )
    2. { $formaction = '';
    3.   echo "<br_/>";##  echo_r($rs);
    4.   ?>
    5.    <form  name="form2" action="<?=$_SERVER["PHP_SELF"]?>"  method="POST" >
    6.   <table    border="3" cellpadding="3" cellspacing="1" bgcolor="#FFCC66"> <!--width="600px"-->
    7.     <tr><td>  <?=$bname?></td></tr>
    8.     <tr bgcolor="#00CC99">
    9.       <th>ID_BAND </th>
    10.       <th>NAME </th>
    11.       <th>YEAR </th>
    12.       <th>MUSIC_KIND</th>
    13.       <th>MUSIC_KIND2</th>
    14.       <th>Rating </th>
    15.       <th>Rating_ART </th>
    16.       <th>Concept </th>
    17.       <th>COMMENT </th>
    18.    </tr>
    19. <?php
    20.       foreach ($rs as $al)
    21.      {  ?>
    22.       <tr>
    23.         <td><input type="text" required="required" name="data[id_band]" value="<?=$al['id_band']?>"></td>
    24.         <td><input type="text" required="required" name="data[name]" value="<?=$al['name']?>"></td>
    25.         <td><input type="text"  required="required" name="data[year]" value="<?=$al['year']?>"></td>
    26.         <td><input type="text" required="required" name="data[music_kind]" value= "<?=$al['music_kind']?>"></td>
    27.         <td><input type="text" name="data[music_kind_2]" value= "<?=$al['music_kind_2']?>"></td>
    28.         <td><input type="number" required="required" type="number"  max="10" min="1" name="data[main_rating]" value="<?=$al['main_rating']?>"></td>
    29.          <td><input type="number" required="required" type="number"  max="10" min="1" name="data[rating_art]" value="<?=$al['rating_art']?>"></td>
    30.         <td><input type="text" name="data[concept]" value= "<?=$al['concept']?>"></td>
    31.         <td><textarea name="data[comment]" placeholder="<?=$al['comment']?>"></textarea></td>
    32.       </tr>
    33.       <tr >
    34.        <td colspan="4" align="center">
    35.         <input  type="submit" class="span_b"  name="del" value="DELETE" />
    36.         <!--<input type="button" value="DELETE"
    37.                 onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del';
    38.                  document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />-->
    39.        </td>
    40.         <td colspan="4" align="center">
    41.           <!--<input type="button" value="UPDATE"
    42.                  onClick="document.form2.formaction.value='edit';
    43.                   document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />-->
    44.          <input type="submit" class="span_b" name = "edit" value="UPDATE" />
    45.          <input type="hidden" name="formobject" value="<?=$al['id']?>" />
    46.        </td>
    47.     </tr>
    48. <?php
    49.     }
    50.   ?>    
    51.   </table>
    52. </form> <br /><br />
    53. <?php
    54. }
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    еще я заметил что ты в форме вместо ID="" или Class="" указываешь name="" а потом этот name передаешь в js обработку, мне так кажется что js не догадывается что ему взять с какой формы, так как тип данных указан не верно.
    PHP:
    1. function  table_album_update( $rs,$bname )
    2. {
    3.     $formaction = '';
    4.       echo "<br/>"; # echo_r($rs);
    5. ?>
    6.  
    7.   <form id="form2" action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
    8.       <table border="3" cellpadding="3" cellspacing="1" bgcolor="#FFCC66"> <!--width="600px"-->
    9.           <tr><td>  <?=$bname?></td></tr>
    10.           <tr bgcolor="#00CC99">
    11.               <th>ID_BAND </th>
    12.               <th>NAME </th>
    13.               <th>YEAR </th>
    14.               <th>MUSIC_KIND</th>
    15.               <th>MUSIC_KIND2</th>
    16.               <th>Rating </th>
    17.               <th>Rating_ART </th>
    18.               <th>Concept </th>
    19.               <th>COMMENT </th>
    20.           </tr>
    21.           <?php foreach ($rs as $al): ?>
    22.               <tr>
    23.                   <td><input type="text" required="required" name="data[id_band]" value="<?=$al['id_band']?>"></td>
    24.                   <td><input type="text" required="required" name="data[name]" value="<?=$al['name']?>"></td>
    25.                   <td><input type="text"  required="required" name="data[year]" value="<?=$al['year']?>"></td>
    26.                   <td><input type="text" required="required" name="data[music_kind]" value= "<?=$al['music_kind']?>"></td>
    27.                   <td><input type="text" name="data[music_kind_2]" value= "<?=$al['music_kind_2']?>"></td>
    28.                   <td><input type="number" required="required" type="number"  max="10" min="1" name="data[main_rating]" value="<?=$al['main_rating']?>"></td>
    29.                   <td><input type="number" required="required" type="number"  max="10" min="1" name="data[rating_art]" value="<?=$al['rating_art']?>"></td>
    30.                   <td><input type="text" name="data[concept]" value= "<?=$al['concept']?>"></td>
    31.                   <td><textarea name="data[comment]" placeholder="<?=$al['comment']?>"></textarea></td>
    32.               </tr>
    33.               <tr >
    34.                   <td colspan="4" align="center">
    35.                       <input  type="submit" class="span_b"  name="del" value="DELETE" />
    36.                     <!--<input type="button" value="DELETE" onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del'; document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />-->
    37.                 </td>
    38.                 <td colspan="4" align="center">
    39.                       <!-- <input type="button" value="UPDATE" onClick="document.form2.formaction.value='edit'; document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" /> -->
    40.                     <input type="submit" class="span_b" name = "edit" value="UPDATE" />
    41.                     <input type="hidden" name="formobject" value="<?=$al['id']?>" />
    42.                 </td>
    43.              </tr>
    44.          <?php endforeach ?>
    45.      </table>
    46.   </form>
    47.   <br/><br/>
    48. <?php
    49. }
    попробуй так, если не получися нужно на месте смотреть удаленно подключатся к тебе, ибо объясняешь ты не очень.
    Допусим я не знаю что такое: Beatles
    Вот допустим еще вот так:
    PHP:
    1. <input type="hidden" name="formobject" value="<?=$al['id']?>" />
    можно делать но не желательно, ибо это все можно изменять, через браузер, эту строку нужно сохранять в сессию и там уже передавать правильно.
    По поводу повторений 15 раз, это же логично у тебя стоит цикл.
    а так по логике вроде форма оформленна правильно и таблица тоже.
     
    #5 _ne_scaju_, 23 янв 2019
    Последнее редактирование: 23 янв 2019
  6. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Ну, во-первых спасибо.
    2. ОК, no Beatles, let us Rolling Stones.
    3. Почему скрипт передает последнюю строчку - понятно:
    при нажатии
    HTML:
    1. <input type="submit" class="span_b" name = "edit" value="UPDATE" />
    передаются все поля в форме, которые предназначены для передачи.
    Если передается "имя" - "значение" ( id = 25), все хорошо.
    Если в форме еще раз встречается и соответсвенно передается (id = 34)_
    то PHP получит ОДИН раз id с последним значением.
    Как это обойти я и не понимаю. По идее отправка с помощью js
    должна решать проблему, но почему-то не реагирует никак кнопка через js.
    Пока в голове пусто, пошел спать.
    Твой вариант с ID то же самое, никакой реакции:
    PHP:
    1. function  table_album_update($rs,$bname )
    2. { $formaction = '';
    3.     ?>
    4.    <form id="F2"  action="<?=$_SERVER["PHP_SELF"]?>"  method="POST" >
    5.   <table    border="3" cellpadding="3" cellspacing="1" bgcolor="#FFCC66"> <!--width="600px"-->
    6.     <tr><td>  <?=$bname?></td></tr>
    7.     <tr bgcolor="#00CC99">
    8.       <th>ID_BAND </th>
    9.       <th>NAME </th>
    10.       <th>YEAR </th>
    11.       <th>MUSIC_KIND</th>
    12.       <th>MUSIC_KIND2</th>
    13.       <th>Rating </th>
    14.       <th>Rating_ART </th>
    15.       <th>Concept </th>
    16.       <th>COMMENT </th>
    17.    </tr>
    18. <?php
    19.       foreach ($rs as $al)
    20.      {  ?>
    21.       <tr>
    22.         <td><input type="text" required="required" name="data[id_band]" value="<?=$al['id_band']?>"></td>
    23.         <td><input type="text" required="required" name="data[name]" value="<?=$al['name']?>"></td>
    24.         <td><input type="text"  required="required" name="data[year]" value="<?=$al['year']?>"></td>
    25.         <td><input type="text" required="required" name="data[music_kind]" value= "<?=$al['music_kind']?>"></td>
    26.         <td><input type="text" name="data[music_kind_2]" value= "<?=$al['music_kind_2']?>"></td>
    27.         <td><input type="number" required="required" type="number"  max="10" min="1" name="data[main_rating]" value="<?=$al['main_rating']?>"></td>
    28.          <td><input type="number" required="required" type="number"  max="10" min="1" name="data[rating_art]" value="<?=$al['rating_art']?>"></td>
    29.         <td><input type="text" name="data[concept]" value= "<?=$al['concept']?>"></td>
    30.         <td><textarea name="data[comment]" placeholder="<?=$al['comment']?>"></textarea></td>
    31.       </tr>
    32.       <tr >
    33.        <td colspan="4" align="center">
    34.         <input  type="submit" class="span_b"  name="del" value="DELETE" />
    35.         <!--<input type="button" value="DELETE"
    36.                 onClick="if (confirm('Really Delete ?')) document.form2.formaction.value='del';
    37.                  document.form2.formobject.value='<?=$al['id']?>'; document.form2.submit();" />-->
    38.        </td>
    39.         <td colspan="4" align="center">
    40.           <input type="button" value="UPDATE"
    41.                  onClick="document.getElementById('F2').formaction.value='edit';
    42.                   document.getElementById('F2').formobject.value='<?=$al['id']?>'; document.getElementById('F2').submit();" />
    43.          <!--<input type="submit" class="span_b" name = "edit" value="UPDATE" />
    44.          <input type="hidden" name="formobject" value="<?=$al['id']?>" />-->
    45.        </td>
    46.     </tr>
    47.          <?php
    48.       }  ##endforeach
    49.      ?>
    50.    </table>
    51.  </form> <br /><br />
    52. <?php
    53.  }
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    конечно не срабатывает потому что ты уже изменил id="F2" в форме на свое название, а при обработке js ты используешь form2 а должен использовать form2
    может кто и сможет другой помочь.
     
  8. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    К сожалению дело не в этом:
    я не изменил для DELETE, а для UPDATE изменил, с ним и игрался.
    Там стоит
    HTML:
    1.  
    2. [LIST=1]
    3. [*]<input type="button" value="UPDATE"
    4. [*]                 onClick="document.getElementById('F2').formaction.value='edit';
    5. [*]                  document.getElementById('F2').formobject.value='<?=$al['id']?>'; document.getElementById('F2').submit();" />
    6. [/LIST]
    7.  
     
  9. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Хмм....
    Вверху показывает ошибку, если я правильно думаю, что
    красная звездочка и т.д. - ошибка.
    Но где - не понимаю, может кто надоумит ?
     
  10. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    HTML:
    1.  
    2. <input type="button" value="UPDATE"
    3.                 onClick="document.getElementById('F2').formaction.value='edit';
    4.                  document.getElementById('F2').formobject.value='<?=$id_a?>'; document.getElementById('F2').submit();" />
    5.  
    --- Добавлено ---
    Так тоже ошибку вроде дает ???
     
  11. Vladchucha

    Vladchucha Активный пользователь

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Всем спасибо.
    С виски и божьей помощью разобрался.