单个表单上的if语句中的单个字段上的多个更新查询提交

时间:2013-12-19 09:37:58

标签: php mysql forms

我在做什么:

我向用户提供了进度条,当用户填写/清空表单中的字段+/- 10%时,该进度条会增加或减少,当用户提交表单时,会更新到数据库。此进度条向用户暗示用户完成了多少百分比配置文件。

我面临的问题是:

我提供了多个更新查询,只要满足if语句就会运行。所有的if语句和查询都正常工作,因为我已经检查过了。但是数据库中进度条字段的值仅更新一次,要么在用户填充字段时增加,要么在用户清空字段时减少。 如果在这种情况下所有字段中的用户更新也增加或减少10%

,该怎么办?

这是我的代码:

<?
 include('includes/include.inc.php');
 protect_seeker_page();

 $loginLine=mysql_fetch_array(mysql_query
      ("select * from tb_user_login where   user_login_id='$_SESSION[SEEKER_ID]'"));
 $userLine=mysql_fetch_array(mysql_query
      ("select * from tb_user where user_login_id='$_SESSION[SEEKER_ID]'"));
 $metadataLine=mysql_fetch_array(mysql_query
      ("select * from tb_user_metadata where user_login_id='$_SESSION[SEEKER_ID]'"));


  $company=$userLine['user_progress']+10;
  $company2=$userLine['user_progress']-10;

  $skill=$userLine['user_progress']+10;
  $skill2=$userLine['user_progress']-10;

  $ind=$userLine['user_progress']+10;
  $ind2=$userLine['user_progress']-10;


  $resume=$userLine['user_progress']+10;
  $resume2=$userLine['user_progress']-10;

  if($_POST['Submit']=='Update'){

 if($userLine['user_company_name']=="" and $_POST['user_company_name']!=""){
 mysql_query
     ("update tb_user set user_progress='".$company."' 
         where user_login_id='$_SESSION[SEEKER_ID]'"); }

    if($userLine['user_skills_id']=="" and $_POST['user_skills']!="")
      {
 mysql_query("update tb_user set user_progress='".$skill."' 
      where user_login_id='$_SESSION[SEEKER_ID]'"); }

    if($userLine['user_resume_title']=="" and $_POST['user_resume_title']!=""){
 mysql_query("update tb_user set user_progress='".$resume."' 
      where user_login_id='$_SESSION[SEEKER_ID]'"); }
 if($userLine['user_industry_id']==0 and $_POST['industry_name']!=""){
echo mysql_query("update tb_user set user_progress='".$ind."' 
      where user_login_id='$_SESSION[SEEKER_ID]'"); }




if($_POST['user_company_name']=="" and $userLine['user_company_name']!=""){
mysql_query("update tb_user set user_progress='".$company2."' 
    where user_login_id='$_SESSION[SEEKER_ID]'");   }

if($_POST['user_skills']=="" and $userLine['user_skills_id']!=""){
    mysql_query("update tb_user set user_progress='".$skill2."' 
      where user_login_id='$_SESSION[SEEKER_ID]'"); }

if($_POST['user_resume_title']=="" and $userLine['user_resume_title']!=""){
mysql_query("update tb_user set user_progress='".$resume2."'
          where user_login_id='$_SESSION[SEEKER_ID]'"); }
if($_POST['industry_name']=="" and $userLine['user_industry_id']!=0){
mysql_query("update tb_user set user_progress='".$ind2."'
         where user_login_id='$_SESSION[SEEKER_ID]'");  }



        }


       ?>

1 个答案:

答案 0 :(得分:1)

使用以下代码:

$progress = $userLine['user_progress'];

  if($_POST['Submit']=='Update'){

  if($userLine['user_company_name']=="" and $_POST['user_company_name']!=""){
     $progress +=10;
  }

  if($userLine['user_skills_id']=="" and $_POST['user_skills']!=""){
     $progress +=10;
  }

  if($userLine['user_resume_title']=="" and $_POST['user_resume_title']!=""){
      $progress +=10;
  }
  if($userLine['user_industry_id']==0 and $_POST['industry_name']!=""){
      $progress +=10; 
  }

  if($_POST['user_company_name']=="" and $userLine['user_company_name']!=""){
    $progress -=10;
  }

  if($_POST['user_skills']=="" and $userLine['user_skills_id']!=""){
     $progress -=10;
  }

  if($_POST['user_resume_title']=="" and $userLine['user_resume_title']!=""){
      $progress -=10;
  }
  if($_POST['industry_name']=="" and $userLine['user_industry_id']!=0){
     $progress -=10;
  }
  mysql_query("update tb_user set user_progress='".$progress."'
         where user_login_id='$_SESSION[SEEKER_ID]'");  
  }

在您的代码中,您总是添加+/- 10,其当前值存在于表中,因此它总是添加+/- 10而不是+/- 20和/ -30,所以没有。所以你需要像我建议的那样使用它。

  

注意:不要使用mysql_ *,因为它已被弃用   始终使用mysqli_ *或PDO。