簡體   English   中英

PHP處理大表格

[英]PHP processing large form

我在將所有發布數據保存到csv文件以及將值通過電子郵件發送到地址時遇到困難。 我有125個以上的發布變量,即時通訊卡住了。 到目前為止,這是我的代碼示例:

<?php
$x23 = "date";
$x24 = "fclose";
$x25 = "fopen";
$x26 = "fwrite";
$x27 = "mail";
$x28 = "time";
extract($_POST);
$a1 = $_POST['fname'];
$a2 = $_POST['lname'];
$a3 = $_POST['email'];
$a4 = $_POST['landline'];
$a5 = $_POST['mobile'];
$a6 = $_POST['addr1'];
$a7 = $_POST['addr2'];
$a8 = $_POST['towncity'];
$a9 = $_POST['postcode'];
$x1d = $a1 . "," . $a2 . "," . $a3 . "," . $a4 . "," . $a4 . "," . $a5 . "," . $a6 . "," . $a7 . "," . $a8 . "," . $a9 . "
";
$quotation = $x25("file5.csv", "a");
$x26($x1d, $quotation);
$x24($x1d);
header('Location: mydomain.co');
$x20 = 'mail@mydomain.com';   
$x22 = 'Quotation - My Company';
$x27($x20, $x21, $x23, $x1f);
?>

我沒有將所有變量都放在這個問題中(不確定如何做到這一點,但是我認為fputcsv()可以完成工作,以保存所有寫入的125個變量,但是我從來沒有使用過太多的PHP,也不確定在數組上使用和fputcsv())。

我將如何遍歷我所有的post變量並將它們作為一行附加到csv?

任何幫助,將不勝感激。

您要尋找的功能是implode 它使用特定的“膠水”將數組內嵌到單個字符串中,在本例中為“,”。

因此,最簡單的方法是使用implode(',', $_POST) ,但是如果不是所有值都應該使用,則有一種很好的方法可以通過更改表單元素的名稱來進行處理。

在表單中,如果將名稱從"fname"更改為"data[fname]" ,並對其余元素執行相同操作,則$_POST['data']將是一個包含所有值的數組。 然后使用implode(',', $_POST['data'])將確保僅使用所需的值。

首先,您必須受訓於一次解決一個問題。

(1) Create the CSV data in a variable
(2) Write the data to a file
(3) Send an email
(4) Include an attachment in the email

甚至將其分解為更多步驟。 一次解決所有問題只會使自己更加困惑,尤其是在您剛開始編程時。

因此,讓我們解決“創建CSV”文件。

您可以輕松地遍歷$_POST並創建一個CSV文件,如下所示:

$csv_line = '';
$sep = ''; // don't put a comma before the 1st element
foreach ($_POST as $k -> $v) {
    $csv_line .= $sep . "\"$v\"";
    $sep = ','; // put a comma before the 2nd, 3rd, etc. elements
}

但是,這至少有兩個問題。 您可能不希望$ _POST中的每個元素都放入CSV中,並且不能保證$ _POST中的這些元素的順序。

因此,我們將創建一個僅包含我們感興趣的字段的單獨數組,並確保它們按照我們想要保留的順序排列:

$myFields = array('email', 
                  'fname', 
                  'lname', 
                  'junk', 
                  ...);
$csv_line = '';
$sep = ''; // don't put a comma before the 1st element
foreach ($myFields as $k) {
    $csv_line .= $sep . "\"$_POST[$k]\"";
    $sep = ','; // put a comma before the 2nd, 3rd, etc. elements
}

現在,您要做的就是將該行寫到文件中,弄清楚如何發送電子郵件,並弄清楚如何將文件附加到電子郵件中。 但是至少你離我們更近了一步...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM