Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

madera

Formulário de inserção em duas tabelas

Recommended Posts

Olá amigos, meu problema é o seguinte:Eu tenho uma página com uma formulário de inserção de dados em duas tabelas, "alunos" (id, nome, end, tel, etc) e "documentos" (id, id_aluno, cód_doc)O propósito é fazer o cadastro de um aluno e marcar os documentos que ele está devendo.Para coletar os valores para o campo cod_doc da tabela "documentos" eu coloquei vários checkbox com o respectivos valores. Tá mais ou menos assim, e o q eu gostaria que acontecesse: Id: 23 ☺ RG valor = 1Nome: _______ ☺ C. Nascimento valor = 2 End: _______ ☺ Foto valor = 3 tel: _____Quando eu marcar o checkbox da foto por exemplo ele adiciona uma tupla na tabela "documentos" com os seguintes valores: id = 1Id_aluno = 23 cod_doc = 3se eu marcar outro checkbox, por exemplo RG, ele adiciona outra tupla na tabela "documentos": id = 2Id_aluno = 23 cod_doc = 1e assim por diante! Se eu não marcar nenhum checkbox, ele não faiz nada logicamente.O q eu fiz aqui ele adiciona o id do aluno na tabela documentos automaticamente, mesmo se eu naum marcar nenhum checkbox, e também se marcar dois ele adiciona só um.Alguém pode me ajudar??Desde já obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No checkbox tah assim:

<html>
<input type=checkbox name="coddoc[]" value="1">RG<br />
<input type=checkbox name="coddoc[]" value="2">C. Nascimento<br />
<input type=checkbox name="coddoc[]" value="3">Foto<br />
</html>

 

No php:

PHP

[*]

[*]<?php

[*]

[*]//Insere os dados na tabela alunos

[*]if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {

[*] $insertSQL = sprintf("INSERT INTO alunos (id, nome, end) VALUES (%s, %s, %s)",

[*]  GetSQLValueString($HTTP_POST_VARS['id'], "int"),

[*]  GetSQLValueString($HTTP_POST_VARS['nome'], "text"),

[*]  GetSQLValueString($HTTP_POST_VARS['end'], "text"),

[*] 

[*] mysql_select_db($database_sistemashs, $sistemashs);

[*] $Result1 = mysql_query($insertSQL, $sistemashs) or die(mysql_error());

[*]}

[*]

[*]//Insere os dados na tabela documentos

[*]if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {

[*]

[*]//Condição que verifica se algum checkbox foi marcado

[*]if(isset($_POST["coddoc"])){

[*]

[*]//Loop para verificar quais foram marcados

[*]foreach($_POST["coddoc"] as $coddoc){

[*]

[*]//Insere os dados na tabela

[*]$insertSQL = sprintf("INSERT INTO docpendente (cod, id_aluno, coddoc) VALUES (%s, %s, %s)",

[*]GetSQLValueString($HTTP_POST_VARS['cod'], "int"),

[*]

[*]//Aqui ele pega o valor digitado no id do aluno da tabela alunos

[*]GetSQLValueString($HTTP_POST_VARS['id'], "int"),

[*]

[*]//Aqui ele insere o valor do checkbox

[*]GetSQLValueString($HTTP_POST_VARS[$coddoc])"int" );

[*]

[*] mysql_select_db($database_sistemashs, $sistemashs);

[*] $Result1 = mysql_query($insertSQL, $sistemashs) or die(mysql_error());

[*] }

[*] }

[*]}

[*]?>

[*]

 

Eu fiz assim, ve se está certo!!

Aqui, o problema é que como o cod na tabela documentos é chave primária, ele não vai aceitar inserir o mesmo valor, então eu precisava de um tipo de contador!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pensei assim: se eu não entrar com nenhum valor no campo cod de tabela documentos (referencia no código como "docpendente") e no mysql eu colocar a opção de "auto-incrementa" neste campo, então não precisarei do contador! (??)

Esqueci de dizer que o "GetSQLValueString" eh uma função:

 

PHP

[*]

[*]function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 

[*]{

[*] $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

[*]

[*] switch ($theType) {

[*] case "text":

[*] $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

[*] break;

[*] case "long":

[*] case "int":

[*] $theValue = ($theValue != "") ? intval($theValue) : "NULL";

[*] break;

[*] case "int[]":

[*] $theValue = ($theValue != "") ? intval($theValue) : "NULL";

[*] break;

[*] case "double":

[*] $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";

[*] break;

[*] case "date":

[*] $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

[*] break;

[*] case "defined":

[*] $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

[*] break;

[*] }

[*] return $theValue;

[*]}

[*]

 

Tá dando tudo certo, o unico problema é que o campo 'coddoc' está definido como um array e dá pau nessa função aí de cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos, gostaria de falar que não é mais necessária a ajuda de vcs por enquanto, achei um modo de fazer o que eu quero!Se alguém quer fazer alguma coisa parecida e quiser saber como eu fiz, é só perdir que eu posto aqui os detalhes.Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.