2013-01-03 29 views
0

我有这样的代码从我的网站http://www3.londonmet.ac.uk:8008/~iia0014/userdetails.php输入/回声线标签PHP表单字段

我想知道如何正确格式化的形式很好地给出名字在同一行中的字段我呼应数据库行所以很清楚究竟是什么。 例如,我想:

<input value="<?php echo "ID: " . $row["id"]; ?>"><br> 

我应该添加或删除作出上述线路正常工作显示:ID:一些ID在这里?

但这将ID字与行ID本身连接起来,在表单内插入“ID:”,我希望它在外面很好。我可以在表格中添加一个表格,并给出一个名字......但这是唯一的方法吗?我可以用简单的方法做到吗,所有这一切都可以让我的代码更清晰?另外,我是否可以以更简单的方式合并删除和更新按钮,而不是单独编写函数,也许是同一行上的新函数?我正在寻找一个行数最少的更干净的代码。

<?php session_start(); ?> 
<?php include "includes/connection.php"; ?> 

<?php 

$query = mysql_query("SELECT id, username, password, email, name, aim, admin, time,   phone, address 
FROM users 
WHERE username = '".$_SESSION['myusername']."' "); 


while($row = mysql_fetch_array($query)) 
{ 

?> 

<input value="<?php echo $row["id"]; ?>"><br> 
<input value="<?php echo $row["username"]; ?> "><br> 
<input value="<?php echo $row['password']; ?> "><br> 
<input value="<?php echo $row['email']; ?> "><br> 
<input value="<?php echo $row['name']; ?> "><br> 
<input value="<?php echo $row['aim']; ?> "><br> 
<input value="<?php echo $row['admin']; ?> "><br> 
<input value="<?php echo $row['time']; ?> "><br> 
<input value="<?php echo $row['phone']; ?> "><br> 
<input value="<?php echo $row['address']; ?> "><br> 

<?php 
} 
?> 
+1

如果你想看到的是被输出什么样的结果从你的查询中,做一个var_dump($ query);在原来的$查询之后的行上。好的做法是将您的会话值(以及cookie')设置为一个变量,因此$ myusername = $ _SESSION ['myusername'];这样,你可以做一个更干净的查询,而不必...用户名='“。$ _ SESSION ['myusername']。”'而是,用户名='$ myusername' –

+0

我有这个结果链接上面的网站。 – learnerNo1

+0

对不起,误解了你。你的头衔对我来说毫无意义。我想我现在明白了。编辑:你的页面也没有加载。 –

回答

0

你可以做几件事情:

为了您的初始查询,

$myusername = $_SESSION['myusername']; 
$query = mysql_query("SELECT id, username, password, email, name, aim, admin, time,   phone, address FROM users WHERE username = '$myusername' "); 

这并不意味着对生产环境,但因为你是学习它总是好的分开的事情,所以你可以更好地了解发生了什么事情。

如果用户编辑他们的信息(更新数据库),您可以在其中创建一个带有单个按钮的表单,method = post和action = database.php?action = edit。而且里面database.php中,

if(isset($_GET['action']) == 'edit') { 

// set all posted values to variables 
// run the update query... UPDATE ... WHERE username = '$myusername' 

} 

对于删除,使另一种形式与另一种单一的按钮,类似:行动= database.php中行动=删除。并且在database.php中,

if(isset($_GET['action']) == 'delete') { 

// run the delete query... DELETE FROM $tbl WHERE username = '$myusername' 

} 
+0

我有这个删除功能和更新,我想知道我是否可以在同一行,如更改表单输入属性?我更关心如何在同一行添加表单文本字段的标签,我回显行。任何想法?看到那里,我试过了。我同意你的看法,我的标题非常混乱。 – learnerNo1

+0

你可以有一个复选框“删除我的配置文件”,检查它是否作为检查服务器端传递,如果它被选中删除它。 –

0

您不必将所有内容放在同一行,少的行并不总是更好。
关于输入字段,你的代码应该是这样的:

<label>ID</label> 
<input type="text" name="id" value="<?php echo $row['id']; ?>"> 

顺便提一句,在PHP中,单引号是字符串,双引号的字符串和变量(也许不是正确的技术定义) 。所以当你连接时,你应该这样做: 'string '.$var;而不是"string ".$var
而当你回应时,你应该使用逗号'连接'字符串和变量,所以你正在解析参数到echo函数而不是连接。这是更快的,因为它直接输出数据。不像连接,它首先连接字符串然后输出它。所以它会是echo 'string ', $var
此外,当您使用双引号时,使用{$var}作为变量的速度更快。例如:

mysql_query("SELECT `name` FROM `table` WHERE `id`='{$_SESSION['id']}'"); 

注意,在MySQL的查询,字段和表单引号(')之间重音符(`),和值之间的写入。

现在回到您的代码。如果所有的输入字段将是同类型的,可以说type="text",那么你可以这样做:

while ($row = mysql_fetch_array($query)) { 
    foreach ($row as $key => $value) { 
     echo 
     "<div> 
      <label>{ucfirst($key)}</label> 
      <input type="text" name="{$key}" value="{$value}"> 
     </div>"; 
    } 
} 

ucfirst()

返回与海峡大写的第一个字符的字符串,如果该字符是字母。

而对于更新和删除按钮就可以把两个按钮不同 name属性:

<input type="submit" name="update" value="Update"> 
<input type="submit" name="delete" value="Delete"> 

,然后检查isset()

if (isset($_POST['update'])) { 
    //update data 
} else if (isset($_POST['delete'])) { 
    //delete data 
} 

永远记住消毒用户输入:

function sanitize($str) { 
    return mysql_real_escape_string(htmlspecialchars(trim(stripslashes($str)))); 
} 

而不是由一个消毒一个你可以:

$data = array_map('sanitize', $_POST);