Jump to content
afetur

Inserir dado no banco via PDO usando foreach para array

Recommended Posts

Olá,
Estou precisando inserir alguns dados diretamente no banco saindo dos campos inputs. Preciso que cada item do array seja
cadastrado no banco, por exemplo o cliente vai comprar 3 ingressos, que os nomes dos 3 ingressos apareçam um a um nos registros.
 Ajustei os códigos abaixo, mas não funciona. Primeiro veja como está o html:


											<label for="nomeingresso">Ingresso:</label>
											<input type="text" id="ingresso" name="ingresso[]" placeholder="Ex.: Ingresso Conferência" class="form-control name_list" value="<?php echo $row_ingressos['ingresso'];?>" readonly required />

											<label for="valoringresso">Valor:</label>
												<input type="text" class="form-control" id="valor" name="valor[]" placeholder="Ex.: 1.150,00" value="<?php echo $row_ingressos['valor'];?>" readonly required>

											<label for="nomeingresso">Quantidade:</label>
											<input type="number" id="quantidade" name="quantidade[]" class="form-control name_list" value="" min="0" required />
				
										<input name="idingresso[]" type="hidden" id="idingresso" value="<?php echo $row_ingressos['id_ingresso']; ?>">
										

 

Bom, no código abaixo só funciona se eu tirar o foreach, com ele o código não insere os dados no banco. Estou testando o cadastro
apenas com o campo ingresso para ver se funciona para depois adicionar os campos valor e quantidade, portanto não insere.
 

function salvarIngresso(){
	  $ingresso = $_POST['ingresso'];
	  $valor = $_POST['valor'];
	  $quantidade = $_POST['quantidade'];


    try {
  
    // begin the transaction
    $this->pdo->beginTransaction();
    // our SQL statements
	
	foreach($ingresso as $key => $ing){
    $this->pdo->exec("INSERT INTO evn_pedidos_ing (ing) 
    VALUES ('$ing');");
	}
	

    // commit the transaction
    $this->pdo->commit();
    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    // roll back the transaction if something failed
    $this->pdo->rollback();
    echo "Error: " . $e->getMessage();
    }

  }

 

A função de conexão é esta abaixo:
 

 function __construct(){
 $this->pdo = new PDO('mysql:host='.$this->host.';dbname='.$this->db, $this->usuario, $this->senha); 
 }


Para entender melhor qual é o passo a passo do que estou tentando fazer tem um link abaixo. Ao clicar no botão "Inscrever" surge
o lightbox do Pagseguro, então ele automaticamente insere no banco. Vale ressaltar que só não funciona com o FOREACH, sem esta
função o código cadastra normalmente, porém só leva o primeiro item do array.

Agradeço pela ajuda.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Sapinn
      Tô fazendo esse forum pq não achei nada que me ajudasse. Tenho um site em que os professores dão temas para as usuarios produzirem textos, basicamente um site de historias. Preciso que o aluno saiba se ja fez um texto sobre aquele determinado tema. Sendo assim tenho duas tabelas no meu banco usuario que cadastra todos os usarios e historia que tem o tema. Quando o aluno vai enviar a historia automaticamente envia seu email. O que eu realmente quero é comparar se o email existe nas duas tabelas se sim ele retorna já foi feito se não ele retorna Nada feito ainda.
    • By Kellyfer
      Ola estou tentando publicar imagens multilas usando o comando FOR mas nao estou acertando, alguem poderia me ajudar??
      /*script*/
      <?php 
      date_default_timezone_set('America/Sao_Paulo');
      session_start();?> 
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="utf-8">
          <title>Upload de Imagens</title>
      </head>
      <body>
      <!--FORMULÁRIOS-->
      <form action="upload.php" method="post" enctype="multipart/form-data">
          <input type="file" name="arquivos[]" multiple required>
          <input type="submit" value="Publicar">
      </form>
      <p>
      <?php 
      if(isset($_SESSION['erro'])):
          echo $_SESSION['erro'];
          session_unset();
      elseif(isset($_SESSION['sucesso'])):
          echo $_SESSION['sucesso'];
          session_unset();
      endif;
      ?>
      </p>
      <?php 
      /*MOSTRANDO AS IMAGENS NA TELA*/
      $utf8 = header("content-type:text/html;charset= utf-8");
      $conn = new mysqli('localhost','thesim','xthesimx1986','db_galeria');
      $conn->set_charset("utf8");
      $busca_image = "SELECT id, nome_arquivo FROM tb_upload  ORDER BY id DESC";
      $res = mysqli_query($conn, $busca_image);
       if(mysqli_num_rows($res) <= '0'){
           echo "Nenuma imagem encontrada!";
       }else{
           while($res_pos =mysqli_fetch_array($res)){
               $nome_arquivo    =$res_pos[0];
      for($c=0; $c>=10; $c++);
      print "<div class='foto'><img src='uploads/$nome_arquivo$c</div>";
      }
      }
      ?>
      </body>
      </html>
      Imagens anexadas



    • By tatysouzac
      Minha view:
      <div>                            
                                          <form method="post" action="http://localhost/integradorcode/index.php/welcome/validar">
                                          EMAIL: <input type="text" name="email"  /> <br><br>
                                          SENHA:  <input type="password" name="senha"/> <br><br><br><br>
                                          <input class="myButton" type="submit" value="Entrar"/> <br><br>
                                          </form>
                                          <a href="Cadastro.php" class="myButton">Cadastrar</a><br><br>
                                          <a href="#" class="myButton">Esqueceu sua senha?</a>
               </div>
       
       
       
      Controller:
       
          public function validar(){
              //var_dump($_POST);
              $this->load->model("Cadastro_model");
              $result = $this->Cadastro_model->validar($_POST["email"],md5($_POST["senha"]));
              var_dump($result);
          }
       
       
      Model:
       
          function validar($email, $senha){
              return $this->db->query("SELECT * FROM `cadastro_clientes` WHERE email_cliente = '{$email}'  AND senha_cliente = '{$senha}' AND status = 1 LIMIT 1")->result_array();
          }
       
       
      Não da nenhuma mensagem de erro mas coloco senha e login certos do meu bd e o return não retorna nada array 0 
    • By terra
      Olá,
       Tenho esse codigo
       
      e gostaria de chamar  bairro = dados.address.suburb; aqui nesse função 
       
       
      Agradeço qualquer ajuda
    • By ricardonews
      olá pessoal, eu não estou conseguindo fazer o redirecionamento apos o cadastro para index, eu estou perdido entre os ifs e else, eu acho que só pode ser isso,  quando eu coloco meu código trava, e não faz nada. vou postar o print.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.