短い形式の結果をフラットファイル(.textファイルなど)に保存しようとしています。ファイルは区切りファイルとしてExcelにインポートされます。フォームにはチェックボックスがあるため、配列に設定できます。
<input type="hidden" name="roflz" value="noresponse">
<input type="checkbox" name="roflz[]" value="Yesroflz" id="Yesroflz" <?php if (isset($_SESSION['roflz']) && $_SESSION['rolfz'] == "Yesroflz") { echo 'checked="checked"'; } ?>> <label for="Yesroflz">Yesroflz</label> <br />
<input type="checkbox" name="roflz[]" value="Moreroflz" id="Moreroflz" <?php if (isset($_SESSION['roflz']) && $_SESSION['roflz'] == "Moreroflz") { echo 'checked="checked"'; } ?>> <label for="Moreroflz">Moreroflz</label><br />
から配列を内破し$_POST['rolfz']
、結果をに返すことは可能$_POST['rolfz']
ですか?望ましい結果は、テキストファイルに保存できる文字列です。以下のコードを参照してください。
<?php
// begin the session
ini_set('session.cache_limiter', 'private');
session_start();
//Turn checkboxes (an array) into a string. So we can later store it into a strong.
if(isset($_POST['rolfz'])){
$_POST['rolfz'] = implode(",",$_POST['rolfz']);
}
全体的な目標は、$_SESSIONのすべての値をテキストファイルに保存することです。ただし、コードを実行しようとすると、「通知:14行目のE:\ cgi-bin\thankyou.phpでの配列から文字列への変換」が表示されます。以下のコードでは、配列を文字列として使用しようとしていることを示すエラー。
// Take each input name and create a variable for it
foreach($_POST as $k=>$v) {
$_SESSION[$k]=$v;
}
//Implodes the array so we can store the values as a string (not the variables name though!)
$results = implode("|", $_SESSION);
//Open up the file that we will store the collected information to
$datafile=fopen("V1.txt","a") or exit("Unable to open file to record data!");
//Write the data on a new line ("\r\n") so we don't over-write the existing data
fwrite($datafile, "\r\n".$results);
//Close out the file
fclose($datafile);
//reset session variables and destroy the session
$_SESSION = array();
session_destroy();
?>
私がしていることが間違っているか不可能である場合、代わりに代わりのステートメントを使用して、foreach($_POST as $k=>$v)
それが無視されるようにすることは可能$_POST['rolfz']
ですか?そうすれば私は$_POST['rolfz']
自分で処理できますか?
編集(5/10/11):内破 する前:
array(5) { ["date"]=> string(10) "05/10/2011" ["time"]=> string(11) "09:11:20 AM" ["gender"]=> string(4) "male" ["lolz"]=> string(7) "YesLOLZ" ["roflz"]=> array(2) { [0]=> string(8) "Yesroflz" [1]=> string(7) "Noroflz" } }
爆縮後:
array(5) { ["date"]=> string(10) "05/10/2011" ["time"]=> string(11) "09:11:20 AM" ["gender"]=> string(4) "male" ["lolz"]=> string(7) "YesLOLZ" ["roflz"]=> array(2) { [0]=> string(8) "Yesroflz" [1]=> string(7) "Noroflz" } }
編集(5/10/11): 同様の解決策を実行しようとしている場合は、Michaelの解決策を参照してください。そして、私はばかで、コードで間違ったチェックボックス名を使用していることに注意してください(rolfzではなくroflzである必要があります)。