当记录多于一个PHP时插入所有单元格

时间:2015-11-05 17:02:41

标签: php mysql

这是我的大计划!

  

注意:所有代码都在一页中。

朋友们,一切都还可以,但问题出现在'而且'当我有多个记录时。

  

这里我们连接到数据库并获取有关获得其他用户服务的用户的信息。

<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 "نام خدمت دهنده: "."&nbsp&nbsp&nbsp".$amch["name"]." ".$amch["family"]."&nbsp&nbsp&nbsp"."شماره تماس: ".$amch["phone_number"]."&nbsp&nbsp&nbsp"."ایمیل: ".$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种形式的人的形式

enter image description here

  

发送

后,这是我的表格

enter image description here

如您所见,我们有重复记录,但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)

2 个答案:

答案 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 "نام خدمت دهنده: "."&nbsp&nbsp&nbsp".$amch["name"]." ".$amch["family"]."&nbsp&nbsp&nbsp"."شماره تماس: ".$amch["phone_number"]."&nbsp&nbsp&nbsp"."ایمیل: ".$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的更新代码及其最终解决方案。