-2

I have a form that enables the user to insert multiple data into the database. I have been trying to insert them but to no avail.

Below is the form

<tr>
<td>
    <select title = "Please choose" name="menutype[]">
        <option value="-1" >--Select--</option>
            <?php
            $query = "SELECT * FROM MenuType";
            $result = $mysqli->query($query);
            if  ($result==false) {
                    die( mysqli_error($mysqli));
            }

            while ($menutype = mysqli_fetch_array($result)) {
                ?>
                <option value="<?php echo $menutype['MenuTypeID'] ?>"><?php echo $menutype['MenuTypeName'] ?></option>
                <?php 
            }
            ?>
</select>
</td>
<td><input type="text" name="name[]" /></td>
<td><input type="file" name="picture[]" /></td>
<td><textarea rows="4" cols="40" name="description[]"></textarea></td>
<td><input type="text" name="price[]" value=""/></td>
<td>
    <select title="Please choose" name="status[]">
        <option value="-1" />--Select--</option>
        <option value="Available" />Available</option>
        <option value="Limited" />Limited</option>
    </select>
</td>
</tr>

Below is the php code

$name = $_POST['name'];
$description = $_POST['description'];
$price = $_POST['price'];
$status = $_POST['status'];
$menutypeid = $_POST['menutype'];

if(isset($_FILES['picture'])){
$name_array = $_FILES['picture']['name'];
$tmp_name_array = $_FILES['picture']['name'];

for($i = 0; $i < count($tmp_name_array); $i++){
    if(move_uploaded_file($tmp_name_array[$i], "images/menu/".$name_array[$i])){
        echo $name_array[$i]." upload is complete<br>";
    } else {
        echo "move_uploaded_file function failed for ".$name_array[$i]. "<br>";
    }
}

$imageup = $tmp_name_array; // save the whole url address of the uploaded file into variable
foreach ($name as $value){
$query = "INSERT INTO menu (MenuID, MenuName,  MenuPicture, MenuDescription, MenuPrice, MenuStatus, MenuTypeID) 
                VALUES ('', '$name', '$imageup', '$description', '$price', '$status', '$menutypeid' )";

    $mysqli->query($query) or die(mysqli_error($mysqli));
    //header('Location:view_menu_for_manager.php');}}
?>

I also have trouble uploading multiple files/images. Help

edited query

foreach ($name as $value){
$query = "INSERT INTO menu (MenuName,  MenuPicture, MenuDescription, MenuPrice, MenuStatus, MenuTypeID) 
                VALUES ('$name', '$imageup', '$description', '$price', '$status', '$menutypeid' )";
Fatimah
  • 5
  • 5

1 Answers1

0

try like this

<?php      
 $name = $_POST['name'];
 $description = $_POST['description'];
$price = $_POST['price'];
$status = $_POST['status'];
$menutypeid = $_POST['menutype'];

 $data= array('name'=>$name,                
                 'description'=>$description,
                 'price'=>$price,
                 'menutypeid'=>$status ,
                 'status'=>$menutypeid);
if(isset($_FILES['picture'])){
$name_array = $_FILES['picture']['name'];
$tmp_name_array = $_FILES['picture']['name'];

for($i = 0; $i < count($tmp_name_array); $i++){
    if(move_uploaded_file($tmp_name_array[$i], "images/menu/".$name_array[$i])){
        echo $name_array[$i]." upload is complete<br>";
    } else {
        echo "move_uploaded_file function failed for ".$name_array[$i]. "<br>";
    }
}

$imageup = $tmp_name_array; // save the whole url address of the uploaded file into variable
$i=0;
foreach($data as $value){
 $name=$value[$i]['name'];
 $description=$value[$i]['description'];
 $price=$value[$i]['price'];
 $status=$value[$i]['status'];
 $menutypeid=$value[$i]['menutypeid'];
$query = "INSERT INTO menu (MenuName,  MenuPicture, MenuDescription, MenuPrice, MenuStatus, MenuTypeID) 
                VALUES ('$name', '$imageup', '$description', '$price', '$status', '$menutypeid' )";

    $mysqli->query($query) or die(mysqli_error($mysqli));
    //header('Location:view_menu_for_manager.php');}
 }
 ?>

Remove foreach because you are getting only one row from html form. I think there is no need of foreach. Echo each variable before inserting into database just to check that you are getting corrct value or not. Please check this link. Link

Community
  • 1
  • 1
Kedar B
  • 774
  • 5
  • 18
  • 47