2012-01-24 13 views
0

私は社会科学の実験に使用するウェブサイトの構築に取り組んでいます。フォームを完了すると、ユーザーに2つの治療が割り当てられます。すべての治療が同じように応答されるように、私は、最も少ない数の応答を有する治療をユーザに割り当てたいと思う。PHP/MySQLカテゴリが最もレスポンスの少ないカテゴリに割り当てる

処置が選択された後、スクリプトは応答フィールドに+1を加え、それに応じてデータベースを更新し、割り当てられた処置でユーザーのレコードを更新します。

この後、ユーザーは割り当てられた "treat1"に応じてページに送信されます。

私はDreamweaverが構文エラーを与えていないと私は実行時に

<?php 

session_start(); 

//Connect to Database 
$con = mysql_connect("db.host.com","user","password"); 
if (!$con) 
    { 
    die('Could Not Connect: ' .mysql_error()); 
    } 


//Select Database 
mysql_select_db("myDB", $con); 


//Get treatment id's and store in SESSION variables 
$_SESSION['treat1'] = mysql_query("SELECT TOP 1 treat1_id FROM treatment1 ORDER BY response ASC"); 
$_SESSION['treat2'] = mysql_query("SELECT TOP 1 treat2_id FROM treatment2 ORDER BY response ASC"); 


//Add 1 to response field in treatment databases 
mysql_query("UPDATE treatment1 SET RESPONSE='RESPONSE + 1' WHERE treat1_id = ".$_SESSION['treat1'].""); 
mysql_query("UPDATE treatment2 SET RESPONSE='RESPONSE + 1' WHERE treat2_id = ".$_SESSION['treat2'].""); 


//Update user record with assigned treatments 
mysql_query("UPDATE user SET TREAT1=".$_SESSION['treat1']." , TREAT2=".$_SESSION['treat2']." WHERE email = '[email protected]'"); 

//Send user to page based on treat1_id 
if ($_SESSION['treat1'] == 0) 
     $url = 'treatment0.html'; 
elseif ($_SESSION['treat1'] == 1) 
    $url = 'treatment1.html'; 
else 
    $url = 'treatment2.html';   

    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">'; 


//Close connection 
mysql_close($con); 


?> 

をtreatment0.htmlするようにユーザーをリダイレクトする以外に、しかし、すべての機能を実行していないよう、次のコードを書かれていますスクリプトを実行してもエラーは発生しませんが、期待していた機能は実行されません。

ご協力いただければ幸いです。

+0

なぜ治療IDをセッションに保存していますか? – bowlerae

+0

私はPHPには新しく、後で必要になるので、データベースに再度クエリを出すのではなくセッションに保存する方が良いと思っていました。 –

+0

OKセッションを続ける誰かがより良い方法を思い出さない限り、私は推測します。クエリの最後に$ conを入れてみてください。例: 'mysql_query(" QUERY CONTENT "、$ con);' – bowlerae

答えて

0

するmysql_queryは、最初の場所でリソースまたはFALSEを返さませんか?

PHP.net description

+0

ありがとうございました。私はmysql_fetch_arrayにクエリの結果を渡すことで今作業しています。 –

0
$treatment1 = mysql_query("SELECT id FROM treatment1 ORDER BY response ASC LIMIT 1"); 
$treatment2 = mysql_query("SELECT id FROM treatment2 ORDER BY response ASC LIMIT 1"); 


//Add 1 to response field in treatment databases 
mysql_query("UPDATE treatment1 SET RESPONSE='RESPONSE + 1' WHERE treat1_id = $treatment1"); 
mysql_query("UPDATE treatment2 SET RESPONSE='RESPONSE + 1' WHERE treat2_id = $treatment2"); 


//Update user record with assigned treatments 
mysql_query("UPDATE user SET TREAT1 = '$treatment1' , TREAT2 = '$treatment2' WHERE email = '[email protected]'"); 

//Send user to page based on treat1_id 
if ($treament1 == 0) 
     $url = 'treatment0.html'; 
elseif ($treatment == 1) 
    $url = 'treatment1.html'; 
else 
    $url = 'treatment2.html';   

    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">'; 
関連する問題