保存按钮:如何用结果更新另一个表?
Posted
技术标签:
【中文标题】保存按钮:如何用结果更新另一个表?【英文标题】:Save button: how to update another table with results? 【发布时间】:2013-11-07 20:09:41 【问题描述】:我有一个食谱表,每个食谱旁边都有一个保存按钮。单击此按钮时,我希望检索配方名称并将其保存到用户的配置文件中(添加到数据库)。
但是,我遇到了一些问题。我有一个保存按钮,它链接到“save_recipe.php”。目前,当我选择保存时,我被定向到一个空白页面。我感觉这与我创建保存按钮的方式有关,因为没有显示任何回显语句。
按钮的代码是:
<html>
<body>
<form action="../user profile/save_recipe.php" method="post">
<input type="submit" name="submit" class="btn" value="Save Recipe"></td>
</form>
</body>
</html>
save_recipe 的代码是:
<!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=iso-8859-1" />
<title>BMI Result</title>
</head>
<link rel="stylesheet" href="css.css" type="text/css" />
<body>
<?php
error_reporting(E_ALL &~ E_NOTICE);
// Start the session
session_start();
// If the session vars aren't set, try to set them with a cookie
if (!isset($_SESSION['user_id']))
if (isset($_COOKIE['user_id']) && isset($_COOKIE['username']))
$_SESSION['user_id'] = $_COOKIE['user_id'];
$_SESSION['username'] = $_COOKIE['username'];
echo gfgfg;
// Make sure the browser is transmitting in UTF-8
header('Content-type: text/html; charset=utf-8');
// Clear the error message
$error_msg = "";
//if (isset($_SESSION['user_id']))
// echo $_SESSION['user_id'];
$dbc = mysqli_connect('localhost', 'root', 'root', 'help_me_be_healthy') or die("Error " . mysqli_error($dbc));
mysqli_set_charset($dbc, "utf8");
echo gfdgfdg;
if(isset($_POST['submit']))
$recipe_name = mysqli_result(mysqli_query("SELECT `recipe_1_name`, `recipe_2_name` FROM `carbohydrates`");
//"SELECT `recipe_1_name` OR `recipe_2_name` FROM `carbohydrates` WHERE `user_id` = '" . $_SESSION['user_id'] . "'";
$query = "UPDATE `users` SET `recipes_saved` = $recipe_name WHERE `user_id` = '" . $_SESSION['user_id'] . "'";
$data= mysqli_query($dbc,$query);
echo '$recipe_name';
);
?>
任何建议将不胜感激,我对此很陌生!
【问题讨论】:
首先,这会抛出一个错误echo gfgfg;
,所以请不要使用伪代码,如果是这样的话。其次,使用不带引号的echo $recipe_name;
。第三,你没有正确回应你的query。您需要使用while
或foreach
条件并获取。
...4th 除了submit
按钮之外,表单中没有其他字段,5th cookie 在$_SESSION
中毫无意义地重复,6th SELECT
查询似乎毫无意义...
... 节拍继续 ♫ ;-)
尝试在您的echo '$recipe_name';
是foreach($data as $row) echo $row['recipes_saved'];
或您希望使用的任何行/列的情况下使用它。这只是“一种”方式。
谢谢大家,我实际上在想为什么我将它设置为两个不同的代码页面并将它们组合起来。所以,除了保存方法之外,我还有显示食谱表的页面
【参考方案1】:
$dbc = mysqli_connect('localhost', 'root', 'root', 'help_me_be_healthy') 或 die("Error " .)
您有多个 mysqli_connect 实例。它应该是mysql_connect。另外,您真的不应该使用 root 作为 u-name 和 p-word。这是 PHP IIRC 的默认安装。
【讨论】:
我在所有其他代码中都使用了这个连接线,它工作正常 是的,很公平。我更像是一个 ASP/MVC 人。第 2 点仍然有效。 “应该是mysql_connect”——嗯,不。MySQL_
已弃用,而 localhost', 'root', 'root'
只是人们用来隐藏其实际数据库凭据的一个示例。 @ryanbutler以上是关于保存按钮:如何用结果更新另一个表?的主要内容,如果未能解决你的问题,请参考以下文章
如何用另一个表中的匹配值替换/更新列中每个字符串的所有实例?