1

我正在努力解决问题。它分为两部分:

  1. 我想创建一个循环,从数据库中读取我的每个页面的 menu_name,并在读取它的同一行上,放置一个单选按钮来更改可见性。到目前为止,看起来我的单选按钮都已连接,因为(而不是为每个单选按钮检查“否”,而只在最后<li>一项上检查否:

     //K's function:
     function get_all_pages() {
         global $connection;
         $query = "SELECT * 
             FROM pages ";
         $query .= "WHERE visible = 1 ";
         $query .= "ORDER BY position ASC";
         $page_set = mysql_query($query, $connection);
         confirm_query($page_set);
         return $page_set;
     }
    
     //K's function:
     function list_all_pages(){
         $output = "<ul>";
         $page_set = get_all_pages();
         while ($page = mysql_fetch_array($page_set)) {
             $output .= "<li><a href=\"add_feature.php?page=" . urlencode($page["id"]) . "\">{$page["menu_name"]}</a></li>";
             $output .= "&nbsp;&nbsp;<input type=\"radio\" name=\"visible\" value=\"0\" checked=\"checked\" /> No <input type=\"radio\" name=\"visible\" value=\"1\" /> Yes";
         }
         $output .= "</ul>";
         return $output;
     }
    

问题#1的图片

  1. 我正在尝试用 Javascript 做一些 ajax 的事情。所以我希望可见的单选按钮在我动态生成的菜单列表旁边。我希望他们都被检查为否...当他们被检查为是时,我希望出现一个下拉列表,他们可以在其中选择数字 1-8(数字将表示它们将出现在什么位置)。

我是新手,如果没有 Javascript 和 php/mysql 专家的帮助,我想弄清楚这一点有点遥不可及。

4

2 回答 2

2

您的单选按钮都具有相同的“名称”属性,因此您一次只能选择一个。您可以将一些唯一标识符附加到属性值。例如visible_{$page_id}

function list_all_pages(){
    $output = "<ul>";
    $page_set = get_all_pages();
    while ($page = mysql_fetch_array($page_set)) {
        $page_id = urlencode($page["id"]);
        $output .= "<li><a href=\"add_feature.php?page={$page_id}\">{$page["menu_name"]}</a></li>";
        $output .= "&nbsp;&nbsp;<input type=\"radio\" name=\"visible_{$page_id}\" value=\"0\" checked=\"checked\" /> ";
        $output .= "No <input type=\"radio\" name=\"visible_{$page_id}\" value=\"1\" /> Yes";
    }
    $output .= "</ul>";
    return $output;
}

高级提示:使用 PHP,您可以通过使用特殊格式的输入名称来简化“页面”数据的处理——如下所示:

  • 让单选按钮使用类似的名称pages[$page_id][visible]
  • 让列表(又名select)使用类似pages[$page_id][order].

一旦用户提交了这些数据,PHP 会将其转换为“pages”数组(索引为 page_id)。然后,您可以执行以下操作:

function process_pages($pages) {
  foreach ($pages as $page_id => $data) {
     $is_visible = $data['visible'] === '1';
     $page_order = (int) $data['order'];
     //... update page's visibility/page order
  }
}
$pages = $_REQUEST['pages'];
process_pages($pages);
于 2012-08-22T19:47:03.963 回答
0

1. 更改每个单选按钮的名称属性以断开它们,例如使用 visible1, visible2, ...

2. 将 <input> 标签放在 <li> 中,放在 <a> 标签之后。这将在您动态生成的菜单旁边显示您的单选按钮。

3.您可以通过创建和调用将通过单击是选项执行的javascript函数来创建数字选择列表,这将创建并显示选择字段。

如果您需要更多说明,请对答案发表评论。

于 2012-08-22T20:01:10.813 回答