0

我的网站上有这段代码http://www3.londonmet.ac.uk:8008/~iia0014/userdetails.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 
}
?>
4

2 回答 2

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()

如果 str 的第一个字符是字母,则返回一个字符串。

对于更新和删除按钮,您可以放置​​两个具有不同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);
于 2013-01-03T03:00:41.550 回答
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'

} 

对于删除,用另一个按钮创建另一个表单,类似地:action=database.php?action=delete。在database.php里面,

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

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

} 
于 2013-01-03T01:25:40.220 回答