0

私は質問に多くの問題を抱えているようですので、誰かが私を助けてくれれば本当に感謝しています.

私は現在プログラミングを学んでおり (初期段階であることを念頭に置いてください)、このミニ アプリケーションを自分で作成してさまざまなことを教えています。ユーザーが取引名と取引の説明をデータベースに追加できるように、フォームを作成する HTML ファイルがあります。

フォームの 2 つのテキストボックスに入力されたテキストがキャプチャされ、javascript 関数を介して JSON オブジェクトが作成されます

Javascript 関数は作成された PHP ファイルに読み込まれ、JSON オブジェクトを受け取り、次のように指定された値をデータベースに書き込みます。

<?php

$var1 = $_REQUEST['action']; // We dont need action for this tutorial, but in a complex code you need a way to determine ajax action nature
$jsonObject = json_decode($_REQUEST['outputJSON']); // Decode JSON object into readable PHP object

$name = $jsonObject->{'name'}; // Get name from object
$desc = $jsonObject->{'desc'}; // Get desc from object


mysql_connect("localhost","root","");  // Conect to mysql, first parameter is location, second is mysql username and a third one is a mysql password
@mysql_select_db("findadeal") or die( "Unable to select database"); // Connect to database called test

$query = "INSERT INTO deal (dname, description, restaurantid) VALUES ('$name' ,'$desc' '$username') WHERE $username=(Select restaurantid FROM restaurant where username = '$username')";
$result=mysql_query($query);
$num = mysql_numrows($result);

if($num != 0) {

    echo "true";

} else {

    echo "false"; 

}
?>

ここに私の問題があります。取引を追加できるこの HTML ファイルは、私が作成しているより大きなプロジェクトの一部です。ユーザーはすでにログインしており、セッションはすでに作成されています - HTML ファイルの先頭に挿入したミニ php ステートメントが "It Works" をエコーするため、これが機能することがわかっています。これは、ユーザーがログインしていて、詳細がまだ残っていることを意味します。配列内:

<?php
if( !isset( $_SESSION ) ){
 session_start();
echo "Whats Happening";
    }

if( isset( $_SESSION['username'] ) ){
  /* User is logged in */
  echo "IT WORKS!";
    } ?>

私ができないことと助けが必要なことはこれです:

取引データがデータベースに挿入されるとき、挿入されるフィールドは次のとおりです。

  1. dealid は自動実装されているので、何もする必要はありません
  2. ユーザーがフォームに情報を挿入した取引名である dname
  3. 再びユーザーがフォームに情報を挿入した説明
  4. ログインしたユーザーのIDであるrestaurantid

私が理解できないのは、セッション変数からレストラン ID を取得し、MYSQL ステートメントに含める方法を見つけることです。

以下の PHP ファイルの SQL ステートメントが間違っていることは承知していますが、問題に対する何らかのロジックを作成できるかどうかを確認するために、自分でそれをつなぎ合わせようとしていました。

平易な英語では、私がやろうとしているのは、セッション変数に保存されているユーザー名を取得してから、私が行く場所にSQLステートメントを作成することです:

  • 取引テーブルに名前、説明、レストラン ID を挿入します。ここで、レストラン ID はレストラン テーブルからのものであり、セッション変数からどのユーザー名がレストラン テーブル内のユーザー名と同じかを見つけることで取得できます。

そこから、他のテーブルからレストラン ID を取得したように、取引を挿入することができます。

これが理にかなっていることを願っています。私は何年もの間これを行ってきましたが、役に立ちませんでした! これが示されたら、修正や削除など、他の多くの領域に進むことができます。最初にセッションの一部を理解する必要があるだけです. 助けてくれてありがとう!!!

4

1 に答える 1

0

実際のコードを使用せずに、あなたを理解しようとするだけで:

$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS);

$sql = 'Select restaurantid FROM restaurant where username=:username';
$statement = $db->prepare($sql);
$statement->bindParam(':username', $_SESSION['username'], PDO::PARAM_STR);
$statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
if(!empty($result)) {
    // here is your restaurant id, you can use for the insert statement...
    $rID = $result['restaurantid'];
}
于 2013-02-16T17:29:42.490 に答える