2017-11-13 2 views
-1

ログイン後、従業員は毎日の製品販売を更新する必要があります。その目的のために、私は登録とデイリーセールスと呼ばれる02テーブルを作った。テーブル登録は、ユーザのログインのためのユーザIDとパスワードを確認し、 'デイリーセールス'テーブルに毎日の売上を入力するためのリンクを有する。ログインしているユーザーのuserIDを 'registration'テーブルから 'dailysales'テーブルに自動的に挿入するにはどうすればいいですか?注:表「デイリーセールス」の従業員も、html形式の製品の毎日の販売を行わなければなりません。以下のコードでは、ログインしたユーザーのユーザーIDとユーザー名を、製品のエントリと共に自動的に追加することができます。 dailysalesをコードIDに関する従業員の日単位の売上申請書

は下の通りです: -

<?php 
require('config.php'); 

//Start the Session 
session_start(); 

if((isset($_POST['diaper']) && !empty($_POST['diaper'])) 
&& (isset($_POST['babylotion']) && !empty($_POST['babylotion'])) 
&& (isset($_POST['nfacewash']) && !empty($_POST['nfacewash'])) 
&& (isset($_POST['facewash']) && !empty($_POST['facewash'])) 
&& (isset($_POST['hremover']) && !empty($_POST['hremover']))){ 
$Diaper = $_POST ['diaper']; 
$BabyLotion = $_POST ['babylotion']; 
$Neem_fw = $_POST ['nfacewash']; 
$Facewash = $_POST ['facewash']; 
$Hair_remover = $_POST ['hremover']; 
} 
$sql= "INSERT INTO dailyrecord (babydiaper,babylotion,hairremover,neemfw,neetfw) VALUES ('$Diaper','$BabyLotion','$Neem_fw','$Facewash','$Hair_remover')"; 

if (mysqli_query ($connection, $sql)){ 
    echo '<script>alert("Congratulations! You Have Successfully added your sale!");</script>'; 
    } 
else{ 
     echo '<script>alert("Sorry! Please fill the fields marked with *!");</script>'; 


    } 

?> 

ログイン用のコーディングは下の通りです: -

あなたの毎日の売上コードで
<?php 

//Start the Session 
session_start(); 
require('config.php'); 

// If the form is submitted or not. 
// If the form is submitted 
if (isset($_POST['id']) and isset($_POST['password'])){ 
// Assigning posted values to variables. 
$E_id = $_POST['id']; 
$P_word = $_POST['password']; 

// Check if username is empty 
    if(empty(trim($_POST["id"]))){ 
     $username_err = 'Please enter username.'; 
    } else{ 
     $U_name = trim($_POST["id"]); 
    } 

    // Check if password is empty 
    if(empty(trim($_POST['password']))){ 
     $password_err = 'Please enter your password.'; 
    } else{ 
     $P_word = trim($_POST['password']); 
    } 

// Checking the values are existing in the database or not 
$query = "SELECT * FROM registeration WHERE employee_id='$E_id' and password='$P_word'"; 

$result = mysqli_query($connection, $query); 
$count = mysqli_num_rows($result); 
// If the posted values are equal to the database values, then session will be created for the user. 
if ($count == 1){ 
$_SESSION['id'] = $E_id; 
}else{ 
//If the login credentials doesn't match, he will be shown with an error message. 
$fmsg = "Invalid Login Credentials."; 
} 
} 
//if the user is logged in Greets the user with message 
if (isset($_SESSION['id'])){ 
$E_id = $_SESSION['id']; 
echo "<center><table border='2' style='background-color:#FFFFFF;border-collapse:collapse;border:2px solid #6699FF;color:#000000;width:60%'> 
<tr> 
<th>Distributor</th> 
<th>Designation</th> 
<th>City</th> 
<th>Visiting Area</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) 
{ 
echo "<tr\t\t\t>"; 
echo "<td>" . $row['emp_name'] . "&nbsp". $row['f_name'] . "</td>"; 
echo "<td>" . $row['designation'] . "</td>"; 
echo "<td>" . $row['city'] . "</td>"; 
echo "<td>" . $row['varea'] . "</td>"; 
echo "</tr>"; 
} 
echo "</center></table>"; 
echo "<br>"; 
echo "<a href='logout.php'>Logout</a>"; 
} 
else{ 

echo '<center>Invalied Username or Password</center>'; 
} 
?> 
+1

これは 'sql-server'と何か関係がありますか、これは単にmysqlですか?また、あなたの質問は 'dailysales'を指していますが、sqlは' dailyrecord'と呼ばれるテーブルを提案しています – RamRaider

答えて

0

