[英]Sending information to database SQL PHP
我有一张要寄到餐桌的表格。 有两个下拉列表。 首先是有关当前登录用户的工作的信息,其次是获取用户的所有用户名。 日期字段,价格字段和评论字段。 所以我的代码在这里:
此代码获取所有信息。 submit.action.php
<form name="form5" method="post" action="send_action.php" >
<div dir="rtl">
<?php
$db_host = 'localhost';
$db_name= 'site';
$db_table= 'job_list';
$db_user = 'root';
$db_pass = '';
$user=$fgmembersite->UserNameOfUser();
$con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET utf8");
$dbresult=mysql_query("SELECT job_list.job_id,
job_list.job_name,
tablesite.username
FROM $db_table
INNER JOIN relation
on job_list.job_id=relation.job_id
INNER JOIN tablesite
on relation.user_id=tablesite.id_user AND tablesite.username='$user'",$con);
echo'* خدمتی که ارائه داده اید: ','<br/>';
echo '<select name="job" dir="rtl">';
while($amch=mysql_fetch_assoc($dbresult))
{
echo '<option value="'.$amch['job_id'].'">'.$amch['job_name'].'</option>';
}
echo '</select>'; ?><br/>
</div>
<!--************************************************************** -->
<div dir="rtl">
<?php
$db_host = 'localhost';
$db_name= 'site';
$db_table2= 'tablesite';
$db_user = 'root';
$db_pass = '';
$con2 = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con2) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET utf8");
$dbresult=mysql_query("SELECT *
FROM $db_table2",$con2);
echo'* نام کاربری که به او خدمت داده اید: ','<br/>';
echo '<select name="users" dir="rtl">';
while($amch=mysql_fetch_assoc($dbresult))
{
echo '<option value="'.$amch['id_user'].'">'.$amch['username'].'</option>';
}
echo '</select>'; ?><br/>
<label for='date' >* تاریخ عملیات:</label><br/>
<input type='text' name='date' id='date' value='' maxlength="11" placeholder="1394/1/1" /><br/>
<label for='price' >* هزینه کار:</label><br/>
<input type='text' dir="rtl" name='price' id='price' value='' maxlength="50" placeholder="54000"/><br/>
<label for='textaria' >توضیحات:</label><br/>
<textarea name="textaria" cols="" rows=""></textarea><br/>
<input name="submit" type="submit" value="ثبت عملیات" />
</div>
</form>
</span>
</div>
在此页面中,我们将信息发送到数据库,但没有任何发送!:
<?php
require_once("./include/membersite_config.php");
?>
<!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>ارسال عملیات</title>
</head>
<body>
<?php
$id=$fgmembersite->UserID();
echo "$id"; ?>
<?php
$db_host = 'localhost';
$db_name= 'site';
$db_table= 'action';
$db_user = 'root';
$db_pass = '';
$con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
mysql_query("SET NAMES 'utf8'", $con);
mysql_query("SET CHARACTER SET 'utf8'", $con);
mysql_query("SET character_set_connection = 'utf8'", $con);
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
$ins = "INSERT INTO $db_table
(service_provider_id,customer_id,date,price,job_id,service_provider_comment)
VALUES ('$id',
'" . mysql_escape_string($_POST['users']) . "',
'" . mysql_escape_string($_POST['date']) . "',
'" . mysql_escape_string($_POST['price']) . "',
'" . mysql_escape_string($_POST['job']) . "',
'" . mysql_escape_string($_POST['textaria']) . "')";
$saved=mysql_query($ins );
mysql_close($con);
?>
</body>
</html>
注意:上面的代码提供了下拉列表和文本框以及textarea的所有值,应将它们发送到databasetable。
注意:fg_membersite包含于:
function UserID()
{
return isset($_SESSION['user_id'])?$_SESSION['user_id']:'';
}
我的桌子是这样的:
job_id int(11)
service_provider_id int(10)
customer_id int(10)
date int(50)
price int(255)
vote varchar(255)
service_provider_comment varchar(255)
customer_comment varchar(255)
浏览完您的代码后,我调试了您的代码并将其本地化。 在这个问题上几乎没有困惑。
我在测试环境中创建了您的代码方案。
您的主表单将提交的内容发布到send_action.php
。
为了调试,我在send_action.php
页面中,在$selected = ....
之后添加了var_dump($_POST);
。 可以看到在哪里可以收到提交的内容?
它表明由于某种原因未发布作业,并且您的($_POST['job'])
错误消息Undefined index
并且此错误发生在INSERT
语句中。 因此,不会插入任何内容。
我已经检查了Job,但它为空,我添加了一个名为default value echo '<option value="0">default job</option>';
,这是为了确保您的工作清单在测试环境下为空,那么应该提交某些内容,否则它将返回null并给您带来问题。
echo '<select name="job">';
echo '<option value="0">default job</option>';
while ($amch = mysql_fetch_assoc($dbresult))
{
echo '<option value="' . $amch['job_id'] . '">' . $amch['job_name'] . '</option>';
}
到现在为止还挺好。
我已经测试过在您的insert方法中手动注入数据,并且工作正常。
将默认值放入工作后,现在一切正常,您的表单正在提交并保存到数据库。
mysql_escape_string
或数据库连接,建立中心页面并包含连接(我有一个显示使用PDO的最小项目的答案,您可以在这里查看并获得启发) 该解决方案基于您的代码中显示的内容,我没有机会进行深入测试或针对最终运行的数据库进行测试。 我创建了一个用于插入数据的表,还获得了旧版本的数据库var_dump,它也提供了帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.