2012-01-28 7 views
0

ボタンをクリックするたびにセッションの数を増やしたいと思っています。問題は、それを増やすことができないということです。いつも同じ値を得ているようです。スクリプトは以下の通りです。セッションを使用して何かの数を増やすには?

$no = 1; 
session_start(); 

session_register("sess_id"); 
$_SESSION['sess_id'][]=$no; 

$no++; 
+0

);

私は、これはあなたがよりよいこの作品なぜあなたは見当もつかないあなたはその上のコメントで書いたように扱っているかを理解するのに役立ちます願っています。代わりにセッション変数をインクリメントしてください。 – hakre

+0

これを行うにはどうすればいいですか?見せてください。 – Alex

+0

私は[回答を追加](http://stackoverflow.com/a/9062124/367456)にいくつかの説明とリンクを追加しました。 – hakre

答えて

0

あなたの質問は少しあいまいですが、私はあなたがの線に沿って何かを探していると思う:

session_start(); 
if (isset($_SESSION['number'])) { /* If there is already a value set */ 
    $_SESSION['number']++; /* Increment by 1 */ 
} 
else { /* If there is no value set, ie the user is clicking the button for the first time */ 
    $_SESSION['number'] = 1; /* Set to 1 */ 
} 
+0

非常に奇妙な、それは動作しません! – Alex

+0

取引は次のとおりです:私は何かをするためにセッション値の値を使いたいです。そしてそれは異なった価値でなければなりません。毎回ユーザーがボタンをクリックします。 – Alex

+0

@Alexあなたはページの_entire_コードを投稿できるので、このコードがどこで呼び出されているのか、どのように使われているのか分かりますか? – cb1

1

行うにはすべてのあなた必要は、増分は$_SESSION配列の値である:

session_start(); 
$_SESSION['no'] = empty($_SESSION['no']) ? 0 : $_SESSION['no']; 
$_SESSION['no'] += 1; 
+0

まあ、私はあなたのお試しになります – Alex

+0

いいえ、彼らは働いていない、私はエラーメッセージが表示されます:警告:スカラーvを使用することはできません... 873:S – Alex

0

だけ$_SESSION配列を使用し、もうsession_registerを使用しないでください。 session_registerを使用して

session_start(); 
if(!isset($_SESSION['sess_id'])) $_SESSION['sess_id'] = 0; 
$_SESSION['sess_id']++; 
+0

待ってみてください! – Alex

+0

いいえ、それは機能しませんでした、sess_idは増加していません:S – Alex

+0

あなたは別のエラーがあります。 S – Wrikken

1

は、PHPのよう推奨されていません5.3.0

<?php 
session_start(); 
$_SESSION['count']=(isset($_SESSION['count']))?$_SESSION['count']+1:0; 
?> 
+0

とても悲しい、それはまったくincreseではない:S – Alex

1

主な問題は、変数を増分する方法です。 PHPはデフォルトで変数を参照で代入するわけではないので、$_SESSION['sess_id'][] = $no;は実際には(変数を整数として索引付けするだけでなく)値で代入しています。その後の$n++コールは、PHPセッションに保存されている値を変更しません。

あなたが欲しいと思うのは、assign by referenceです。

$no = 1; 
session_start(); 
$_SESSION['your_session_var_name'] =& $no; // value is '1' 

$no++; // $no is now '2' 
echo $_SESSION['your_session_var_name']; // outputs '2' 
+0

それは動作しません....私は10回でそれをクリックしても、値はまだ1.とincresingはありません。 – Alex

0

新しいセッションを開始すると、すべてのセッション変数は空(設定されていません)です。

session_start(); 
if (FALSE === isset($_SESSION['no'])) 
{ 
    # session is new 
    $_SESSION['no'] = 1; 
} 
else 
{ 
    # session already exists 
    $_SESSION['no']++; 
} 

あなたがどうかをテストするためにisset­Docs言語構造を使用することができます。あなたがそれらのいずれかをインクリメントしたい場合は、それが存在する - またはそれが存在する場合(要求を以下)しなかった場合、あなたはそれをインクリメントそれを最初に作成する必要があります変数が設定されているかどうか。設定されていない場合(FALSE)、セッション変数は値1で初期化されます。

存在する場合は、セッション変数が++ operator­Docsでインクリメントされます。

これはセッションIDとは無関係であることに注意してください。あなたの質問がセッションIDを変更または設定する必要はありません.PHPがこれを行います。あなたはセッション変数が、いくつかの他の変数をインクリメントしていない

+0

ええ、ときどき私はコンピュータを投げたいだけですが、私は幸せです。 – Alex

関連する問題