2017-03-10 7 views
-1

各ユーザーのユーザーレコードを挿入するためのAndroidアプリがあります。各ユーザーは1日に2回しかデータをデータベースに入力できません。ユーザーが3回目にデータを入力しようとすると(Submitボタンをクリックすると)、新しいアクティビティ(Androidの場合)がメッセージと共に表示され、日付フィールド(TextView)を1日増分する必要があります。 1回のクリックごとに1日ごとに日付フィールドが表示されます。だから、私が試したのは、特定の日の各ユーザのMYSQLデータベースのデータ数を取得し、カウントが3より大きい場合、PHPスクリプトはecho文を返します。新しいアクティビティを表示します。MYSQLデータベースからデータを取得し、ボタンをクリックしてAndroidで検証する方法

<?php 
require "conn.php"; 
require "SalesLogin.php"; 

$enquiry = $_POST["enquiry"]; 
$retail = $_POST["retail"]; 
$collection = $_POST["collection"]; 
$booking = $_POST["booking"]; 
$evaluation = $_POST["evaluation"]; 
$test_drive = $_POST["test_drive"]; 
$home_visit = $_POST["home_visit"]; 
$user_name = $_POST["user_name"]; 
$update_date = $_POST["date"]; 
$absent = $_POST["absent"]; 


$timezone = new DateTimeZone("Asia/Kolkata"); 
$date = new DateTime(); 
$date->setTimezone($timezone); 
$time = $date->format('H:i:s A'); 


$sql = "UPDATE employee_details SET 
enquiry_sum = (SELECT SUM(enquiry) +'$enquiry' FROM (SELECT * FROM employee_details WHERE date = CURDATE() AND name = '$user_name') AS x) 
WHERE date = CURDATE() AND name = '$user_name'"; 
$res = $conn->query($sql); 

$check = "UPDATE employee_details SET enquiry_target_status = (SELECT IF (MAX(enquiry_sum) = 52, 'ACHIEVED', 'NOT ACHIEVED') FROM (SELECT * from employee_details WHERE date = CURDATE() AND name = '$user_name') AS Y) WHERE date = CURDATE() AND name = '$user_name'"; 
$insert_status = $conn->query($check); 


$miss_count = "UPDATE employee_details SET enquiry_target_missed_by = (SELECT (50 - MAX(enquiry_sum)) FROM (SELECT * from employee_details WHERE date = CURDATE() AND name = '$user_name') AS Z) WHERE date = CURDATE() AND name = '$user_name'"; 
$insert_status = $conn->query($miss_count); 


$mysql_qry1 = "INSERT INTO employee_details(enquiry,retail, 
collection,booking, evaluation, test_drive, home_visit, name, date,time,absent) values ('$enquiry','$retail','$collection','$booking','$evaluation','$test_drive', 
'$home_visit','$user_name','$update_date','$time','$absent');"; 

if($conn->query($mysql_qry1) === TRUE) 
    echo "Your details has been successfully inserted."; 

else 
    echo "Error: " .$mysql_qry1. "<br>" . $conn->error; 


if($update_date != $date){ 
$mysql_qry2 = "UPDATE employee_data SET last_updated_date = (DATE_ADD('$update_date', INTERVAL 1 DAY)) WHERE name = '$user_name';"; 
$conn->query($mysql_qry2); 
echo "Date changed," .$mysql_qry2; 
} 


$mysql_qry3 = "SELECT COUNT(*) from employee_details WHERE date = '$update_date' and name LIKE '$user_name';"; 
$conn->query($mysql_qry3); 
     if($mysl_qry3 <= 2) 
       { 
        echo "You can login."; 
       } 
     else 
       { 
        echo "You cannot login anymore for today."; 
      } 


$conn->close(); 
?> 

マイAsyncTaskのコードは次のとおりです:

