php编辑数据库entery脚本无法正常工作

时间:2010-04-26 02:23:00

标签: php mysql

我有两个.php文件,显示数据库中的所有联系人,然后允许用户选择要编辑的联系人。 第一个脚本名为pick_modcontact.php,我选择一个联系人,然后发布到脚本show_modcontact.php当我点击pick.modcontact.php表单上的post按钮时,浏览器会返回该文件,因为这个代码在开头show_modcontact.php

if (!$_POST['id']) {
    header( "Location: pick_modcontact.php");
    exit;
} else {
    session_start();
}
if ($_SESSION['valid'] != "yes") {
    header( "Location: pick_modcontact.php");
    exit;
} 

我无法弄清楚如何更正代码,以便显示脚本show_modcontact.php的结果

此脚本显示数据库中的所有联系人,这是一个“地址簿”,这部分工作正常。请看下面。 名称:pick_modcontact.php     

if ($_SESSION['valid'] != "yes") {
    header( "Location: contact_menu.php");
    exit;
} 

$db_name = "testDB";
$table_name = "my_contacts";
$connection = @mysql_connect("localhost", "admin", "user") or die(mysql_error());
$db = @mysql_select_db($db_name, $connection) or die(mysql_error());

$sql = "SELECT id, f_name, l_name FROM $table_name ORDER BY f_name";

$result = @mysql_query($sql, $connection) or die(mysql_error());

$num = @mysql_num_rows($result);

