0

I have a foreach loop with multiple variables through a multiple option panel. But when I input multiple variables it only inserts 1 variable somehow.

process.php:

<?php
//include db configuration file
include 'connection.php';
function user_joined($user_werknemer,$user_project,$user_klant,$user_taak,$user_name,$user_desc, $user_start, $user_startdate, $user_starttime, $user_end, $user_enddate, $user_endtime, $user_color){

        $q = "INSERT INTO evenement (id,title,description,start,startdate,starttime,end,enddate,endtime,color) VALUES 
            ('','".$user_name."','".$user_desc."','".$user_start."','".$user_startdate."','".$user_starttime."','".$user_end."','".$user_enddate."','".$user_endtime."','".$user_color."') ";
            foreach ($user_werknemer as $test){
        $qo = "INSERT INTO evenementontvanger (idWerknemer,idProject,idEvent,idKlant,idTaak) VALUES ('".$test."','".$user_project."',LAST_INSERT_ID(),'".$user_klant."','".$user_taak."')";
}

    mysql_query($q);
    
    mysql_query($qo);}
    
    
if(isset($_POST['user_werknemer'],$_POST['user_project'],$_POST['user_klant'],$_POST['user_taak'],$_POST['user_name'],$_POST['user_desc'],$_POST['user_startdate'],$_POST['user_start'],$_POST['user_starttime'],$_POST['user_enddate'],$_POST['user_endtime'],$_POST['user_end'],$_POST['user_color'],$_POST['action'])){
        
        $user_werknemer=$_POST['user_werknemer'];
        $user_color=$_POST['user_color'];
        $user_name=$_POST['user_name'];
        $user_desc=$_POST['user_desc'];
        $user_project=$_POST['user_project'];
        $user_klant=$_POST['user_klant'];
        $user_taak=$_POST['user_taak'];
        $user_start=$_POST['user_startdate']." ".$_POST['user_starttime'];
        $user_startdate=$_POST['user_startdate'];
        $user_starttime=$_POST['user_starttime'];
        $user_end=$_POST['user_enddate']." ".$_POST['user_endtime'];
        $user_enddate=$_POST['user_enddate'];
        $user_endtime=$_POST['user_endtime'];
        $action=$_POST['action'];
        if ($action=='joined'){
            user_joined( $user_werknemer, $user_project, $user_klant, $user_taak, $user_name, $user_desc, $user_start, $user_startdate, $user_starttime, $user_end, $user_enddate, $user_endtime, $user_color);
            }
    }
/*if ( (isset($_POST["id"]) && strlen($_POST["id"]) >= 3 && strlen($_POST["id"]) <= 60) &&
    (isset($_POST["name"]) && strlen($_POST["name"]) >= 3 && strlen($_POST["name"]) <= 50) &&
    (isset($_POST["age"]) && strlen($_POST["age"]) >= 3 && strlen($_POST["age"]) <= 40) ) 
{   //check $_POST["name"] and $_POST["address"] and $_POST["city"] are not empty

    $id   = $_POST["id"];
    $name = $_POST["name"];
    $age   = $_POST["age"];

    $q = "INSERT INTO tbltest ( id, name, age) VALUES 
            ('".$id."','".$name."','".$age."')";
    mysql_query($q); 

}*/
1
  • 1
    move this mysql_query($qo); inside the foreach loop Commented Mar 18, 2014 at 9:31

2 Answers 2

2

Your query is executed outside the foreach loop. Hence it is inserting only one value.

     foreach ($user_werknemer as $test){
        $qo = "INSERT INTO evenementontvanger (idWerknemer,idProject,idEvent,idKlant,idTaak) VALUES ('".$test."','".$user_project."',LAST_INSERT_ID(),'".$user_klant."','".$user_taak."')";
 mysql_query($qo);
}

That should do...

Sign up to request clarification or add additional context in comments.

1 Comment

i know whats wrong with it it only posts the last inserted id into the database. so in this case its posts the id of the last inserted row in the evenementontvanger table. I would like to get the auto-incremented id of the evenement table and post it into the evenementontvanger.idEvent column. But it wont work with the Last_insert_id() when i use multiple users.
2

try your query execution in foreach loop you are calling query run outside foreach loop

 foreach ($user_werknemer as $test){
        $qo = "INSERT INTO evenementontvanger (idWerknemer,idProject,idEvent,idKlant,idTaak) VALUES ('".$test."','".$user_project."',LAST_INSERT_ID(),'".$user_klant."','".$user_taak."')";


$execute_query = mysql_query($qo);
}

Try this it will insert data.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.