2011-04-02 97 views
0

我一直在尝试使用$_GET来尝试管理标记帐户的日志文件,但这种新情况并不完全正常。

if (isset($_GET['marked'])) { 
     if ($_GET['marked'] == 'read') { 
      if (isset($_POST['mark'])) { 
       foreach ($_POST['mark'] as $mark) { 
        mysql_query("UPDATE logged SET status = '1' WHERE timeLogged = $mark"); 
        echo "<meta http-equiv='refresh' content='0;url=/admincpanel/flagged.php'>"; 
       } 
      } 
     } 
     else if ($_GET['marked'] == 'unread') { 
      if (isset($_POST['mark'])) { 
       foreach ($_POST['mark'] as $mark) { 
        mysql_query("UPDATE logged SET status = '0' WHERE timeLogged = $mark"); 
        echo "<meta http-equiv='refresh' content='0;url=/admincpanel/flagged.php'>"; 
       } 
      } 
     } 
     else if ($_GET['marked'] == 'save') { 
      if (isset($_POST['mark'])) { 
       foreach ($_POST['mark'] as $mark) { 
        mysql_query("UPDATE logged SET status = '2' WHERE timeLogged = $mark"); 
        echo "<meta http-equiv='refresh' content='0;url=/admincpanel/flagged.php'>"; 
       } 
      } 
     } 
    } 

和我有按钮:Mark as <a href=\"?marked=read\" onclick=\"submitForm();\"><i>read</i></a><a href=\"?marked=unread\" onclick=\"submitForm();\">/unread</a>

我使用复选框选择我想要的行没有$ _GET默认submitForm前();工作得很好。

这工作:Mark as <a href=\"#\" onclick=\"submitForm();\"><i>read</i></a>

if (isset($_POST['mark'])) { 
     foreach ($_POST['mark'] as $mark) { 
      mysql_query("UPDATE logged SET status = '1' WHERE timeLogged = $mark"); 
      echo "<meta http-equiv='refresh' content='0;url=/admincpanel/flagged.php'>"; 
     } 
    } 

我怎样才能让我的其他标志物(读,未读,保存)工作?提交表格和获得结果似乎是$_POST唯一的工作,所以我必须添加更多参数到$_POST对不对?

如果它可以帮助任何这是JavaScript:

function submitForm() { 
    document.logs.submit(); 
} 

概括起来讲,我试图让读取更新状态为1,未读状态0,并保存状态2.与使用$_GET ISN没有工作 - 或者我做错了。那么我能做些什么来完成这项工作?

谢谢。

回答

2

海兰 尝试在表单中添加一个隐藏字段:

<input type="hidden" name="marked" id="marked" value="" />

然后,按钮:

'标记为

<a href=\"?marked=read\" onclick=\"submitForm('read');\"><i>read</i></a><a href=\"?marked=unread\" onclick=\"submitForm('unread');\">/unread</a>` 

然后JavaScript函数:

function submitForm(mark) { 
    document.getElementById('marked').value = mark; 
    document.logs.submit(); 
}` 

然后,在PHP脚本中使用$ _REQUEST [“标记”] insted的的$ _GET

1

href="?marked=read"因为你提交表单,而不是永远不会发送到服务器。

要解决该问题,您可以为您的submitForm()函数添加一个参数,并将此参数存储为名为'marked'的隐藏表单输入的值。

像这样:

Mark as <a href="#" onclick="submitForm('read')">read</a> 

function submitForm(marked) { 
    // TODO: Setup hidden input field with the marked argument 
    document.logs.submit(); 
} 
1

尝试此PHP代码,有点清洁和简洁:

if (isset($_GET['marked'])) { 
    if ($_GET['marked') == 'read') 
     $status = 1; 
    elseif ($_GET['marked'] == 'unread') 
     $status = 0; 
    else 
     $status = 1; 
    } 
if (isset($_POST['mark'])) { 
    foreach ($_POST['mark'] as $mark) { 
     mysql_query("UPDATE logged SET status = $status WHERE timeLogged = $mark"); 
     echo "<meta http-equiv='refresh' content='0;url=/admincpane/flagged.php'>"; 
     } 
    }