will_pHp 0 Denunciar post Postado Junho 17, 2009 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
mangakah 217 Denunciar post Postado Junho 17, 2009 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
will_pHp 0 Denunciar post Postado Junho 17, 2009 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
mangakah 217 Denunciar post Postado Junho 17, 2009 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
will_pHp 0 Denunciar post Postado Junho 17, 2009 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
will_pHp 0 Denunciar post Postado Junho 17, 2009 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