我一直在努力使它與fwrite或fputcsv一起工作,但我總是得到指向參數的錯誤。我在PHP新手,但我嘗試嘗試,看看它做了什麼。但到目前爲止,它不是因爲參數或不寫入文件而工作(csv文件上沒有任何內容)。fwrite或fputcsv有什麼問題
我有一個大問題。如何在將所有數據寫入三列的同時在列(名稱,電子郵件和註釋)中顯示文本?
$csvData = array($name,$email,$comment);
foreach($csvData as $key => $val)
{
$strVal = $val;
}
print $strVal;
$fileHandle="";
$filename='I-have-question.csv';
if(!file_exists($filename)){
$fileHandle = fopen($filename, "a+");
}
fwrite($fileHandle, $strVal);
fclose($fileHandle);
洞察/指導將不勝感激。感謝
編輯
$name=$_POST['contactName'];
$email=$_POST['email'];
$comment=$_POST['comment'];
$csvData = array($name,$email,$comment);
$csvCol = array ('name', 'email', 'comment');
$strVal='';
foreach($csvData as $key => $val)
{
$strVal .= $val;
}
print $strVal;
$fileHandle="";
$filename='I-have-question.csv';
$fileHandle = fopen($filename, "a+");
fputcsv($filehandle,$csvData);
fclose($fileHandle);
現在的錯誤說:警告:fputcsv()預計參數1是資源,爲空。我根據兩個輸入進行了更改。但它並不順利。
編輯#2
謝謝@Baba和@Quasdunk的投入。剩下的唯一問題是如何將$ csvCol數組引入到每列的第一行,以便可以在此之後添加/寫入csvData。只有一次csvcol。我該如何去做呢?
編輯#3 非常感謝您的幫助。我調查了在用戶點擊鏈接後從瀏覽器下載csv - 是否可以在相同的代碼中執行此操作?或者我硬編碼到csv的鏈接?只是個小疑問。我看到有關可下載的csv的地方,我點擊提交按鈕,然後彈出文件保存 - 這不是我想要的,但我只需要通過鏈接從服務器下載csv文件。
編輯#4
再次感謝您,@Baba和@Quasdunk的投入。
if(isset($_POST[$interest]))
{
foreach ($interest as $interests)
{
$interest = $interests . " ,";
}
}
然後以CSV,這表明 「陣列」,而不是複選框的值,即1,2,3,4
$csvData = array($name,$email,$comment,array($interest));
我在哪裏出了毛病呢?
編輯#5
非常感謝你,@Baba。我有最後一個問題 你知道如何將變量傳遞給mail()嗎?例如,在創建/寫入csv後,mail()應將所有數據發送給用戶/管理員。
到目前爲止,我得到了它的工作,但興趣仍然沒有顯示選定的複選框 - 而是打印類似於csv的「陣列」。
$ interest = $ _ POST ['interests'];
這是在forceheader函數之上。
$emailTo = get_option('tz_email');
if (!isset($emailTo) || ($emailTo == '')){
$emailTo = get_option('admin_email');
}
$subject = 'I Have A Question to Ask from '.$name;
$thanksubject = 'Thank you for the Form Submission';
$body = "Name: $name \n\nEmail: $email \n\nInterest $interest \n\nComments: $comments";
$userbody = "";
$headers = 'From: '.$name.' ' . "\r\n" . 'Reply-To: ' . $emailTo;
//$headers .= 'Bcc: [email protected]' . "\r\n";
//$headers .= 'Bcc: [email protected]' . "\r\n";
wp_mail($emailTo, $subject, $body, $headers);
wp_mail($email,$thanksubject, $body, $headers);
$emailSent = true;
這是在寫入csv後。如果沒有空白字段等錯誤,它將被髮送。 $ interest僅註冊一個數組,例如,如果我選擇所有複選框,它將顯示全部電子郵件。到目前爲止,我測試過,它只顯示最後一個複選框。你知道我錯了哪裏?
修訂
我已經想通了,並設法寫的複選框值CSV和發送的電子郵件以及。
讓我來猜猜:這個問題只出現如果沒有意見吧? :)在你的'foreach'循環中,你在每次迭代中給'$ strVal'一個新的值,但是你想要連接字符串。因此,在循環之前定義'$ strVal =''; **'並在循環內部執行'$ strVal。= $ val;'(注意句號)。另外,如果文件存在,則不會寫入任何內容......您不必檢查它是否存在,'fopen()'會自動爲您創建它。 – Quasdunk 2012-03-27 09:54:54
查看編輯#2和編輯#3的更新代碼 – Baba 2012-03-27 11:47:08
@Baba - 看到更新後的代碼,我嘗試修改代碼 - 除了感興趣的部分以外,它正常工作。有什麼方法可以追加興趣陣列嗎? – joe 2012-03-28 07:37:39