Ir para conteúdo

POWERED BY:

Arquivado

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

will_pHp

[Resolvido] pegar valor de um checkbox e gravar no banco

Recommended Posts

galera é o seguinte, eu tenho um sistema de cadastro de agenda com foto e preciso q ele pegue alguns valores d alguns campos e inclua na tabela agenda estas opções ja estão cadastradas em uma outra tabela pra ficar mais fácl mexer com os dados, tipo assim: eu tenho um evento para cadastrar com as opções:

 

nome do evento

data

local

tipo de evento

 

q serão incluidos na tabela evento e no mesmo formulário tem o upload das fotos q grava na tabela imagens, o campo "tipo de evento" eu tenho alguns dados q estão vindo da tabela eventos, que eu estou classificando por tipo como, rave, trance, forró, etc. isso pq eu quero separado, como eu faço pra cadastrar estas informações no banco? segue o script:

 

<?php
include('config.php');

$ox  = " hidden";
$box = " #EEEEEE solid 1px";

if(isset($_POST['done'])){

$nome	= $_POST['nome'];
$data	= $_POST['data'];
$local  = $_POST['local'];

if(empty($nome) || empty($local)){
	$alerta = "<div id=\"alert\">Os campos em vermelho devem ser preenchidos!</div>";
	$ox  = " visible";
	$box = " #FF0000 solid 1px";
	}else{
	$ox  = " visible";
	$box = " #EEEEEE solid 1px";
	
	$busca = "SELECT * FROM agenda WHERE nome='$nome'";
	$query = mysql_query($busca);
	
	$total = mysql_num_rows($query);
	
	if ($total==0){
		$query = "INSERT INTO agenda (nome,data,local) VALUES ('$nome','$data','$local')";
		mysql_query($query);
		
		//aqui começa o upload
		$idGerada = mysql_insert_id();
		$campos   = $_POST['campos'];
		$num	  = $_POST['id'];
		$dir	   = "downloads/$num";
		//tamanhos para criar as thumbs
		$largura_final = 160;
		$altura_final  = 110;

		@mkdir($dir);
		if ($handle = @opendir($dir)){
		while (false !== ($filez = readdir($handle))){
		if ($filez != "." && $filez != ".."){
		$filez  = substr($filez,0,-4);
		$filez2.="$filez-*-";
		}
		}
		$filez2 = substr($filez2, 0, -3);
		$filez3 = explode("-*-", $filez2);

		natsort ($filez3);

		$quanti = count($filez3);

		$quanti--;

		$y = $filez3[$quanti];
		$y = substr($y, -2);

		closedir($handle);
		}
		$f_name = $_FILES['file']['name'];
		$f_tmp  = $_FILES['file']['tmp_name'];
		$f_type = $_FILES['file']['type'];

		$cont=0;

		$p = $y;

		$desc = $_POST['desc'];

		for($i=0;$i<$campos;$i++){
		$name  = $f_name[$i];
		$file  = explode(".",$name);
		$filec = count($file);
		$filec = $filec-1;
		$file  = $file[$filec];
		$descr = $desc[$i];
		$patha = $dir."$num"."$name";
		$nome  = "$num"."$name";
		
		if ( ($name!="") and (is_file($f_tmp[$i]))){
			if ($cont==0){
			  echo "<b>Arquivo(s) enviado(s):<br /></b>";
			}

			  $up = move_uploaded_file($f_tmp[$i], $patha);
	  
			  //criar thumb
			  if(preg_match("/.jpg/i", "$nome")){
			  $format = 'image/jpeg';
			   }
			if (preg_match("/.gif/i", "$nome")){
			  $format = 'image/gif';
			}
			if(preg_match("/.png/i", "$nome")){
			  $format = 'image/png';
			}
			if($format!=''){
			  $tamanho = getimagesize($dir.$nome);
			  $largura_fonte  = $tamanho[0];
			  $altura_fonte   = $tamanho[1];

			  switch($format){
			  case 'image/jpeg':
			  $source = imagecreatefromjpeg($dir.$nome);
			 break;
			  case 'image/gif';
			  $source = imagecreatefromgif($dir.$nome);
			  break;
			  case 'image/png':
			  $source = imagecreatefrompng($dir.$nome);
			  break;
	  }
	  $nome_thumb	 = substr($nome,0,strpos($nome,"."))."_thumb".substr($nome,strpos($nome,"."));
	  
	  $imagem_destino = imagecreatetruecolor($largura_final,$altura_final);
	  imagealphablending($imagem_destino, false);
	  imagecopyresized($imagem_destino, $source, 0, 0, 0, 0, $largura_final, $altura_final, $largura_fonte, $altura_fonte);
	  @imagejpeg($imagem_destino, $dir.$nome_thumb, 70);
	  imagedestroy($source);
	  imagedestroy($imagem_destino);
	  }
	  //fim do thumb
			
			if ($up==true):
			echo  "$patha - <i>Enviado!</i><br />";
			$cont++;
			$qry = mysql_query("INSERT INTO imagens (idGerada,foto,thumb) VALUES ('$idGerada','$nome','$nome_thumb')");

			else:
			echo "<i>Falhou!</i>";
			endif;
		}
		}
		
		$alerta = "<div id=\"alert2\">Opção cadastrada com sucesso!</div>";
		$ox  = " hidden;";
		$box = " #000000 solid 1px;";
		}else{
		$alerta = "<div id=\"alert\">Esta opção ja se encontra cadastrada!</div>";
		}
	}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>:: Página de teste ::</title>
<style>
.erro{
	font-family: Arial, Helvetica, sans-serif;
	color: #FF0000;
	font-size: 10px;
	visibility:<?=$ox;?>;
	margin-top: -10px;
	margin-bottom: -10px;
}
#erro {
	border: <?=$box;?>;
}
</style>
<script type="text/javascript">
var mainDivName = 'eventDates';

