2010-11-25 16 views
1

私は以前にスクリプトを作成しましたが、これはPHP 5.2で完全に機能しました。しかし、最近私の友人のサーバー(バージョン4.4.9)に行ったとき、私はいくつかのアクションが彼らのように動作していないことに気付きました。チェックボックスが返された何の成果はクレイジー出てきた...チェックボックスをオンにすると、値が返されません

これは私が使用しているコードです:フォームの を:アクションスクリプトについては

<input type="checkbox" value="Box1" name="BoxGroup[]" />Box1 
<input type="checkbox" value="Box2" name="BoxGroup[]" />Box2 
<input type="checkbox" value="Box3" name="BoxGroup[]" />Box3 

if($_POST['BoxGroup'] == true){ // If one of the checkboxes were checked... 
    foreach($_POST['BoxGroup'] as $value){ 
    $BoxGroup .= ", ".$value; // Make the array into a string 
    } 
    $BoxGroup = substr($BoxGroup,2); // To skip ", " from the beginning of the $BoxGroup variable 
} 

今、このスクリプトは何をしていますか?ユーザーがフォームを送信すると、チェックボックスの1つがチェックされているかどうかがチェックされ、そうであれば、「value、value」などの文字列が作成されます。 これらの値をデータベースに挿入します。ページ上のデータベースに提出された内容をプレビューすると、「レイ/値/値」が得られます。つまり、最初のボックスの「レイ」(「配列」のように)だけが渡されます。

残念ながら、システムのオペレーターと私の両方にはrootのパスワードがないので、私はサーバーのバージョンのPHPを更新できません(私はそれが狂っていると思います)。

どうすればいいですか?

+2

あなたのsysopがrootのパスワードをリセットする方法を知らない場合は、新しいsysopを入手してください。 – cdhowie

+0

stillstanding:申し訳ありませんが、他のアプリケーションのバージョンと混同していました。私はPHP 5.2を意味しました。 cdhowie:私は彼がそれをすることすらできないと思う、それはWebホテルのサーバーなので。 – Nisto

+0

「ウェブホテル」?私は知りたいですか? –

答えて

1
implode(', ', array_keys($_POST['BoxGroup'])) 
+0

私はデータベースにキーを追加するつもりはありませんでしたが、これは私が欲しかった場所(array_values)になりました。だから私はこの答えを受け入れる。ありがとうございました!=) – Nisto

0

implodeに関する他のコメントは良いアドバイスですが、あなたの問題をどのように修正するのか分かりません。 (実際には、戻り値をimplodeの値に初期化すると、実際にはそれが問題になることはありません。

$BoxGroupを正しく初期化します。ループが実行される前に$BoxGroup = 'Array';と賭けています...おそらくregister_globalsがオンになっているからです。 Eeeek、それを無効にする。 .htaccessファイルで

php_flag register_globals off 

詳述すると、私はあなたがvar_dump($BoxGroup)をした場合、あなたはそれが既にそれらの値にregister_globalsのおかげが含まれていることを参照してくださいねということを前提としています。別の文字列と連結すると、配列は文字列 'Array'として扱われます。

+0

残念ながら、register_globalsをオフにしても機能しないようです。 – Nisto

+0

そのディレクトリに対してAllowOverride Optionsが有効になっていることを確認してください。 – Matthew

+0

Uh-huh。私は "AllowOverride Options All"を試しましたが、ホストはただエラー500を出しました。 – Nisto

関連する問題