は、あなたがIDを取得するために$_SESSION['id']を使用することができます

$id=$_SESSION['id']; 

$sqlでご利用いただけます。あなたは、あなたの$ sqlを

+0

私はあなたの提案を使用しました。しかし、$ id = $ _ SESSION ['id'];を追加した後。と$ sqlのステートメントは、すべてのデータをテーブルに挿入していますが、idカラムの下のidはログインしているユーザのIDを表示していません。それは0を示しています。 – Akhtar

+0

IDが整数値の場合、** VALUES( '$ id'、 '$ Diaper'、**)のIDの引用符を削除する必要があります。** VALUES($ id、 '$ Diaper' 、** – nacho

+0

実際に$ id = $ _ SESSION ['id'];を私のコードに入れたいのですか?session_start()の直後かif文ブロックかif文の後に置くことができますか?$ id = $ _SESSION ['id']; session_start()の直後で、引用符を削除すると、 '!'とマークされたフィールドを記入してください(これはif(mysqli_query($ connection、$ sql))の部分です)。 $のSQLが機能していない引用符を削除した後に意味 – Akhtar

0
のSQLインジェクションを防ぐために準備されたステートメントを使用する必要があり、とにかく
$sql= "INSERT INTO dailyrecord (id,babydiaper,babylotion,hairremover,neemfw,neetfw) VALUES ($id,'$Diaper','$BabyLotion','$Neem_fw','$Facewash','$Hair_remover')"; 

(その両方のidのは同じである)あなたの registerationテーブルに外部キーを使用して dailyrecordテーブル内の列 idを作成する必要があります

ユーザーは、ログインに成功した後でレコードを追加する機会が得られるだけなので、セールス・レコードに挿入するためのIDを持つセッション変数があります。 dailyrecordまたはdailysalesテーブル(?which?)には、employee_idというユーザーIDの列があると仮定すると、このようなものを試すことができます。

<?php 

    require('config.php'); 
    session_start(); 

    $babydiaper = !empty($_POST['diaper']) ? $_POST['diaper'] : false; 
    $babylotion = !empty($_POST['babylotion']) ? $_POST['babylotion'] : false; 
    $neemfw = !empty($_POST['nfacewash']) ? $_POST['nfacewash'] : false; 
    $neetfw = !empty($_POST['facewash']) ? $_POST['facewash'] : false; 
    $hairremover = !empty($_POST['hremover']) ? $_POST['hremover'] : false; 

    if($babydiaper && $babylotion && $neemfw && $neetfw && $hairremover && isset($_SESSION['id'])){ 

     $sql='insert into `dailyrecord` (`employee_id`, `babydiaper`, `babylotion`, `hairremover`, `neemfw`, `neetfw`) values (?,?,?,?,?,?)'; 
     $stmt=$connection->prepare($sql); 

     if($stmt){ 

      $id=$_SESSION['id']; 
      $stmt->bind_param('isssss', $id, $babydiaper, $babylotion, $hairremover, $neemfw, $neetfw); 

      $message = $stmt->execute() ? 'Congratulations - the sale was added' : 'Bogus - the sale could not be added'; 
      $stmt->close(); 
      $connection->close(); 


     } else { 
      $message='Sorry - there was a database problem. Please contact the administrator'; 
     } 
    } else { 
     $message='One of more fields was empty...'; 
    } 

    echo "<script>alert('$message');</script>"; 
?> 
+0

をクエリ$でsql = 'insert into '日常記録'( 'employee_id'、' babydiaper'、 'babylotion'、' hairremover'、 'neemfw'、' neetfw')の値(?、?、?、?、?このような値は(?、?、?、?、?、?)のままです。もし私が私がbabydiaper、babydiaper、$ babylotionなどのように置くべきものを知っていないなら、employee_idに対して何を置くべきでしょうか? – Akhtar

+0

これは、私はこのコードを使用しているので..それは '1つ以上のフィールドが空だった' ..しかし、私は$ SQLにクエリを変更している場合= "INSERT INTO dailyrecord(employee_id、babydiaper、babylotion、hairremover、 ( '$ Diaper'、 '$ BabyLotion'、 '$ Neem_fw'、 '$ Facewash'、 '$ Hair_remover') ";結果は同じです – Akhtar

+0

'?'は' prepared statement'内のプレースホルダであり、 '? 'のままにしておかなければなりません。なぜなら、あなたはSQLインジェクション攻撃のコードを開くSQLステートメント内に変数を直接埋め込むからです。上のコメントのクエリには、パラメータ/変数が少なすぎるため、失敗しました。答えに挙げた最初のものは、 'employee_id'とみなされます – RamRaider

関連する問題