Передача значений методом POST (checkbox)

132
16 августа 2019, 11:30

Есть скрипт для ввода и сохранения закладок. Закладки выводятся в таблице с тремя полями: адрес, категория закладки и checkbox (какие закладки добавить к себе). При выводе страницы рекоммендуемых закладок (recommend.php) всё отлично выводиться, нужные данные вытаскиваются из базы данных и подставляются в поля. Но, при попытке добавить новую закладку оттуда к себе на страницу, то добавляется только адрес, а категория нет.

Вот скрипт, который отрисовывает таблицы с закладками, которые можно добавить:

function display_recommended_urls($bookmarks_array)
{
  global $add_table;
  $add_table = true;
?>
  <br />
  <form name='add_table' action='add_recommend.php' method='post'>
  <table align="center" width=500 cellpadding=2 cellspacing=0>
<?php
  $color = "#cccccc";
  echo "<tr bgcolor=$color><td><strong>Recommendations</strong></td>";
  echo "<td><strong>Category</strong></td>";
  echo "<td><strong>Add</strong></td></tr>";
  if (is_array($bookmarks_array) && count($bookmarks_array)>0)
  {
    var_dump($bookmarks_array); - **отсюда дамп**
    foreach ($bookmarks_array as $url)
    {   
      if ($color == "#cccccc")
        $color = "#ffffff";
      else
        $color = "#cccccc";
      foreach ($url as $bookmark => $category) {
      echo "<tr bgcolor='$color'><td><a href=\"$bookmark\">".$bookmark."</a></td>";
      echo "<td>".$category."</td>";
      echo "<td><input type='checkbox' name=\"add_me[]\" value=\"$bookmark\"></td>"; 

Если сделать var_dump($bookmarks_array), то результат следующий:

array(2) {
[0]=> array(1) { ["BOOKMARK_1"]=> string(4) "TEST" }  
[1]=> array(1) { ["BOOKMARK_1"]=> string(4) "TEST" } 
}

А вот обработчик предыдущего кода:

  $add_me       = $_POST['add_me'];
  $valid_user   = $_SESSION['valid_user'];
  do_html_header('Adding bookmarks');
  check_valid_user();
  if (!filled_out($_POST))
  {
    echo 'You have not chosen any bookmarks to add. Please try again.';
    display_user_menu();
    do_html_footer();  
    exit;
  }
  else 
  {
    if (count($add_me) > 0)
    {
      foreach($add_me as $url)
      {
        if (add_recommend($valid_user, $url))
          echo 'Added '.htmlspecialchars($url).'.<br />';
        else
          echo 'Could not add '.htmlspecialchars($url).'.<br />';
      }  
    }
    else
      echo 'No bookmarks selected for adding';
  }
  // get the bookmarks this user has saved
  if ($url_array = get_user_urls($valid_user))
    display_user_urls($bookmarks_array);
  display_user_menu(); 
  do_html_footer();
?>

Вот код, который создает сам массив закладок:

function get_user_urls($username)
{
  //extract from the database all the URLs this user has stored
  $conn = db_connect();
  $result = $conn->query( "select bm_URL, category
                          from bookmark
                          where username = '$username'");
  if (!$result)
    return false; 

  //create an array of the URLs 
  $url_array = array();
  for ($count = 0; $row = $result->fetch_row(); ++$count) {
      $bookmarks_array[$count] = array($row[0] => $row[1]);
   }
  return $bookmarks_array;

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

READ ALSO
Конкатенация PHP + HTML [дубликат]

Конкатенация PHP + HTML [дубликат]

На данный вопрос уже ответили:

112
дубликаты уведомлений push

дубликаты уведомлений push

Согласно данной статье https://habrcom/ru/post/321924/ реализуются оповещения

109
Удаленная отладка в проекте C++ на Windows

Удаленная отладка в проекте C++ на Windows

Есть проблема удаленной отладки проекта на плюсахРасклад таков:

116