function addEvent(){
var ni = document.getElementById(mainDivName);

var numi = document.getElementById('campos');
var num = (document.getElementById("campos").value -1)+ 2;
numi.value = num;

var divIdName = "eventDate"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<label>Descrição <i><font color='#CC0000'>"+num+"</font></i>:</label><input type=\"text\" name=\"desc[]\" size=\"38\"><label>Imagem:</label><input type=\"file\" name=\"file[]\" size=\"44\"> <a href=\"#ft\" onclick=\"removeEvent(\'"+divIdName+"\')\"> [e<font color='#CC0000'>x</font>cluir]</a><hr>";


ni.appendChild(newdiv);
}

function removeEvent(divNum){
var d = document.getElementById(mainDivName);
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}
</script>

</head>

<body>
<div id="wrap">
<div id="content">
	<div id="main">
	<!-- começo do conteúdo -->
		
	<div class="post">
	<h1>Adicionar nova opção</h1>
	<p>Aqui você poderá adicionar novas opções ao imóvel, <i>ex.(Piscina, TV a cabo, etc.)</i></p>
	<?=$alerta;?>
	<form method="post" action="" enctype="multipart/form-data">
	<p>
	<h2 class="add">opcao</h2>
	<label>Nome do evento:</label>
	<input type='text' name='nome' value='<? echo $_POST['nome'];?>' id='erro' size="38">
	<label>Data do evento:</label>
	<input type='text' name='data' value='<? echo $_POST['data'];?>' id='erro' size="38">
	<label>Local do evento:</label>
	<input type='text' name='local' value='<? echo $_POST['local'];?>' id='erro' size="38">

	<?php
	$sql = mysql_query("SELECT * FROM eventos") or die ("houve um erro ao conectar ao banco de dados:". mysql_error());
	while ($t = mysql_fetch_array($sql)){
	$evento = $t['evento'];
	$id	= $t['id'];
	?>
	<label for="<?=$evento;?>"><input name="<?=$evento;?>" type="checkbox" id="<?=$evento;?>" /> <span><?=$evento;?></span></label>
	<?php } ?>
	
	<a name="ft"></a><h2 class="add">Imagens do imóvel</h2>
	<input type="hidden" name="campos" value="0" id="campos" />
	<div id="eventDates"></div>
	<center>[ <a href="#ft" onClick="addEvent();">Adicionar campos</a> ]</center>
	<input type='submit' class="button" name='formulario' value='Cadastrar'><input type="hidden" name="done" value="" />
	</p>
  </form>
	</div>
	
	<!-- fim do conteúdo -->
	</div>
