Inserting data using PHP array

0

I have a table and need to insert data from this table through an array. However gives this error:

Notice: Array to string conversion in C:\xampp\htdocs\PhpProject1\salvar.php on line 17

My insert where I filled in the values: CHA, KG, KG were entered this way in the bank

INSERT INTO tipoprod (codigo_produto, codigo_tipo, descricao) VALUES ('CHA', 'Array', 'Array')

My index.php

<form action='salvar.php' method='POST'>
    <?php 
        $sql = "SELECT * FROM tipoprod"; 
        $resulta = $conn->query($sql);
        $row = $resulta->fetch_assoc();
    ?>
    <div class='form-group col-lg-4'>
        <label>  <b>Código do Produto:</b> </label>
        <input type="text" maxlength="6"  name="codigo_produto" value="<?php $row['codigo_produto'] ?>"><br><br>
    </div>

    <table border =2''><!-- Iniciando a Tabela -->

        <thead>
            <tr><!-- Início dos Títulos da Tabela / Cabeçalho -->
                <th>Código</th>
                <th>Descrição</th>                                                                                                              
            </tr><!-- Fim dos Títulos da Tabela / Cabeçalho -->
        </thead>

        <tbody>
        <?php
            include("conn.php");

            $codigo_tipo = array();
            $descricao = array();
            for($i =0; $i <= 5; $i++){                   

                echo "<tr>";
                echo "<td><input type='text' name='codigo_tipo[]' style='border:none; width:100%; background-color: transparent;'</td>";
                echo "<td><input type='text' name='descricao[]' value='' style='border:none; width:100%; background-color: transparent;'</td>";
                echo "</tr>";
            }
        ?>
        </tbody>

    </table><br>

    <div class='form-group col-lg-3'><!-- Inicio Botão para efetuar registro no Banco de Dados -->
        <input type="submit" class="btn btn-success btn-lg btn-block" name="enviar_tipo" value="Salvar Informações">
    </div>

</form>

My Saving.php

if(isset($_POST['enviar_tipo'])){

    $codigo_produto = $_POST['codigo_produto'];
    $codigo_tipo = $_POST['codigo_tipo'];
    $descricao = $_POST['descricao'];

    $sql_tipo = "SELECT * FROM tipoprod WHERE codigo_produto = '$codigo_produto' ";
    $resulta = $conn->query($sql_tipo);
    $row = $resulta->fetch_assoc();

foreach($codigo_tipo as $k=>$v) {
$codigo_tipo = $v;
$desc = $descricao[$k];    

if ($resulta->num_rows > 0) {
    $result_produto = "UPDATE tipoprod SET codigo_tipo = '$codigo_tipo', descricao = '$descricao' WHERE codigo_produto = '$codigo_produto' ";
} else {
    $result_produto = "INSERT INTO tipoprod (codigo_produto, codigo_tipo, descricao) VALUES ('$codigo_produto', '$codigo_tipo', '$descricao')";
}

    $resultado_produto = mysqli_query($conn, $result_produto);
    var_dump ($result_produto);
}
}
    
asked by anonymous 29.09.2017 / 16:49

2 answers

-1

Put this in your post method and it will work insert and update, at least here in my code it worked.

save.php

<?php
include("conn.php");

if(isset($_POST['enviar_tipo'])){

    $codigo_produto = $_POST['codigo_produto'];
    $codigo_tipo = $_REQUEST['codigo_tipo'];
    $descricao = $_REQUEST['descricao'];

    $sql_tipo = "SELECT * FROM tipoprod WHERE codigo_produto = '$codigo_produto' ";
    $resulta = $conn->query($sql_tipo);
    $row = $resulta->fetch_assoc();

for($i = 0; $i<count($_POST['codigo_tipo'])AND($_POST['descricao']); $i++) {

if ($resulta->num_rows > 0) {
    $result_produto = "UPDATE tipoprod SET codigo_tipo = '$codigo_tipo[$i]', descricao = '$descricao[$i]' WHERE codigo_produto = '$codigo_produto' ";
} else {
    $result_produto = "INSERT INTO tipoprod (codigo_produto, codigo_tipo, descricao) VALUES ('$codigo_produto', '$codigo_tipo[$i]', '$descricao[$i]')";
}

    $resultado_produto = mysqli_query($conn, $result_produto);
    echo "$result_produto <br>";
}
}
?>
    
29.09.2017 / 22:38
3

The fact is that you added the input with name to turn an array (name = 'code_type []') .. with this, in $ _POST, it will give you a variable array .. and so in your insert / update you will have an Array and not a specific value ...

If you want to insert the result of $ _POST do something like:

if(isset($_POST['enviar_tipo'])){
$codigo_produto = $_POST['codigo_produto'];
$codigo_tipo = $_POST['codigo_tipo'];
$descricao = $_POST['descricao'];

$sql_tipo = "SELECT * FROM tipoprod WHERE codigo_produto = '$codigo_produto' ";
$resulta = $conn->query($sql_tipo);
$row = $resulta->fetch_assoc();

foreach($codigo_tipo as $k=>$v) {
    $codTipo = $v;
    $desc = $descricao[$k];

    if ($resulta->num_rows > 0) {
        $result_produto = "UPDATE tipoprod SET codigo_tipo = '$codTipo', descricao = '$desc' WHERE codigo_produto = '$codigo_produto' ";
    } else {
        $result_produto = "INSERT INTO tipoprod (codigo_produto, codigo_tipo, descricao) VALUES ('$codigo_produto', '$codTipo', '$desc')";
    }

    $resultado_produto = mysqli_query($conn, $result_produto);
}
    
29.09.2017 / 17:15