1
時間を分、秒、午前/午後に分けて、データベースにstarttime(varchar)
のように1:00 pmとして保存します。 phpの文字列から時間、分、秒、am/pmをフェッチする方法は?
php
で時間、分、秒、AM/PMに開始時刻を分離する、と私は誰もがこれを行うために私を助けるactivity.can Androidにそれらを送信する必要があります。
この私のPHPコード
<?php
error_reporting(0);
require "init.php";
$name = $_POST["name"];
$password = $_POST["password"];
$sql = "SELECT * FROM `user_info` WHERE `name`='".$name."' AND `password`='".$password."';";
$result = mysqli_query($con, $sql);
$response = array();
while($row = mysqli_fetch_array($result)){
//$response = array("id"=>$row[0],"name"=>$row[1],"password"=>$row[2],"email"=>$row[3],"ScheduleDate"=>$row[4],"StartTime"=>$row[5],"Endtime"=>$row[6],"Hours"=>$row[7]);
$response = array("id"=>$row[0],"StartTime"=>$row[5],"Endtime"=>$row[6],"Hours"=>$row[7]);
}
echo json_encode(array("user_data"=>$response));
?>
Androidのアクティビティコード
package com.example.myapplication;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
EditText name, password;
String Name, Password;
Context ctx=this;
String NAME=null, PASSWORD=null, EMAIL=null,ScheduleDate=null,StartTime=null,Endtime=null,Hours=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = (EditText) findViewById(R.id.main_name);
password = (EditText) findViewById(R.id.main_password);
}
public void main_login(View v){
Name = name.getText().toString();
Password = password.getText().toString();
BackGround b = new BackGround();
b.execute(Name, Password);
}
class BackGround extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String name = params[0];
String password = params[1];
String data="";
int tmp;
try {
URL url = new URL("http://localhost/sample/loo/text.php");
String urlParams = "name="+name+"&password="+password;
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoOutput(true);
OutputStream os = httpURLConnection.getOutputStream();
os.write(urlParams.getBytes());
os.flush();
os.close();
InputStream is = httpURLConnection.getInputStream();
while((tmp=is.read())!=-1){
data+= (char)tmp;
}
is.close();
httpURLConnection.disconnect();
return data;
} catch (MalformedURLException e) {
e.printStackTrace();
return "Exception: "+e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return "Exception: "+e.getMessage();
}
}
@Override
protected void onPostExecute(String s) {
String err=null;
try {
JSONObject root = new JSONObject(s);
JSONObject user_data = root.getJSONObject("user_data");
NAME = user_data.getString("name");
PASSWORD = user_data.getString("password");
EMAIL = user_data.getString("email");
ScheduleDate = user_data.getString("ScheduleDate");
StartTime = user_data.getString("StartTime");
Endtime = user_data.getString("Endtime");
Hours = user_data.getString("Hours");
} catch (JSONException e) {
e.printStackTrace();
err = "Exception: "+e.getMessage();
}
Intent i = new Intent(ctx, Home.class);
i.putExtra("name", NAME);
i.putExtra("password", PASSWORD);
i.putExtra("email", EMAIL);
i.putExtra("ScheduleDate", ScheduleDate);
i.putExtra("StartTime", StartTime);
i.putExtra("Endtime", Endtime);
i.putExtra("Hours", Hours);
i.putExtra("err", err);
startActivity(i);
}
}
}
私は一歩踏み込んで、StartTimeを文字列ではなくDateTimeフィールドに保存できるかどうかを尋ねます。その代わりに、保存するデータを使いやすい形式で前処理します。 – burnttoast11
はい、先生、しかし、これだけのようなデータベースを作成して、varcharにstarttimeとendtimeを保存していますので、私はそれをどうやって分離するのですか? –
これは、ユーザーが「StartTime」フィールドに必要なものを置くことができるように思われるため、やりにくくなる可能性があります。 [よくある質問](https://stackoverflow.com/questions/23422915/create-date-time-when-the-format-is-unknown)をチェックして、多くの一般的な日付の時刻文字列を変換する方法を確認してください。それはすべてのケースをカバーするわけではありませんが、それはスタートです。 – burnttoast11