2017-08-02 13 views
0

プログラミングの初心者として、私はphpコードで以下のフォームフィールドにdobから年齢を自動的に計算する小さなアプリケーションを構築するのにあなたの助けが必要です!それを達成する方法はありますか?javascriptでdobからの年齢を自動的に計算します

私のhtmlコードは次のとおりです。

mysqliのデータベースに接続する
<!DOCTYPE html> 
<html> 

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <title>form practice</title> 

</head> 

<body> 

    <div class="form2" id="form2" name="form2"> 

     <form action="php/form2.php" method="post" id="Personalinfo"> 

      <label for="fname">Name:</label> 
      <input type="text" id="fname" name="firstname" placeholder="Client 
     Name.."> 

      <label for="lname">Lastname:</label> 
      <input type="text" id="lname" name="lastname" placeholder="Client 
     Lastname.."> 

      <label for="dob">Birthday:</label> 
      <input type="text" id="dob" name="dob" placeholder="yyyy/mm/dd.."> 

      <label for="age">Age:</label> 
      <input type="text" id="age" name="age" placeholder="Client Age.."> 

      <input type="submit" name="submitForm2" value="Submit"> 

     </form> 
    </div> 

</body> 

</html> 

と私のPHPコード:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "testdb"; 

// Create connection 

$conn = new mysqli($servername, $username, $password, $dbname); 

// Check connection 

if ($conn->connect_error) 
{ 
    die("Connection failed: " . $conn->connect_error); 
} 

if (isset($_POST['submitForm2'])) 
{ 
    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $dob = $_POST['dob']; 
    $age = $_POST['age']; 
    $sql = "INSERT INTO info (firstname, lastname, dob, age) 
     VALUES ('{$firstname}', '{$lastname}', '{$dob}', '{$age}')"; 
    if ($conn->query($sql) === TRUE) 
    { 
     echo "New record created successfully"; 
    } 
    else 
    { 
     echo "Error: " . $sql . "<br />" . $conn->error; 
    } 
} 
else 
{ 
    echo "Are you sure you enter a firstname and the name of your html submit 
     is submitForm"; 
} 

$conn->close(); 
?> 

私は、インターネット上で検索し、DOBから年齢を計算する多くの例を見ましたが、私しましたageという名前のフォームフィールドに結果をネストする際に関連するものを見つけられず、データをデータベースに保持することができませんでした。

+0

おかげイヴァンカ! –

答えて

-1

一部の友人が私の答えに解決策を教えてくれましたが、残念ながら誰かがそれを消去しなければならないので、私はスクリプトをコピーするために解決策を教えています!このスクリプトを提供してくれてありがとうございました!

<head> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<title>form practice</title> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script> 
    $(document).ready(function(){ 

     $("#dob").change(function(){ 
      var value = $("#dob").val(); 
      var dob = new Date(value); 
      var today = new Date(); 
      var age = Math.floor((today-dob)/(365.25 * 24 * 60 * 60 * 1000)); 
      if(isNaN(age)) { 

      // will set 0 when value will be NaN 
      age=0; 

      } 
      else{ 
       age=age; 
      } 
      $('#age').val(age); 

     }); 

    }); 
    </script> 
</head> 

<body> 

<div class="form2" id="form2" name="form2"> 

<form action="php/form2.php" method="post" id="Personalinfo"> 

<label for="fname">Name:</label> 
<input type="text" id="fname" name="firstname" placeholder="Client 
Name.."> 

<label for="lname">Lastname:</label> 
<input type="text" id="lname" name="lastname" placeholder="Client 
Lastname.."> 

<label for="dob">Birthday:</label> 
<input type="text" id="dob" name="dob" placeholder="yyyy/mm/dd.."> 

<label for="age">Age:</label> 
<input type="text" id="age" name="age" placeholder="Client Age.."> 

<input type="submit" name="submitForm2" value="Submit"> 


</form> 
</div> 

</body> 
</html> 
+0

PHPとMySQLを使用してあなたの質問が述べられていますが、あなたの答えはこれらのものを使用せず、Javascriptを使用します。 – Martin

+0

マーティンの答えは私のものではありません!他の誰かが、私が求めていたことをする別の方法としてスクリプトを与えました。他の人のために、私はちょうど他の人の答えを再現するのに役立ちます!ありがとう –

+0

しかし、あなたはPHP/MySQLについての質問をしていますが、[あなたはあなたがしたい答えがJavascriptであると言っています!実際に欲しいものを明確にし、実際に達成しようとしています!誰の答えは問題ではありませんが、重要なのは、あなたが質問した実際の質問に直接関係がないにもかかわらず、この回答が必要なものであるということです。 – Martin

0

あなたは、私が47歳以上、今日生きている人々がいることは良い権限にそれを持って365.25

によって日数を分割することによって、年齢の良好な近似値を得ることができます - ので、あなたにPHPの時間値を使用することはできません生年月日を保存します(32ビットシステムで実行している場合は、2038年以降に問題が発生します)。したがって、私はデータベースで数学をすることをお勧めします。実際、MySQLのマニュアルのthe very first exampleは、まさにこの問題を示している(そして、この方法は、あなたは365.25で割るときに作成丸めオフセットの問題によって影響を受けない):

SELECT name, birth, CURDATE(), 
TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age 
FROM pet; 

しかし、なぜあなたは、データベース内の年齢をまったく保存されています?将来的には間違っています。生年月日がある場合は、データを取得するときに計算することができます。

+0

ありがとうございました!本当に私を助けました! –

+0

答えとしてマークすることを忘れないでください。 – KaoriYui

0
  • 1)あなたは、PHP DateTimeクラスを使用することにしたいです。あなたは2つのオブジェクトを作成します.1つは生年月日、もう1つは現在のものです。次に2つのオブジェクトを比較します。

    タイムゾーンロケール(これは完全に可能ですが、このQ & Aの範囲を超えています)を掘り下げる必要はないという前提で、これは正確な結果をもたらします。

    のDateTimeクラス例:

    (PHP 5.6。29)

    $now = new DateTime(); 
    
    // Note your SQL field should be a `DATE` column 
    // and formatted YYYY-MM-DD 
    // assumed in this example $sqlData['dob'] = "2015-01-10"; 
    
    $birthday = new DateTime($sqlData['dob']); 
    $age = $now->diff($birthday); 
    // 
    print "person is ".$age['y']." years old."; 
    

    $時代の全出力は以下の通りですprint_r($age):Symcbeanで述べたように

    DateInterval Object 
    (
        [y] => 2 
        [m] => 6 
        [d] => 23 
        [h] => 5 
        [i] => 34 
        [s] => 11 
        [days] => 935 
    ) 
    

  • 2)、あなたは本当に「ドン必要とする(そして、おそらくそうではない)、年齢を追加するrsonを次のようにデータベースに追加します。

    今後、間違っています。生年月日がある場合は、データを取得するときに計算することができます。

    からsymcbean


  • 3)あなたは、PHPで、MySQLの相互作用志向のオブジェクトを使用するためのポジティブマークを取得している間、 SQLインジェクションと潜在的なデータベース濫用の対象になります。 PHP変数を直接SQLに挿入するのではなく、Using prepared statements and parameterized queriesになります。悪いPHPの習慣を学ぶ前に、これをしましょう!この計算please read this answer to a similar questionを解決するためのMySQLのアプローチについて

  • 4)。

出典:

+0

ありがとうたくさんの! –

+0

@ThanosZacharias便利な場合はこの答えを自由に感じる ';-)' – Martin

関連する問題