9

I've got a PHP routine that processes a form and outputs the values to a CSV file. I'm using array_keys() to create the header row (skipped if there is one). Everything works perfectly except the final header term is "submit" because, of course, my form includes a Submit button. So the data ends up looking like this:

name,email,cell,dob,study,submit "Temp One",[email protected],646-325-1111,1995-03-31,8,Submit "Temp Two",[email protected],646-325-2222,1995-03-31,4,Submit 

How do I omit the submit button both from the header and the data?

Here's my code:

if(isset($_POST['submit'])) { $data = array_values($_POST); // get only values $headers = array_keys($_POST); // keys are headers if( $fp = fopen('data.csv','a+')) { $line = fgets($fp); if(!$line == $headers) { fputcsv($fp, $headers); fputcsv($fp, $data); } else { fputcsv($fp, $data); } fclose($fp); header('Location: thanks.php'); } } 
1
  • There is some use in reading through the topics of the PHP manual when you plan to use the language a bit more. For example the section about variables and array: php.net/variables php.net/arrays Commented Jul 12, 2013 at 23:04

3 Answers 3

12

Remove it from the array...

$post = $_POST; unset($post['submit']); $data = array_values($post); // get only values $headers = array_keys($post); // keys are headers 
Sign up to request clarification or add additional context in comments.

1 Comment

nice one! therefor +1
1

Drop the name from the Submit button in your html

and instead of

if(isset($_POST['submit'])) 

use

if($_SERVER["REQUEST_METHOD"] == "POST") 

Comments

0

array_pop() will remove the last element of an array:

$data = array_pop(array_values($_POST)); // get only values $headers = array_pop(array_keys($_POST)); // keys are headers 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.