Ir ao conteúdo

PHP Cadastro Multiplo em PHP de produtos


Ir à solução Resolvido por vinissant7,

Posts recomendados

Postado

Olá boa tarde pessoal,

 

Estou tentando fazer um cadastro multiplo de produtos, por enquanto so preciso cadastrar o nome do mesmo. Porém qunado cadastro o meu codigo não executa, ele apenas vai direto para o ELSE onde mostra o erro. Reviso e Reviso e não encontro um motivo.

 

envia.php

<?php

session_start(); //Iniciar a sessão


$host = "localhost";
$user = "root";
$pass = "";
$dbname = "sisitema-hospital";
$port = 3306;

try{
    $conn = new PDO("mysql:host=$host;dbname=" . $dbname, $user, $pass);
}  catch(PDOException $err){
    echo "Erro: Conexão com banco de dados não realizada com sucesso. Erro gerado " . $err->getMessage();
}


$dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);


if(!empty($dados['CadUsuario'])){
    foreach($dados['nome'] as $chave => $nome){
        echo "etesteeeeeeeeeeeeeeeeeeeeee";
        echo "Chave: $chave <br>";
        echo "Nome: $nome <br>";
        echo "<hr>";

        $query_usuario = "INSERT INTO produtosordem (nome) VALUE (:nome)";
        $cad_usuario = $conn->prepare($query_usuario);
        $cad_usuario->bindParam(':nome', $nome);
        $cad_usuario->execute();

    }


    $_SESSION['msg'] = "<p style='color: green;'>Usuário cadastrado com sucesso!</p>";


}else{

    $_SESSION['msg'] = "<p style='color: #f00;'>Erro: Usuário não cadastrado com sucesso!</p>";
    ini_set('error_reporting', E_ALL);
    var_dump($dados);


   
}

Screenshot_1.png.5f57ac1ab9d45951d284299985f59b1b.png

Este é o var_dump da variavel $dados, ela peha todos input do meu formulario.

Postado

@vinissant7

 

Bom você verificar se o valor "CadUsuario" está vazio e no caso ele está, talvez você queira verificar se ele existe, para isso use o método isset,, deve resolver o seu problema.

 

 

Fiz alguns ajuste no seu codigo:

<?php

ini_set('error_reporting', E_ALL);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    session_start();

    $host   = "localhost";
    $user   = "root";
    $pass   = "";
    $dbname = "";
    $port   = 3306;

    try {
        $conn  = new PDO("mysql:host=$host;dbname=" . $dbname, $user, $pass);
        $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);

        if (isset($dados['CadUsuario'])) {
            $cad_usuario   = $conn->prepare("INSERT INTO produtosordem (nome) VALUE (:nome);");

            $cad_usuario->bindParam(':nome', $nome);

            foreach ($dados['nome'] as $chave => $nome) {
                echo "etesteeeeeeeeeeeeeeeeeeeeee";
                echo "Chave: $chave <br>";
                echo "Nome: $nome <br>";
                echo "<hr>";

                $cad_usuario->execute();
            }

            $_SESSION['msg'] = "<p style='color: green;'>Usuário cadastrado com sucesso!</p>";
        } else {
            $_SESSION['msg'] = "<p style='color: #f00;'>Erro: Usuário não cadastrado!</p>";
        }
    } catch (PDOException $err) {
        $_SESSION['msg'] = "Erro: Conexão com banco de dados não realizada com sucesso. Erro gerado " . $err->getMessage();
    }
}

 

  • Amei 1
  • Solução
Postado

@GabrielSennaMs Opaaaaa Gabriel, acabei de testar seu codigo, rodou perfeito!!!!!!! Agradeço sua ajuda. Boa semana. 

@MailingTester Opaaa, obrigado da ajuda consegui aqui. Boa semana 😁

Opa pessoal, o código do @GabrielSennaMs esta perfeito. porém tento adicionar mais uma coluna no banco de dados e não esta indo.

 

envia.php

<?php

ini_set('error_reporting', E_ALL);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    session_start();

    $host   = "localhost";
    $user   = "root";
    $pass   = "";
    $dbname = "sisitema-hospital";
    $port   = 3306;

    try {
        $conn  = new PDO("mysql:host=$host;dbname=" . $dbname, $user, $pass);
        $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);

        if (isset($dados['CadUsuario'])) {
            $cad_usuario   = $conn->prepare("INSERT INTO produtosordem (nome, detalhes) VALUE (:nome, :detalhes);");

            $cad_usuario->bindParam(':nome', $nome);
            $cad_usuario->bindParam(':detalhes', $detalhes);


            foreach ($dados['nome'] as $chave => $nome) {
                echo "etesteeeeeeeeeeeeeeeeeeeeee";
                echo "Chave: $chave <br>";
                echo "Nome: $nome <br>";
                echo "Nome: $detalhes <br>";

                echo "<hr>";
                var_dump($dados);
                $cad_usuario->execute();
            }

            $_SESSION['msg'] = "<p style='color: green;'>Usuário cadastrado com sucesso!</p>";
        } else {
            $_SESSION['msg'] = "<p style='color: #f00;'>Erro: Usuário não cadastrado!</p>";
        }
    } catch (PDOException $err) {
        $_SESSION['msg'] = "Erro: Conexão com banco de dados não realizada com sucesso. Erro gerado " . $err->getMessage();
    }
}

Screenshot_1.png.4a78e4f87855ad15836213e9806ea215.png

Var_dump acima 

Postado

@vinissant7

 

Quando utilizamos o “bindParam” ele vai vincular o parâmetro do SQL com a variável do php que você passo para o método, quando você  faz o foreach você já adiciona o valor do nome na variável $nome agora se sua tabela está esperando outro parâmetro como "detalhes" você tem que adicionar na variável que você declarou no “bindParam”, para que assim ele adicione na tabela.

 

Fiz a modificacao no codigo para adicionar a coluna detalhes.

<?php

ini_set('error_reporting', E_ALL);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    session_start();

    $host   = "172.17.0.3";
    $user   = "root";
    $pass   = "";
    $dbname = "";
    $port   = 3306;

    try {
        $conn  = new PDO("mysql:host=$host;dbname=" . $dbname, $user, $pass);
        $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);

        if (isset($dados['CadUsuario'])) {
            $cad_usuario   = $conn->prepare("INSERT INTO produtosordem (nome, detalhes) VALUE (:nome, :detalhes);");

            $cad_usuario->bindParam(':nome', $nome);
            $cad_usuario->bindParam(':detalhes', $detalhes);

            foreach ($dados['nome'] as $chave => $nome) {
                echo "etesteeeeeeeeeeeeeeeeeeeeee";
                echo "Chave: $chave <br>";
                echo "Nome: $nome <br>";
                echo "<hr>";

                $detalhes = $dados['detalhes'][$chave];

                $cad_usuario->execute();
            }

            $_SESSION['msg'] = "<p style='color: green;'>Usuário cadastrado com sucesso!</p>";
        } else {
            $_SESSION['msg'] = "<p style='color: #f00;'>Erro: Usuário não cadastrado!</p>";
        }
    } catch (PDOException $err) {
        $_SESSION['msg'] = "Erro: Conexão com banco de dados não realizada com sucesso. Erro gerado " . $err->getMessage();
        var_dump($err->getMessage()); // Para mostrar o erro na tela
    }
}

 

Nota...: Você vai ter que melhorar isso ainda, isso é só para ter uma ideia.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...