Вопрос:

Как получить данные из базы данных MYSQL и выполнить проверку в Android по нажатию кнопки

php android mysql

84 просмотра

1 ответ

12 Репутация автора

У меня есть приложение для Android, которое используется для вставки записей о пользователях для каждого пользователя. Каждый пользователь может вводить данные в базу данных только 2 раза в день. Если пользователь пытается ввести данные в третий раз (нажмите кнопку «Отправить»), новое сообщение (в Android) будет показано с сообщением, а поле даты (TextView) должно быть увеличено на 1 день. Я могу добавить поле даты по 1 дню на каждый клик. Итак, я попытался получить количество данных в базе данных MYSQL каждого пользователя за определенный день, и если число больше 3, то PHP Script вернет эхо-оператор, согласно которому Async Task в Anroid будет функционировать и показывать новую активность.

Мой PHP-скрипт:

   <?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();
        }
        }

Но мой код не работает должным образом. Может кто-нибудь помочь мне с этим?

Автор: Pranami Источник Размещён: 10.03.2017 10:15

Ответы (1)


0 плюса

12 Репутация автора

Решение

Я решил проблему с помощью приведенного ниже скрипта PHP. Я не использовал псевдоним для вывода SQL, который делается с помощью «AS». Приведенный ниже скрипт работает нормально и дает желаемый результат.

<?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();
?>
Автор: Pranami Размещён: 10.03.2017 01:08
Вопросы из категории :
32x32