</div>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você publicou código demais, poderia ter suprimido essa parte de filesystem, já que você está tendo problemas é para pegar os valores vindos da checkbox, certo?

 

 

O HTML p´recisa estar assim, para que seja retornado um array.

<input name="teventos[]" type="checkbox" value="Forró" Forró
<input name="teventos[]" type="checkbox" value="Rave"> Rave
<input name="teventos[]" type="checkbox" value="Trance"> Trance
<input name="teventos[]" type="checkbox" value="Etc"> Etc.

E você deve resgatar os dados assim:

if(isset($_POST['teventos']))
{
   $teventos = $_POST['teventos'];

   echo "Os eventos escolidos foram";
   echo "<ol>";
   foreach($teventos as tevento) {
		 echo "<li>{$tevento}}</li>";
   }
   echo "</ol>";
}

 

ver tb:

http://forum.imasters.com.br/lofiversi...hp/t125036.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado mangakah mais eu postei todo o códgo p/ q alguém veja e me dê algum tok para melhorá-lo ou diminuir as linhas, e meu problema é saber como inserir estes valores q estão sendo puxados d uma tabela e enviar p/ outra, naum sei se acrescento mais um insert ficando com 3 inserts neste script ou se tem uma forma melhor d fazer isso usando este script q eu tive o trabalho d fazer todo, eu ainda sou novato em php e quero poder aprender, se você ou outra pessoa puder me explicar melhor se desse jeito esta bom ou pode ser melhorado ficarei muito agradecido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai me desculpar, mas realmente não tenho paciência para ler tudo isso.

 

Acho que a melhor maneira de você deixar o código PHP mais limpo para poder entendê-lo melhor e ir se sofisticando aos poucos é começar aprendndo a suar a engine de templates Smarty, assim você pode separar o código PHP do código HTML e depois partir para coisas mais avançadas como MVC (separar o código que usa o banco de dados, o código HTML e o que controla tudo) e também Estratégias (separar o código que percorre os valores do código que processa a informação), mas é urgente começar logo a separar PHP de HTML.

 

Quanto a sua dúvida: Eu preciso de mais informações, realmente não estou entendo o que você quer fazer. Eu esperar que você tenha uma tabela chamada 'eventos' e outra com os tipos ou gêneros de eventos chamada, por exemplo 'tipos_eventos'. Assim o susário insere um evento dando nome, data e local do mesmo e seleciona o(s) gênero desse evento nas checkboxes, que são montadas usando valores da table 'tipos_eventos'. Mas tá parecendo que o usuário seleciona o eventos nas checkboxes e depois insere na mesmas tabela. Não consego entender a lógica disso, mauito menos prá que 3 comandos INSERTS. :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é mangakah, é o seguinte isso:

eu tenho no meu banco as seguintes tabelas:

 

imagens - onde tem os campos (idGerada, nome, foto, thumb)

agenda - onde tem os campos (id, nome, data, local)

eventos - onde tem os campos (id, eventos)

e pensei em colocar mais esta tabela [ opcao ] com os campos (idGerada estou pegando o id passado por mysql_insert_id, opcao) para q quando eu exibir os dados na tela mostrei os respectivos dados de cada evento assim como a sua imagem

 

este valor (opcao) esta vindo da tabela eventos q quero cadastrar na tabela opcao ou seja na tabela eventos o usuário naum vai cadastrar nada, so nas tabelas imagens, agenda e opcao, ñ sei se fui claro quanto a isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eai galera ja consegui resolver isto, obrigado assim mesmo mangakah

 

 

moderador, por favor coloque este tópico como resolvido. desculpa o incomodo.

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.