2015-07-07 5 views
0

Я создаю приложение, которое позволит пользователям регистрироваться с их именами, возрастом и т. Д. Я сохраняю всю эту информацию в классе User, который выглядит следующим образом.Хранение состояния андроида в базе данных SQL

public class User { 

String name, username, password, phoneNumber; 
int age; 

//constructor 
public User(String _name, String _username, String _password, String _phoneNumber, int _age){ 
    name = _name; 
    username = _username; 
    password = _password; 
    phoneNumber = _phoneNumber; 
    age = _age; 
} 
} 

Я отправляю эти данные в скрипт PHP для хранения в базе данных SQL. Этот код выглядит следующим образом:

protected Void doInBackground(Void... params) { 
      ArrayList<NameValuePair> dataToSend = new ArrayList<>(); 
      dataToSend.add(new BasicNameValuePair("name", user.name)); 
      dataToSend.add(new BasicNameValuePair("age", user.age + "")); 
      dataToSend.add(new BasicNameValuePair("username", user.username)); 
      dataToSend.add(new BasicNameValuePair("password", user.password)); 
      dataToSend.add(new BasicNameValuePair("phoneNumber", user.phoneNumber)); 

     HttpParams httpRequestParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT); 
     HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT); 

     HttpClient client = new DefaultHttpClient(httpRequestParams); 
     HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php"); 

     try{ 
      post.setEntity(new UrlEncodedFormEntity(dataToSend)); 
      client.execute(post); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     return null; 
    } 

Теперь я хочу, чтобы создать около 10 флажков, состояние которых (проверено против бесконтрольно) можно хранить. Я знаю, что я мог бы создать кучу логических значений как часть класса User, но это кажется громоздкой и плохой практикой. Поэтому мой вопрос заключается в том, как лучше хранить данные CheckBox в базе данных SQL?

Для справки, PHP скрипт выглядит следующим образом:

<?php 
$con = mysqli_connect("localhost", "root", "", "is_clients"); 

$name = $_POST["name"]; 
$age = $_POST["age"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
$phoneNumber = $_POST["phoneNumber"]; 

$statement = mysqli_prepare($con, "INSERT INTO user (name, age, username, password, phoneNumber) VALUES (?, ?, ?, ?, ?) "); 
mysqli_stmt_bind_param($statement, "sisss", $name, $age, $username, $password, $phoneNumber); 
mysqli_stmt_execute($statement); 

mysqli_stmt_close($statement); 

mysqli_close($con); 

?> 
+0

Как насчет того, чтобы дать случайное значение, скажем 1, если его проверили и отправили его как POST, на php, если установлен POST, сохраните его, как отмечено, если POST не установлен, а затем сохраните его как не проверенный. – mrahmat

+0

@mrahmat. Мой вопрос: реализовать это изнутри Java. Должен ли я создать совершенно новый класс, называемый CheckBoxData, например? и как я могу отправить это на PHP-скрипт? Я бы использовал отдельный PHP-скрипт? или я бы изменил свой текущий скрипт, чтобы принять статус флажка? – Johnny

ответ

1

Вы можете передать массив в PHP, каждый элемент массива может быть значением флажка. В PHP вы можете сделать это, используя переменную с скобками типа checkBoxesArr [], чтобы вы могли использовать одну и ту же переменную, и каждое вхождение было бы другим элементом в массиве.

Таким образом, в Java (checkBoxXXXValue может быть двоичным или булево):

dataToSend.add(new BasicNameValuePair("checkBoxArr[]", checkBoxOneValue)); 
dataToSend.add(new BasicNameValuePair("checkBoxArr[]", checkBoxTwoValue)); 
dataToSend.add(new BasicNameValuePair("checkBoxArr[]", checkBoxThreeValue)); 

PHP:

$checkBoxArr = $_POST['checkBoxArr']; 
print_r($checkBoxArr); 

Это то, что вы хотели?

+0

Это очень помогает. Так что мне нужно создать переменную POST для каждого элемента массива? – Johnny

+0

Да, переменная post для каждого элемента с тем же именем и не забудьте скобки. В качестве альтернативы вы можете объединить все значения в одну строку и отправить ее на PHP, который затем взорвется/разложит их обратно в массив, но использование поддержки собственного массива в $ _POST делает большую часть работы для вас. – asiop

Смежные вопросы