Inserting data using PHP array

Asked

Viewed 1,347 times

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 Index where I filled the values: CHA, KG, KG were entered in this way in the bank

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

my php index.

<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 save.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);
}
}
  • "echo $result_produto;", ->>>>> var_dump( $result_produto); Echo no funnel with array...

  • but I did echo just to show what was being inserted into the bank. I want to fix the error of inserting the words 'Array' instead of what was written, I don’t know if the error is in the iteration, or in the INSERT method

  • Fair, then PHP warns you that to wow the echo you need to convert the array into string...

2 answers

3

The fact is that you added the input with name to become an array (name='codigo_type[]').. with this, in $_POST, it will give you an array variable.. That’s why in your Insert/update you will have an Array and not a specific value...

if you want to do $_POST result Insert 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);
}
  • Keeps giving array error in Conversion string only now does not even Insert in the database with this code

  • @Victort. These are using echoyet?

  • I will edit how the code is now ok ? the index part remains the same, I will change the save.php

  • Now the problem is another it inserts only the type field from the second line I fill. and the error is 'Notice: Uninitialized string offset: 1 in C: xampp htdocs Phpproject1 save.php on line 16'

-1


Put this in your post method and it will work the Insert and update, at least here in my code 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>";
}
}
?>
  • 1

    thanks but now I have one more problem, is that it inserts blank data that are not filled in the table.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.