@Override 
    protected void onPostExecute(String result) { 
     try { 
      if (result.contains("Welcome") && result.contains("Date")) { 
       String[] str = result.split("_"); 
       String name = str[1]; 

       String[] date = result.split(":"); 
       String upd_date = date[1]; 
       Intent intent = new Intent(context,InsertDataActivity.class); 
       intent.putExtra("username",name); 
       intent.putExtra("date",upd_date); 
       context.startActivity(intent); 
      } 
      else if (result.contains("Login failed.") && !(result.contains("Undefined"))) 

       Toast.makeText(context,"Invalid Crendentials.",Toast.LENGTH_LONG).show(); 

      else if (result.contains("You cannot login anymore for today.")) { 
       Log.i("Check",result); 
       Intent intent = new Intent(context,ThankYouActivity.class); 
       context.startActivity(intent); 

      } 

     } catch (NullPointerException e) { 

      Toast.makeText(context,"No Internet Connectivity found.Please connect to the internet first and then retry.",Toast.LENGTH_LONG).show(); 
     } 
     } 

しかし、私のコードは正常に動作していない

私のPHPスクリプトです。誰もがこれで私を助けてくれる?

答えて

0

下記のPHPスクリプトを使用して問題を解決しました。私は "AS"を使用して実行されるSQL出力にエイリアスを使用しませんでした。以下のスクリプトは正常に動作しており、望ましい結果が得られます。

<?php 
require "conn.php"; 
require "SalesLogin.php"; 

$enquiry = $_POST["enquiry"]; 
$retail = $_POST["retail"]; 
$collection = $_POST["collection"]; 
$booking = $_POST["booking"]; 
$evaluation = $_POST["evaluation"]; 
$test_drive = $_POST["test_drive"]; 
$home_visit = $_POST["home_visit"]; 
$user_name = $_POST["user_name"]; 
$update_date = $_POST["date"]; 
$absent = $_POST["absent"]; 


$timezone = new DateTimeZone("Asia/Kolkata"); 
$date = new DateTime(); 
$date->setTimezone($timezone); 
$time = $date->format('H:i:s A'); 


$sql = "UPDATE employee_details SET 
enquiry_sum = (SELECT SUM(enquiry) +'$enquiry' FROM (SELECT * FROM employee_details WHERE date = CURDATE() AND name = '$user_name') AS x) 
WHERE date = CURDATE() AND name = '$user_name'"; 
$res = $conn->query($sql); 

$check = "UPDATE employee_details SET enquiry_target_status = (SELECT IF (MAX(enquiry_sum) = 52, 'ACHIEVED', 'NOT ACHIEVED') FROM (SELECT * from employee_details WHERE date = CURDATE() AND name = '$user_name') AS Y) WHERE date = CURDATE() AND name = '$user_name'"; 
$insert_status = $conn->query($check); 


$miss_count = "UPDATE employee_details SET enquiry_target_missed_by = (SELECT (50 - MAX(enquiry_sum)) FROM (SELECT * from employee_details WHERE date = CURDATE() AND name = '$user_name') AS Z) WHERE date = CURDATE() AND name = '$user_name'"; 
$insert_status = $conn->query($miss_count); 


$mysql_qry1 = "INSERT INTO employee_details(enquiry,retail, 
collection,booking, evaluation, test_drive, home_visit, name, date,time,absent) values ('$enquiry','$retail','$collection','$booking','$evaluation','$test_drive', 
'$home_visit','$user_name','$update_date','$time','$absent');"; 

if($conn->query($mysql_qry1) === TRUE) 
    echo "Your details has been successfully inserted."; 

else 
    echo "Error: " .$mysql_qry1. "<br>" . $conn->error; 


if($update_date != $date){ 
$mysql_qry2 = "UPDATE employee_data SET last_updated_date = (DATE_ADD('$update_date', INTERVAL 1 DAY)) WHERE name = '$user_name';"; 
$conn->query($mysql_qry2); 
echo "Date changed," .$mysql_qry2; 
} 


$mysql_qry3 = "SELECT COUNT(*) AS count from employee_details WHERE date = '$update_date' and name LIKE '$user_name';"; 
$result1 = mysqli_query($conn,$mysql_qry3); 

         $row = mysqli_fetch_assoc($result1); 
         $count = $row['count']; 

         echo "Count: " .$count; 
     if($count <= 2) 
       { 
        echo "You can login."; 
       } 
     else 
       { 
        echo "You cannot login anymore for today."; 
      } 


$conn->close(); 
?> 
関連する問題