cmdmss 0 Denunciar post Postado Outubro 15, 2007 Prezados colegas. Tenho uma página em HTML que tem alguns checkboxes, e gostaria de gravar sua marcação no mysql pelo PHP. Já cheguei a fazer a estrutura inicial, mas o mesmo só indica erro ao executar a ação, será q vcs podem dar uma olhada no codigo para me falarem oq está errado!? Obrigado HTML <HTML><HEAD> <TITLE>Equipamentos e software</TITLE></HEAD><BODY><table border=0> <form method="POST" action="inclui.php"> <input type="hidden" name="operacao" value="incluiequip"> <tr> <td><input type=checkbox name="equip[]" value=0>2130  Serial:<input type=text name="serial2130"></td> </tr> <tr> <td><input type=checkbox name="equip[]" value=0>9210  Serial:<input type=text name="serial9210"></td> </tr> <tr> <td><input type=checkbox name="equip[]" value=0>9800  Serial:<input type=text name="serial9800"></td> </tr> <tr> <td><input type=checkbox name="equip[]" value=0>SonicScan  Serial:<input type=text name="serialSonicScan"></td> </tr> <tr> <td><input type=checkbox name="equip[]" value=0>4500  Serial:<input type=text name="serial4500"></td> </tr> <tr> <td><input type=checkbox name="equip[]" value=0>5200  Serial:<input type=text name="serial5200"></td> </tr> <tr> <td><input type=checkbox name="equip[]" value=0>8130  Serial:<input type=text name="serial8130"></td> </tr> <input type="submit" name="submit" value="Vai!"> </form></table></BODY></HTML> PHP else if ($operacao=="incluiequip") { if (isset($_POST['equip[]'])) { $value = ''; foreach($_POST['equip[]'] as $value); $sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$value')"); $linha = mysql_affected_rows(); } if ($linha==1) { echo "Cadastrado com sucesso <br>"; } else { echo "Problema!"; } } Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Outubro 15, 2007 Poste aqui o erro que aparece, e poste a página INCLUI.php completa. Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 15, 2007 esqueci de mencionar que no mysql, os campos estao como tipo bit(1) Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Outubro 15, 2007 O array que você vai utilizar é $_POST['equip'] e não $_POST['equip[]']. ;) Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 15, 2007 Nao chega a aparecer nenhum erro! Somente o "Problema!" como mostra na inclui.php Conforme solicitado <HTML><HEAD> <TITLE>Documento PHP</TITLE></HEAD><BODY><?error_reporting(E_ALL ^ E_NOTICE);//força sistema a mostrar o erro// Conecta ao banco de dados $operacao = $_POST["operacao"]; $conexao = mysql_connect("localhost","root",""); mysql_select_db("clientesvitek", $conexao); if ($operacao=="incluir") {// Recebe os valores do formulário HTML $empresa = $_POST["empresa"]; $Uni = $_POST["uni"]; $End = $_POST["end"]; $Cid = $_POST["cid"]; $CNPJ = $_POST["cnpj"]; $CEP = $_POST["cep"]; $IE = $_POST["ie"]; $Contato = $_POST["nome"]; $aa = $_POST["atu"]; $telefone = $_POST["tel"]; $rama = $_POST["ramal"]; $email = $_POST["email"]; $celular = $_POST["celular"]; $dep = $_POST["dep"];// Insere os valores no banco de dados (Ação MySQL) $sql = "INSERT INTO contatos (Empresa, Unidade, Endereco, Cidade, CNPJ, CEP, InscEst, NomeContato, AreaAtuacao, TelComercial, Ramal, EMail, CelularPes, Departamento) VALUES ('$empresa','$Uni','$End','$Cid','$CNPJ','$CEP','$IE','$Contato', '$aa','$telefone', '$rama', '$email', '$celular', '$dep')"; $resultado = mysql_query ($sql) or die (mysql_error()); echo "Cadastro efetuado com sucesso!"; }// Exclui valores do banco de dados else if ($operacao=="excluir") { $Empresa = $_POST["empresa"]; $sql = "DELETE FROM contatos WHERE Empresa = '$empresa'"; $resultado = mysql_query ($sql, $conexao) or die (mysql_error()); $linha = mysql_affected_rows(); if ($linha==1) { echo "Empresa excluído com sucesso!"; } else { echo "Empresa não encontrado"; } }// Inclui equipamentos ao banco de dados else if ($operacao=="incluiequip") { if (isset($_POST['incluiequip'])) { $value = ''; foreach($_POST['incluiequip'] as $value); $sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$value')"); $linha = mysql_affected_rows(); } if ($linha==1) { echo "Cadastrado com sucesso <br>"; } else { echo "Problema!"; } }?></BODY></HTML> O array que você vai utilizar é $_POST['equip'] e não $_POST['equip[]']. ;)Ja cheguei a fazer este teste, mas o erro persiste! Obrigado pela dica. Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Outubro 15, 2007 Se o teste que você fez foi com o arquivo que você postou, não seria $_POST['equip'] no lugar de $_POST['incluiequip']? :huh: Não tem porque estar errado usando assim. Dê um print_r($_POST) antes de tudo e confira as variáveis corretamente. Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 15, 2007 Sim.. eu coloquei o incluiequip agora para testar, antes estava como equip. Vou tentar aqui oq você falou! Abraço Se o teste que você fez foi com o arquivo que você postou, não seria $_POST['equip'] no lugar de $_POST['incluiequip']? :huh: Não tem porque estar errado usando assim. Dê um print_r($_POST) antes de tudo e confira as variáveis corretamente. Desculpe... mas só nao entendi o print_r($_POST)... como devo aplicá-lo?! Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Outubro 15, 2007 Só incluir isso ai no código que irá impirmir a estrutura do array $_POST para você conferir. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Outubro 15, 2007 Bem, mesmo se os valores estiverem passando pelas variáveis, não irá i nserir nada no DB por causa disso:$sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$value')");porque só está definido um valor para a inserção, tudo bem que nessa variável estão todos os valores digitados, mais dessa forma o mysql irá interpretar com se foce um valor para um campo.Estou verificando como arrumar isso, assim que eu descobrir já posto o código. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Outubro 15, 2007 Amigo, você fez esse mesmo post eu outro fórum, porém o cara já explicou tudo... http://forum.codigofonte.net/index.php?sho...amp;#entry31804 Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 15, 2007 Eis o que apareceu:Array ( [operacao] => incluiequip [equip] => Array ( [0] => 0 [1] => 0 ) [serial2130] => [serial9210] => [serial9800] => [serialSonicScan] => [serial4500] => [serial5200] => [serial8130] => [submit] => Vai! ) Sera que podem me explicar o que isso significa?!Nao sei porque, mas estou lendo coisas do tipo serial4500, serial5200, etc... e estes campos nao tem nada a ver com o que estou pedindo! Pois o php está direcionado para o checkbox... e nao para os text... :wacko: Amigo, você fez esse mesmo post eu outro fórum, porém o cara já explicou tudo...http://forum.codigofonte.net/index.php?sho...amp;#entry31804Mais ou menos... eu fiz oq eles falaram pra fazer... mas mesmo assim nao deu certo... e chegou a um ponto no qual eles queriam que eu fizesse algo diferente do que está nos planos aqui... por isso parei de responde-los! você pode ver no codigo que está igual a o que eles pediram pra fazer... e mesmo assim nao está dando certo... http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Outubro 15, 2007 A estrutura de um array é: Array( [chave] => valor )Ou seja, serialXXX é o name dos seus campos de texto ao lado dos checkbox, todos estão vazios. Agora, somente os primeiro e segundo checkbox estão marcados cujo seus valores é zero, repare a dupla chave=>valor. ;) Aconselho não colocar o atributo value nos checkboxes não, assim o padrão será 1 e nada para desmarcado que você pode definir como 0. Bom, até aqui está tudo correto, dê uma olhada no que o The Cod te falou sobre a query que o erro de não estar inserindo com certeza está ai. ;) Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 16, 2007 Será que alguem pode me dar alguma dica de como matar essa charada?!?! Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 17, 2007 Pessoal, seguinte. Estpu fazendo aqui de outra forma... mas ainda sim está dando problemas! Estou muito desconfiado do tipo de dado que está setado no mysql... +-----------------+------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+------------+------+-----+---------+----------------+| codigo | tinyint(4) | NO | PRI | NULL | auto_increment || vinteumtrinta | bit(1) | YES | | NULL | || noventaedoisdez | bit(1) | YES | | NULL | || softwaremhm | bit(1) | YES | | NULL | || termografia | bit(1) | YES | | NULL | || sonicscan | bit(1) | YES | | NULL | || online | bit(1) | YES | | NULL | || trivector | bit(1) | YES | | NULL | || ultraspec | bit(1) | YES | | NULL | || 2130serial | int(11) | YES | | NULL | || 9210serial | int(11) | YES | | NULL | || mhmserial | int(11) | YES | | NULL | || 9800serial | int(11) | YES | | NULL | || sonicscanserial | int(11) | YES | | NULL | || 4500serial | int(11) | YES | | NULL | || 5200serial | int(11) | YES | | NULL | || 8130serial | int(11) | YES | | NULL | || obs | longtext | YES | | NULL | |+-----------------+------------+------+-----+---------+----------------+ Fico meio estranho a tabela... mas acho que dá para entender. Fiz o PHP da seguinte forma $vinteumtrinta = $_POST["2130"]; $noventaedoisdez = $_POST["9210"]; $termografia = $_POST["9800"]; $ss = $_POST["ss"]; $online = $_POST["4500"]; $triv = $_POST["5200"]; $ultra = $_POST["8130"]; if ($vinteumtrinta == "on") { $vinteumtrinta = "1"; } else { $vinteumtrinta = "0"; } if ($noventaedoisdez == "on") { $noventaedoisdez = "1"; } else { $noventaedoisdez = "0"; } if ($termografia == "on") { $termografia = "1"; } else { $termografia = "0"; } if ($ss == "on") { $ss = "1"; } else { $ss = "0"; } if ($online == "on") { $online = "1"; } else { $online = "0"; } if ($triv == "on") { $triv = "1"; } else { $triv = "0"; } if ($ultra == "on") { $ultra = "1"; } else { $ultra = "0"; } $sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$vinteumtrinta','$noventaedoisdez','$termografia','$ss','$online','$triv','$ultra')"); $linha = mysql_affected_rows(); if ($linha==1) { echo "Cadastrado com sucesso <br>"; } else { echo "Problema!"; print_r($vinteumtrinta); } } Acho que assim é pra dar certo... nao?! Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 17, 2007 O mais estranho, é que quando coloco 0 ou 1 no lugar da variável após o VALUES no mysql, ele cadastra sem maiores problemas! Peço para ele mostrar o valor que está sendo entregue e variável e está mostrando 0 ou 1 de acordo com o que o usuário clica, mas quando coloco a variável após o VALUES no mysql, dá erro... :wacko:Agora q eu nao sei mesmo o que pode estar acontecendo... será q algum cientista aí do PHP pode me explicar o porque deste problema?! Compartilhar este post Link para o post Compartilhar em outros sites
cmdmss 0 Denunciar post Postado Outubro 17, 2007 Bem... tenho uma novidade.....ao entar entrar com o dado, mostra isso...."Data too long for column 'vinteumtrinta' at row 1"Alguem pode me dizer o que significa?! Pois se coloco o valor em vez da variável... funciona perfeitamente! Compartilhar este post Link para o post Compartilhar em outros sites