这是我的大计划!
朋友们,一切都还可以,但问题出现在'而且'当我有多个记录时。注意:所有代码都在一页中。
这里我们连接到数据库并获取有关获得其他用户服务的用户的信息。
<form name="form2" method="post" action="" accept-charset='UTF-8'>
<?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("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET utf8");
$dbresult=mysql_query("SELECT tablesite.name,
tablesite.family,
tablesite.username,
tablesite.phone_number,
tablesite.email,
action.service_provider_comment,
action.price,
action.date,
job_list.job_name,
relationofaction.ind
FROM $db_table
INNER JOIN job_list
on job_list.job_id=action.job_id
INNER JOIN relationofaction
on relationofaction.ind=action.ind
INNER JOIN tablesite
on tablesite.id_user=action.service_provider_id AND action.customer_id='$id'",$con);
此处打印当前用户获得另一个用户服务的所有时间。它可能是0或n。
问题在这里。当服务多于1时,当我试图向表中插入信息时,首先选择投票并向所有单元格解释插入。
每个按钮必须将信息发送到一个单独的字段而不是所有文件!
while($amch=mysql_fetch_assoc($dbresult))
{?>
<?php
echo'<div dir="rtl">';
echo "نام خدمت دهنده: "."   ".$amch["name"]." ".$amch["family"]."   "."شماره تماس: ".$amch["phone_number"]."   "."ایمیل: ".$amch["email"].'<br>'.
"شغل انجام شده: ".$amch["job_name"].'<br>'
."تاریخ انجام عملیات: ".$amch["date"].'<br>'
."هزینه ی کار: ".$amch["price"]." تومان".'<br>'
.$amch["service_provider_comment"].'<hr/>';
echo'<label for="explain">اگر توضیحاتی برای ارائه در این باره دارید، ارائه دهید</label> <br />';
echo'<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300"></textarea>'.'<br/>';
echo'<label for="rate">امتیاز این عملیات را ثبت نمایید: </label> <br />';
echo '<select name="vote">';
echo '<option value="عالی">عالی</option>';
echo '<option value="عالی">خوب</option>';
echo '<option value="عالی">متوسط</option>';
echo '<option value="عالی">بد</option>';
echo '</select>';
echo'<br/>';
echo '<input type="submit" name="submit" value="ارسال نظر شما"/>';
echo'<hr/>';
echo'<hr/>';
echo'</div>';
}
?>
这里我们说如果用户点击按钮,则向表发送信息。再一次,我说一条记录的所有东西都没问题,当我们有多条记录时出现问题,而我现在的问题是&#39;而#39;但我不知道如何解决这个问题。
<?php
if(isset($_POST['submit']))
{
$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 ="UPDATE $db_table
SET
customer_comment='" . mysql_escape_string($_POST['explain']) . "',
vote='" . mysql_escape_string($_POST['vote']) . "'
WHERE ind=ind";
$saved=mysql_query($ins );
mysql_close($con);
echo '<script language="javascript">';
echo 'alert("نظر شما با موفقیت ثبت شد")';
echo '</script>';
echo '<script>window.location.href = "action_perfomed_agree.php";</script>';
}
?>
这是一种具有3种形式的人的形式
发送
后,这是我的表格
如您所见,我们有重复记录,但customer_id = 37的地方没有问题,因为该用户只有一条记录。
表:
tablesite:
1 id_user int(11)
2 name varchar(128) utf8mb4_persian_ci
3 family varchar(128) utf8mb4_persian_ci
4 email varchar(64) utf8mb4_persian_ci
5 phone_number varchar(16) utf8mb4_persian_ci
6 username varchar(16) utf8mb4_persian_ci
7 password varchar(32) utf8mb4_persian_ci
8 confirmcode varchar(32) utf8mb4_persian_ci
关系
1 user_name varchar(255) utf8mb4_persian_ci
2 job_id int(255)
3 comments varchar(255)
4 user_id int(255)
RelationOfaction
1 service_provider_id int(20)
2 customer_id int(20)
3 ind int(20)
动作
1 job_id int(11)
2 service_provider_id int(10)
3 customer_id int(10)
4 date date
5 price int(255)
6 vote varchar(255) utf8mb4_persian_ci
7 service_provider_comment varchar(255) utf8mb4_persian_ci
8 customer_comment varchar(255)
9 ind int(10)
答案 0 :(得分:2)
我建议以自己的形式包装每个部分:
<?php
$id = $fgmembersite->UserID();
echo "$id";
$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("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET utf8");
$dbresult=mysql_query("SELECT tablesite.name,
tablesite.family,
tablesite.username,
tablesite.phone_number,
tablesite.email,
action.service_provider_comment,
action.price,
action.date,
job_list.job_name,
relationofaction.ind
FROM $db_table
INNER JOIN job_list
ON job_list.job_id=action.job_id
INNER JOIN relationofaction
ON relationofaction.ind=action.ind
INNER JOIN tablesite
ON tablesite.id_user=action.service_provider_id
AND action.customer_id='$id'", $con);
$i = 1;
while($amch=mysql_fetch_assoc($dbresult)){
echo "<form id='form_$i' method='post' action='{$_SERVER['PHP_SELF']}' accept-charset='UTF-8'>\r\n";
echo '<div dir="rtl">';
echo "نام خدمت دهنده: "."   ".$amch["name"]." ".$amch["family"]."   "."شماره تماس: ".$amch["phone_number"]."   "."ایمیل: ".$amch["email"].'<br>'
."شغل انجام شده: ".$amch["job_name"].'<br>'
."تاریخ انجام عملیات: ".$amch["date"].'<br>'
."هزینه ی کار: ".$amch["price"]." تومان".'<br>'
.$amch["service_provider_comment"].'<hr/>';
echo '<label for="explain">اگر توضیحاتی برای ارائه در این باره دارید، ارائه دهید</label> <br />';
echo '<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300"></textarea>'.'<br/>';
echo '<label for="rate">امتیاز این عملیات را ثبت نمایید: </label> <br />';
echo '<select name="vote">';
echo ' <option value="عالی">عالی</option>';
echo ' <option value="عالی">خوب</option>';
echo ' <option value="عالی">متوسط</option>';
echo ' <option value="عالی">بد</option>';
echo '</select>';
echo '<br/>';
echo '<input type="submit" name="submit" value="ارسال نظر شما"/>';
echo '<hr/>';
echo '<hr/>';
echo '</div>';
echo "</form>\r\n";
$i++;
}
?>
您将在此代码中找到许多小修补程序。这将导致许多表单,每个表单都有一个唯一的ID,发布到同一个地方。
答案 1 :(得分:1)
关于@Twisty的答案,我想提出你提交问题的最终解决方案。
首先,我们需要定义要更新的原始数据,因此您需要告诉您的更新语句要更新ind
。
为此,我们需要将ind
在提交表单中传递给更新语句,我们添加了一个隐藏的输入字段并传递出ind
这样的值。
<input type="hidden" name="ind" value="' . $amch["ind"] . '">;
接下来,我们需要通过添加以下内容来获取值并更新我们的数据:
($_POST['ind'])
所以最终解决方案将如下所示:
echo '</select>';
echo '<input type="hidden" name="ind" value="' . $amch["ind"] . '">'; //new line
echo '<br/>';
echo '<input type="submit" name="submit" value="ارسال نظر شما"/>';
echo '<hr/>';
echo '<hr/>';
并在您的更新声明中:
$ins = "UPDATE $db_table
SET
customer_comment='" . mysql_escape_string($_POST['explain']) . "',
vote='" . mysql_escape_string($_POST['vote']) . "'
WHERE ind=".($_POST['ind']); // to define the ind value
而且wala,它有效。
注意:
只是作为一个商品,我使用了@Twisty的更新代码及其最终解决方案。