if ($num < 1) {
    $display_block = "<p><em>Sorry No Results!</em></p>";
} else {
    while ($row = mysql_fetch_array($result)) {
        $id = $row['id'];
        $f_name = $row['f_name'];
        $l_name = $row['l_name'];
        $option_block .= "<option value\"$id\">$f_name, $l_name</option>";
    }
    $display_block = "<form method=\"POST\" action=\"show_modcontact.php\">
    <p><strong>Contact:</strong>
    <select name=\"id\">$option_block</select>
    <input type=\"submit\" name=\"submit\" value=\"Select This Contact\"></p>
    </form>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Modify A Contact</title>
</head>

<body>
<h1>My Contact Management System</h1>
<h2><em>Modify a Contact</em></h2>
<p>Select a contact from the list below, to modify the contact's record.</p>
<? echo "$display_block"; ?>
<br>
<p><a href="contact_menu.php">Return to Main Menu</a></p>
</body>
</html>

此脚本用于修改联系人:名为show_modcontact.php

 <?php
if (!$_POST['id']) {
    header( "Location: pick_modcontact.php");
    exit;
} else {
    session_start();
}
if ($_SESSION['valid'] != "yes") {
    header( "Location: pick_modcontact.php");
    exit;
}
$db_name = "testDB";
$table_name = "my_contacts";

$connection = @mysql_connect("localhost", "admin", "pass") or die(mysql_error());

$db = @mysql_select_db($db_name, $connection) or die(mysql_error());

$sql = "SELECT f_name, l_name, address1, address2, address3, postcode, prim_tel, sec_tel, email, birthday FROM $table_name WHERE id = '" . $_POST['id'] . "'"; 

$result = @mysql_query($sql, $connection) or die(mysql_error());

while ($row = mysql_fetch_array($result)) {
    $f_name = $row['f_name'];
    $l_name = $row['l_name'];
    $address1 = $row['address1'];
    $address2 = $row['address2'];
    $address3 = $row['address3'];
    $country = $row['country'];
    $prim_tel = $row['prim_tel'];
    $sec_tel = $row['sec_tel'];
    $email = $row['email'];
    $birthday = $row['birthday'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Modify A Contact</title>
</head>

<body>
<form action="do_modcontact.php" method="post">
<input type="text" name="id" value="<? echo $_POST['id']; ?>" />
<table cellpadding="5" cellspacing="3">
<tr>
<th>Name & Address Information</th>
<th> Other Contact / Personal Information</th>
</tr>
<tr>
<td align="top">
<p><strong>First Name:</strong><br />
<input type="text" name="f_name" value="<? echo "$f_name"; ?>" size="35" maxlength="75"  /></p>
<p><strong>Last Name:</strong><br />
<input type="text" name="l_name" value="<? echo "$l_name"; ?>" size="35" maxlength="75"  /></p>
<p><strong>Address1:</strong><br />
<input type="text" name="f_name" value="<? echo "$address1"; ?>" size="35" maxlength="75"  /></p>
<p><strong>Address2:</strong><br />
<input type="text" name="f_name" value="<? echo "$address2"; ?>" size="35" maxlength="75"  /></p>
<p><strong>Address3:</strong><br />
<input type="text" name="f_name" value="<? echo "$address3"; ?>" size="35" maxlength="75" /> </p>
<p><strong>Postcode:</strong><br />
<input type="text" name="f_name" value="<? echo "$postcode"; ?>" size="35" maxlength="75"  /></p>
<p><strong>Country:</strong><br />
<input type="text" name="f_name" value="<? echo "$country"; ?>" size="35" maxlength="75" /> </p>
<p><strong>First Name:</strong><br />
<input type="text" name="f_name" value="<? echo "$f_name"; ?>" size="35" maxlength="75"  /></p>
</td>
<td align="top">
<p><strong>Prim Tel:</strong><br />
<input type="text" name="f_name" value="<? echo "$prim_tel"; ?>" size="35" maxlength="75"  /></p>
<p><strong>Sec Tel:</strong><br />
<input type="text" name="f_name" value="<? echo "$sec_tel"; ?>" size="35" maxlength="75"  /></p>
<p><strong>Email:</strong><br />
<input type="text" name="f_name" value="<? echo "$email;" ?>" size="35" maxlength="75" /> </p>
<p><strong>Birthday:</strong><br />
<input type="text" name="f_name" value="<? echo "$birthday"; ?>" size="35" maxlength="75" /> </p>
</td>
</tr>
<tr>
<td align="center">
<p><input type="submit" name="submit" value="Update Contact" /></p>
<br />
<p><a href="contact_menu.php">Retuen To Menu</a></p>
</td>
</tr>
</table>
</form>

</body>
</html>

1 个答案:

答案 0 :(得分:3)

编辑回答以反映以下评论主题中为未来读者发现的发现

在PHP文件中,您需要更新

$_POST[id] 

$_POST['id']

PHP现在不会是id,因此将评估为false,导致您的脚本退出,并落入您正在描述的循环中。

当您使用$ _SESSION数组

时也是如此
$_SESSION[valid]

应该是

$_SESSION['valid']

$ _ SESSION,$ _POST,$ _GET,$ _REQUEST等都是关联数组,为了引用它们的任何内容,您需要指定引用它们所在键的字符串。

好的,在你的if语句中

if (!$_POST['id']) {
    header( "Location: pick_modcontact.php");
    exit;
} else {
    session_start();
}
if ($_SESSION['valid'] != "yes") {
    header( "Location: pick_modcontact.php");
    exit;
}

您正在检查$ _SESSION ['valid']是否不等于是,这将评估为true,因为您从未设置$ _SESSION ['valid'] =“yes”,因此它将始终返回pick_modcontact。 php在这里。

尝试将其更新为

if (!$_POST['id']) {
    header( "Location: pick_modcontact.php");
    exit;
} else {
    session_start();

    // let the script know that this is a valid contact
    $_SESSION['valid'] = 'yes';
}
if ($_SESSION['valid'] != "yes") {
    header( "Location: pick_modcontact.php");
    exit;
}

另外

$option_block .= "<option value\"$id\">$f_name, $l_name</option>";

应该是(你正在误写一个等号),这意味着在提交时,它不会知道'id'的价值

$option_block .= "<option value=\"$id\">$f_name, $l_name</option>";