Сравните входные данные с другой таблицей - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть опция регистрации в разрабатываемом приложении, и для проверки того, кто может зарегистрироваться, я создал еще одну таблицу с именем ORDER.

В этой таблице Order есть два поля (имя и номер).

Регистрация подключена к таблице USERS, и я хочу сравнить имя и номер, вставленные в регистрацию, с данными, вставленнымив таблице ORDER.

Например:

Зарегистрироваться. Имя пользователя: test Пароль: test Имя: User Test Number: 12345

ORDER: Имя: User Test Number: 12345

Он может зарегистрировать регистрационную информацию только в таблице USER, если имя и номер находятся в таблице ORDER.

Вы можете мне помочь?

FirebaseDatabase database;
DatabaseReference Users, Order;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    database = FirebaseDatabase.getInstance();
    Users = database.getReference("Users");
    Order = database.getReference("Order");

    edtUser =(MaterialEditText) findViewById(R.id.edtUserName);
    edtPassword =(MaterialEditText)findViewById(R.id.edtPassword);

    btnSignIn= (Button)findViewById(R.id.btn_sign_in);
    btnSignUp= (Button)findViewById(R.id.btn_sign_up);

    btnSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showSignUpDiaolog();

        }
    });
    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            signIn(edtUser.getText().toString(),edtPassword.getText().toString());
        }
    });
}


private void signIn(final String user, final String pwd) {
    Users.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.child(user).exists())
            {
                if(!user.isEmpty())
                {
                    User login = dataSnapshot.child(user).getValue(User.class);
                    if (login.getPassword().equals(pwd))
                    {
                        Intent homeActivity = new Intent(MainActivity.this,Home.class);
                        Common.currentUser = login;
                        startActivity(homeActivity);
                        finish();
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this, "Password errada!", Toast.LENGTH_SHORT).show();
                    }}
                else
                {
                    Toast.makeText(MainActivity.this, "Introduza o utilizador!", Toast.LENGTH_SHORT).show();
                }
            }
            else
            {
                Toast.makeText(MainActivity.this, "Utilizador não existe!", Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void showSignUpDiaolog() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
    alertDialog.setTitle("Criação da conta:");
    alertDialog.setMessage("Preencher todos os campos!");

    LayoutInflater inflater = this.getLayoutInflater();
    View sign_up_layout = inflater.inflate(R.layout.sign_up_layout,null);

    edtNewUser = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewUserName);
    edtNewPassword = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewPassword);
    edtNewOrdem = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewOrdem);
    edtNewName = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewName);


    alertDialog.setView(sign_up_layout);
    alertDialog.setIcon(R.drawable.ic_account_circle_black_24dp);
    alertDialog.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.dismiss();

        }
    });
    alertDialog.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            final User user = new User (
                    edtNewUser.getText().toString(),
                    edtNewPassword.getText().toString(),
                    edtNewOrdem.getText().toString(),
                    edtNewName.getText().toString());


                Users.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot)
                {
                    String passwordvalid = edtNewPassword.getText().toString();
                    String usernamevalid = edtNewUser.getText().toString();


                    if (TextUtils.isEmpty(passwordvalid))
                    {
                        Toast.makeText(MainActivity.this, "Password não definida.", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    if (TextUtils.isEmpty(usernamevalid))
                    {
                        Toast.makeText(MainActivity.this, "Utilizador não definido.", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    if (passwordvalid.length() < 8)
                    {
                        Toast.makeText(MainActivity.this, "Password tem que conter no mínimo 8 caracteres.", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    if(dataSnapshot.child(user.getUserName()).exists())
                        Toast.makeText(MainActivity.this, "Utilizador já registado!", Toast.LENGTH_SHORT).show();
                    else
                    {
                        Users.child(user.getUserName())
                                .setValue(user);
                        Toast.makeText(MainActivity.this, "Registo efetuado!", Toast.LENGTH_SHORT).show();
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
            dialogInterface.dismiss();

        }
    });
    alertDialog.show();
}

}

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Таблицы

Как видите, я хочу проверить, зарегистрированы ли имя пользователя и имя в Таблице заказов.Если они не они не могут зарегистрироваться на столе Пользователи.Если они записаны в таблице пользователей и создайте учетную запись.

У меня есть список людей, которые могут зарегистрироваться в приложении, и я хочу контролировать эти два поля.

0 голосов
/ 01 февраля 2019

Для этого вы должны установить столбец имя пользователя как unique_key и не создавать другую таблицу.

Например, в PostgreSQL , если вы хотите создать таблицу:

CREATE TABLE users (
    id SERIAL,
    username varchar UNIQUE,
    password varchar,
    name varchar,
    test_number integer
);

Ограничение UNIQUE отклонит любое создание строки с существующим Имя пользователя .Для других СУБД синтаксис будет немного отличаться, но почти одинаков.

Добавить ID в ваши таблицы

У вас всегда должно быть id для каждой таблицы, потому чтовопросы эффективности и структуры.Идентификатор сделает строки уникальными независимо от других свойств, а также обеспечит более быстрый способ выполнения запросов JOIN.Идентификатор не зависит от данных, и вам не нужно беспокоиться о поиске строки по полю, которое может измениться или не измениться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...