2016-10-11 6 views
1

私は、$ j変数を参照するたびに、実際にはそれを行う関数に代入されるので、意味をなさないということが問題です。私はちょうどプログラマーがブロックしているかもしれませんが、どのようにして乱数を生成し、変更しない変数に割り当てることができますか?(PHP)変数にランダム関数を代入するにはどうしたらいいですか?私の変数はいつでも変更を続けます。

ありがとうございます!

global $wpdb; 

$j = rand(); 

$table_name = 'quiz'; 
if(isset($_POST["nextpage"]) && $_POST["nextpage"]!="") { 

    $j = rand(); 
    $nextpage = mysql_real_escape_string($_POST["nextpage"]); 

    switch ($nextpage) { 
    case '2': 
     $wpdb->insert($table_name, array('Q1score'=>$_POST[Q1],'Q2score'=>$_POST[Q2],'Q3score'=>$_POST[Q3],'ID'=>$j)); 

     $_SESSION['page'] = 2; 

     break; 
    case '3': 
     $wpdb->update($table_name, array('Q4score'=>$_POST[Q4],'Q5score'=>$_POST[Q5],'Q6score'=>$_POST[Q6],'Q7score'=>$_POST[Q7]), array('ID'=>$j)); 
     $_SESSION['page'] = 3; 
     break; 

    case '4': 
     $_SESSION['page'] = 4; 

     break; 
    } 

} else { 

    if (!isset($_SESSION["page"])) { 
    $_SESSION["page"] = "1"; 
    } else { 
    /* do nothing */ 
    } 

} 
+0

スクリプトの1回の実行で「変更されません」、または複数のリクエストにわたって「変更されません」ということはありませんか? –

+2

_one time_ ever?ユーザーあたり_時間1回_one time_何? – AbraCadaver

+0

スクリプトを1回実行しても変更されません。だから私はデータベースを更新するために参照するたびに、私はデータベースの一意のIDのためにそれを使用して、その乱数を変更したくありません –

答えて

1

isset()を使用して、すでにこのスコープで定義されているかどうかを確認してください。

if (!isset($j)) $j = rand(); 

使用すると、1つのセッション中に複数のページが読み込ま渡って維持したい場合は$_SESSION[]変数を移入します。

if (!isset($_SESSION['j'])) $_SESSION['j'] = rand(); // expects session_start() to be called somewhere above 
$j = $_SESSION['j']; 

いずれかを選択します。

global $wpdb; 

if (!isset($_SESSION['j'])) $_SESSION['j'] = rand(); // expects session_start() to be called somewhere above 
$j = $_SESSION['j']; 

$table_name = 'quiz'; 
if(isset($_POST["nextpage"]) && $_POST["nextpage"]!="") { 

    /* $j = rand(); remove this assignment */ 
    $nextpage = mysql_real_escape_string($_POST["nextpage"]); 

    switch ($nextpage) { 
    case '2': 
     $wpdb->insert($table_name, array('Q1score'=>$_POST[Q1],'Q2score'=>$_POST[Q2],'Q3score'=>$_POST[Q3],'ID'=>$j)); 

     $_SESSION['page'] = 2; 

     break; 
    case '3': 
     $wpdb->update($table_name, array('Q4score'=>$_POST[Q4],'Q5score'=>$_POST[Q5],'Q6score'=>$_POST[Q6],'Q7score'=>$_POST[Q7]), array('ID'=>$j)); 
     $_SESSION['page'] = 3; 
     break; 

    case '4': 
     $_SESSION['page'] = 4; 

     break; 
    } 

} else { 

    if (!isset($_SESSION["page"])) { 
    $_SESSION["page"] = "1"; 
    } else { 
    /* do nothing */ 
    } 

} 
+0

私はこの提案が好きです。完璧に働いた。しかし、将来的にプログラマーが知ることができるように、これについてもっと良い方法がありますか? –

関連する問題