James
James

Reputation: 546

PHP HTML checkbox only submitting last value MySQL issue

I have a group chat feature on my site and people can add friends by selecting HTML checkboxes, so multiple can be added at one point. However, when my PHP script inserts the data into the MySQL database, only the last value is added. For example, if the user selects 3 friends, PHP separates their ID's by commas (as it will be stored as an array in the database); so it would display like ,1,2,3. However, when I insert into MySQL, only the ",3" is submitting.

PHP code to assemble data from HTML checkbox:

$invite = $_POST['invite'];
  if(empty($invite)) 
  {
    //echo("You didn't select any friends.");
  } 
  else
  {
    $N = count($invite);

    //echo("You selected $N friends(s): ");
    for($i=0; $i < $N; $i++)
    {
      $userinput = ("," . $invite[$i]);
    }
  }

MySQL query:

$sql = "INSERT INTO group_chat (title, created_date, last_modified, created_by, user_array) VALUES ('$title', now(), now(), '$logOptions_id', '$logOptions_id$userinput')";

$logOptions_id contains the ID of the current user.

I've echoed the $userinput variable out before and it appears as it should be: ,1,2,3 (comma at the start seperates from current user ID when adding to MySQL.

Upvotes: 3

Views: 693

Answers (2)

dkkumargoyal
dkkumargoyal

Reputation: 556

you can create the comma separated id string using implode

$userinput = implode(',', $invite); // output as 1,2,3

If you want to add current user id to it

$userinput = $logOptions_id.','.implode(',', $invite);

Upvotes: 0

Chibuzo
Chibuzo

Reputation: 6117

You are overwriting the values in the loop with this line

$userinput = ("," . $invite[$i]);

Change it to this

$userinput .= ("," . $invite[$i]);

Remember to initialize the the variable $userinput before appending to it to avoid undefined variable warning.

Upvotes: 5

Related Questions