我的网站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
}
?>
答案 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'
}
对于删除,使用另一个单个按钮创建另一个表单,类似:action = database.php?action = delete。在database.php里面,
if(isset($_GET['action']) == 'delete') {
// run the delete query... DELETE FROM $tbl WHERE username = '$myusername'
}
答案 1 :(得分: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);