Giihh 6 Denunciar post Postado Março 7, 2016 Olá, Tenho no DB as tabelas categoria e imagens Diversas imagens podem ser relacionadas a um id da tabela categoria. Atualmente a function para somente inserir na tabela categoria esta similar a isto: public function insere($ttitulo) { try { $stmt = $this->db->prepare("INSERT INTO categoria (titulo) VALUES(:titulo)"); $stmt->bindparam(":titulo",$ttitulo); $stmt->execute(); return true; } catch(PDOException $e) { echo $e->getMessage(); return false; } } Tenho um form com titulo e possibilidade de inserção de até 5 imagens. O titulo quero que vá para a tabela categoria, até aqui ok, as imagens devem ir para a tabela imagens, um id para cada imagem mas com inner join para o id da categoria. Na tabela imagens entendo que as colunas ficam assim: id_imagem | categoria_ID | dir_imagem dir imagem só vai pegar o caminho. A duvida é como relacionar e como em um unico submit inserir os ids na tabela imagens conforme a quantidade de imagens no formulario Agradeço ajuda Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Março 8, 2016 Não sei como faço na function para inserir e selecionar o id imediatamente criado e salvar $stmt = $this->db->prepare("INSERT INTO categoria (titulo) VALUES(:titulo)"); $stmt = $this->db->prepare("SELECT id_imagens FROM imagens WHERE id_categoria = id_imagens "); Compartilhar este post Link para o post Compartilhar em outros sites
alanschuch 0 Denunciar post Postado Março 8, 2016 Em resumo, use a função do PDO lastInsertId() para pegar o ID da ultimo registro inserido, então faça a logica para o INSERT na tabela imagens. public function insere($ttitulo,$imagens) { try { $stmt = $this->db->prepare("INSERT INTO categoria (titulo) VALUES(:titulo)"); $stmt->bindparam(":titulo",$ttitulo); $stmt->execute(); $ultimoId = $db->lastInsertId(); $sql = "INSERT INTO imagens (categoria_ID, dir_imagem) VALUES "; $qtImagens = count($imagens); for ($i = 0; $i < $qtImagens; $i++){ //LOGICA PARA GRAVAÇÃO DAS IMAGENS NO DISCO. $sql = $sql . "($ultimoId, 'DIRETORIO')"; } $stmt = $this->db->prepare($sql); $stmt->execute() return true; } catch(PDOException $e) { echo $e->getMessage(); return false; } } Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Março 8, 2016 Cada insert/update/delete é específico para uma tabela. Conforme já explicado, insira em uma e, após, na outra. Compartilhar este post Link para o post Compartilhar em outros sites