2012-08-29 102 views
0

好吧,所以我有一个页面调用一个msyql数据库的信息列表。比如说,我有一张名为TABLE的表格,里面有列标识,姓名,电话号码和一个单选按钮组(家庭,单元格,工作)等等。我创建了一个脚本,在表格中打印出姓名,电话号码和“状态(不确定最好是什么调用这个,但它是单选按钮的值)单选按钮我想要做的就是让每行都为单选按钮指定一个值,将编辑状态部分,所以说,在第1行,我点击回家,第2行,单元格和第3行首页...等等,我点击一个提交按钮它将更新数据库。PHP帮助声明变量内的变量

所以,这是我的表单中单选按钮部分的代码。这是在php标签下。我最终做的基本上是调用每组单选按钮status_type1,status_type2,status_ type3 ...基本上radio name ='status_type'。$ info ['id']。“

我想做一个if语句来查看是否有按钮上的任何点击赋值,然后将它们提交给条目。这是我迄今为止所拥有的。

//Radio Button Template 
    <fieldset> 
<input type='radio' id='status_type_home' name='status_type".$info['id']."' value='home' /> 
    <label for='status_type_home'>home</label> 
<input type='radio' id='status_type_work' name='status_type".$info['id']."' value='work' /> 
    <label for='status_type_work'>work</label> 
<input type='radio' id='status_type_cell' name='status_type".$info['id']."' value='cell' /> 
    <label for='status_type_cell'>cell</label> 
</fieldset> 

</td>"; 


//If statement to submit radio buttons 

    if ($_POST['status_type "$info['id']"']) 
{ 
$edit_status_sql="UPDATE status SET type = 'status_type".$info['id'] . "' WHERE id = '" . $id . "'"; 

$edit_status_res=mysqli_query($connection, $edit_status_sql) or die(mysqli_error($connection)); 
} 

我遇到的问题基本上是,我已经声明单选按钮的名称为status_type [基于id的变量]。不幸的是,这不起作用。我想知道是否有人可以帮我弄清楚我应该如何格式化它,或者甚至可以在变量中声明一个变量。谢谢!

+0

做一个var_dump($ _ POST); die;那么你会看到关键值对 – Soundz

回答

0

您的PHP代码在语法上不正确。假设$info有正确的价值观,它应该读

if ($_POST["status_type$info[id]"]) 

注意:

  • 除去空间,以配合HTML
  • 双引号是从字符串中删除,现在界定它代替
  • 单引号范围内$info的阵列索引被删除

您也可以使用等效的$_POST["status_type".$info['id']]

然而,也有许多其他问题与代码:

  • 看来,您正在使用多个单选按钮相同的HTML中的ID页面(ID是每一行重复使用)。这是不正确的; ID应该是唯一的。
  • 如果变量未定义,if应该阻止E_NOTICE;即它应该读取if(isset($_POST[...]))
  • 该代码容易受到SQL injection的影响。这应该被修复现在
0

应该

if ($_POST["status_type".$info['id'].""]){ 
    ..... 
} 

您有:

if ($_POST['status_type "$info['id']"']) { 
    ..... 
    } 

还我会做水木清华这样的:$statusType = "status_type".$info['id'];和使用它像$_POST["$statusType"]

$edit_status_sql="UPDATE status SET type = '."$statusType".' WHERE id = '".$id."'";