Carcleo 4 Denunciar post Postado Maio 1, 2009 Seguinte: Tenho um formulario que envia seus dados para um: if($acao=="aquilo") {} Acontece que um desses campos é um longblog no mysql, ou seja, pode até ser que va muitos e muitos caracters inclusive pode-se até ir urls de figurasw nesse campo de texto. O meu problema é que quando esse campo de texto chega no if($acao=="aquilo") {} La será verificado e será transferido via url para ouitro if($acao=="aquilo") {} e nesse ai sim receberá a string de INSERÇÃO no banco de dados. Desse forma meu problema é: como enviar esse parametro até la via url? Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Maio 2, 2009 Desculpa mas... ?! Explica melhor isso... pq você precisa passar tanta coisa pela URL? Pq não passa por POST? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 2, 2009 Seguinte: primeiro jogo via POST do form para o action. até acho que sem misterios né? Pois é. Só que não é neste action que vou chamar o insert para o MYSQL. Nele, verifico a cereza do usuario e enviuar uma dos campos (no caso o de foto) vazio e se o usuario confirmar ai vai para a outra action e4 ai sim será feito o insert no banco. Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Maio 2, 2009 Não precisa confirmar se ele quer enviar vazio.. Se ele clicou no botão enviar é obvio que ele quer enviar :P Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 2, 2009 O problema é o campo imput type=file, não traz o valor que tem no banco gravado então toda vez que voce vai alterar o registro voce terá que enviar de novo a foto. Dai a necessidade de confirmar se o cara vai enviar valor de foto vazio! Compartilhar este post Link para o post Compartilhar em outros sites
|Jezao| 0 Denunciar post Postado Maio 2, 2009 pq na página que processa a action você ñ faz um if? <? if( $_FILES['campo do arquivo'] ){ //processa o campo }else{ // ñ processa o campo } ?> Pelo que eu entendi, sua dúvida é essa, se não for, explica aí! Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 2, 2009 no primeiro form, se o upload do arquivo for feito, independente do usuario confirmar ou não, faça o upload grave-o numa pasta temporária. grave o nome do arquivo numa variável de sessão. nesse momento, o usuário estará na página de confirmação. nessa página, verifique se existe a variável de sessão referente ao arquivo enviado. se não existir, mostre um aviso ao usuario para confirmar se deseja enviar ou não. se confirmar, mova o arquivo da pasta temporária para pasta oficial, senão.. exclua o arquvo, caso exista, Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 2, 2009 Então nesse caso será ainda mais facil pois não preciso do arquivo, só do nome do arquivo para o caso de o cliente resolver o mesmo nome para o arquivo. Tentarei utilizar session. Dando certo retornarei para encerrar o tópico. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 2, 2009 não.. é necessário enviar o arquivo pois o envio é feito uma unica vez. nao pode ser requisitado remotamente apenas obtendo o nome. Compartilhar este post Link para o post Compartilhar em outros sites
ffgabriel 0 Denunciar post Postado Maio 2, 2009 faz como nosso amigo hinom falou, envia um arquivo temporario para tal pasta, se o ususario confirmar, ele move para a pasta certa e insere, se ele n confirmar ou fechar a pagina a session e fechada, e o arquivo deletado Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 3, 2009 Não é necessessário não sabe poque? Quando no form, se o usuario não mandar o arquvo da foto, pelo menos duas opções ele quer: apagar a foto no banco de dados e conseguqntemente exluir a que esta na pasta e nesse caso eu faço $foto="" na hora do update, ou ele não quer alterar a foto que esta la, só que alterar os outros campos tipo nome do produto, descricão e nesse caso eu nem faço mensão do filed foto na hora do update pois o imput type="file" ele não traz consigo o valor o valor que vem do banco por questões de segurança Ai entra o meu problema: do form, caso o campo file não enviar foto, eu envio os outros dados para um action que verificará se ele deseja apagar a imagem atual ou mante-lo. Ai, vai para outro action para executar o update correto. Porem, um dos campos, o descrição, é campo de texto longo com mais de cinco linhas ai, vou usar session para guarda-lo e resgata-lo na hora do update pois envia-lo por url não esta dando certo. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 3, 2009 não entendi ou você não está sabendo explicar o que quer.. ou você não está entendo o que explicamos .. tente explicar novamente o que está fazendo. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 3, 2009 veja o código completo e entenderá: Quando enmvio do form para o primeirto action a variavel descrição chega ao action normal pois é enmviada via post mas do primeiro action para po segundo action(onde será processado o update) nõ ha como enviuar via post, s[ó por url. Como o conteudo da variavel desceicao é um texto muito longo (mais de uma linha e cerca de bem be,ma mais que 300 carfcters inclusivbe com formatação de texto) ai fica dificil: <?php include("../../global/conecta.php"); ?> <script> function AbreImagemGrande(UrlPagI,NameI,Wi,He,scrolling) { if (!scrolling) { scrolling = 'auto' } PopImagemGrande = window.open(UrlPagI,NameI,'width='+Wi+',height='+He+',scrollbars=no,toolbar=no,location=no,status=no,menubar=no,resizable=no'); } </script> <? if($acao == "baixa"){ $result = mysql_query ("UPDATE produtos SET baixa='s' WHERE id='$id' "); if($result){ echo "<script>document.location='?acao=listar'</script>"; } } // Fim do fechamento de baixa do imóvel ?> <? if ($acao == "vazio"){ $foto = ""; $consulta = mysql_query("UPDATE produtos SET nome='$nome', preco='$preco', descricao='$descricao', foto='$foto' WHERE id='$id'"); $imagem_dir = "../../img/foto_produto/normal/" . $logoremove; $imagem_dir2 = "../../img/foto_produto/mini/" . $logoremove; unlink($imagem_dir); unlink($imagem_dir2); if($consulta){echo "<script>alert('Alteração OK!'); document.location='?acao=listar'</script>"; } else {echo "<script>alert('Não foi possivel realizar a tua atualização por favor tente novamente!'); document.location='?acao=listar'</script>"; } } ?> <? if ($acao == "mesma_foto"){ $consulta = mysql_query("UPDATE produtos SET nome='$nome', preco='$preco', descricao='$descricao' WHERE id='$id'"); if($consulta){echo "<script>alert('Alteração OK!'); document.location='?acao=listar'</script>"; } else {echo "<script>alert('Não foi possivel realizar a tua atualização por favor tente novamente!'); document.location='?acao=listar'</script>"; } } ?> <? //Inicio do envio dos dados if ($acao == "altera"){ if (!$foto) { $descricao = $_POST['descricao']; echo ("<center>"); echo ("<font color='red' size='+2'><br><br>"); echo ("Voce deseja enviar valor vazio para o banco?<br>"); echo ("<br>"); echo ("<a href='?acao=vazio&id=$id&nome=$nome&preco=$preco&descricao=$descricao&logoremove=$logoremove'>Sim</a>"); echo (" "); echo ("<a href='?acao=listar'>Não</a><p>"); echo ("Deseja enviar a mesma foto para esse produto?<br>"); echo ("<br>"); echo ("<a href='?acao=mesma_foto&id=$id&nome=$nome&preco=$preco&descricao=$descricao&logoremove=$logoremove'>Sim</a>"); echo (" "); echo ("<a href='?acao=listar'>Não</a><p>"); echo ("Ou deseja retornar e escolher outra imagem?<br>"); echo ("<br>"); echo ("<a href='java script:window.history.go(-1)'>Voltar</a>"); echo ("</font>"); echo ("</center>"); } else { if (!$MAX_FILE_SIZE){ print $foto; $erro = $config = array(); // Prepara a variável do arquivo $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; // Tamanho máximo do arquivo (em bytes) $config["tamanho"] = 3000000; // Largura máxima (pixels) $config["largura"] = 3000000; // Altura máxima (pixels) $config["altura"] = 3000000; // Formulário postado... executa as ações if($arquivo){ // Verifica se o mime-type do arquivo é de imagem if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) { $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; } else { // Verifica tamanho do arquivo if($arquivo["size"] > $config["tamanho"]) { $erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo"; } // Para verificar as dimensões da imagem $tamanhos = getimagesize($arquivo["tmp_name"]); // Verifica largura if($tamanhos[0] > $config["largura"]) { $erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels"; } // Verifica altura if($tamanhos[1] > $config["altura"]) { $erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels"; } } // Imprime as mensagens de erro if(sizeof($erro)) { foreach($erro as $err) { echo " - " . $err . "<BR>"; } echo "<a href='java script:window.history.go(-1)'>Fazer Upload de Outra</a>"; } // Verificação de dados OK, nenhum erro ocorrido, executa então o upload... else { // Pega extensão do arquivo preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); // Retira a extensao do nome do arquivo $nome_sem_extensao = "$arquivo[name]"; $nome_sem_extensao = basename ($nome_sem_extensao,".gif"); $nome_sem_extensao = basename ($nome_sem_extensao,".jpeg"); $nome_sem_extensao = basename ($nome_sem_extensao,".jpg"); $nome_sem_extensao = basename ($nome_sem_extensao,".bmp"); $nome_sem_extensao = basename ($nome_sem_extensao,".png"); // Retira espaços em branco do nome do arquivo $nome_banco = str_replace(" ","_",$nome_sem_extensao); //Gera um nome único para a imagem $imagem_nome = $nome_banco . "." . md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde a imagem ficará $imagem_dir = "../../img/foto_produto/normal/" . $imagem_nome; $imagem_dir2 = "../../img/foto_produto/mini/" . $imagem_nome; $imagem_dir3 = "../../img/foto_produto/mini"; /*envia a imagem para a pasta*/ $copy= copy($arquivo["tmp_name"], $imagem_dir); //IMAGEM A SER ABERTA $imagem = $arquivo['tmp_name']; //NOME DO ARQUIVO DA MINIATURA Igual o nome da original $imagem_gerada = $imagem_nome; //CRIA UMA NOVA IMAGEM $imagem_orig = ImageCreateFromJPEG($imagem); //LARGURA $pontoX = ImagesX($imagem_orig); //ALTURA $pontoY = ImagesY($imagem_orig); //DEFINE OS PARÂMETROS DA MINIATURA $largura = 150; $altura = ($pontoY * $largura) / $pontoX; //CRIA O THUMBNAIL $imagem_fin = ImageCreateTrueColor($largura, $altura); //COPIA A IMAGEM ORIGINAL PARA DENTRO ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY); //SALVA A IMAGEM ImageJPEG($imagem_fin, "$imagem_dir3/".$imagem_gerada,100); //LIBERA A MEMÓRIA ImageDestroy($imagem_orig); ImageDestroy($imagem_fin); if($link){ $nome = $_POST['nome']; $preco = $_POST['preco']; $descricao = $_POST['descricao']; $arquivos = $imagem_nome; $caminho_do_arquivo_normais="../../img/foto_produto/normal/$figura"; $caminho_do_arquivo_miniaturas="../../img/foto_produto/mini/$figura"; unlink($caminho_do_arquivo_normais); unlink($caminho_do_arquivo_miniaturas); $result = mysql_query("UPDATE produtos SET nome='$nome', preco='$preco', descricao='$descricao', foto='$arquivos' WHERE id='$id'"); if($result){echo "<script>alert('Alteradação efetuada com sucesso!'); document.location='?acao=listar'</script>"; } else {echo "<script>alert('Não foi possivel realizar a tua alteracao por favor tente novamente...'); document.location='?acao=listar'</script>"; } } else {echo "<script>alert('Não foi possivel contatar bd...'); document.location='?acao=listar'</script>"; } } } } } /* Fechando a conexão */ mysql_close($link); } // Fim da Alteração de dados do imóvel(processo) ?> <?php // Inicio da Alteração de dados do imóvel(formulário) if ($acao == "alterar"){ $Resultado = mysql_query("select id, nome, preco, descricao, foto, baixa from produtos where id = '$id'"); list($id, $nome, $preco, $descricao, $foto, $baixa) = mysql_fetch_row($Resultado); ?> <form action="?acao=altera&id=<?=$id;?>&logoremove=<?=$foto;?>" enctype="multipart/form-data" name="form" method="POST" id="form"><P> <table width="700" border="0" align="center" cellpadding="0" cellspacing="0"> <tr align="center"> <th colspan="2" scope="col">Alteração dos dados do Produto</th> </tr> <tr> <td width="124">Nome</td> <td width="576"><input type="text" name="nome" value="<?=$nome;?>"></td> </tr> <tr> <td>Preço</td> <td width="576"><input type="text" name="preco" value="<?=$preco;?>" onKeyPress="return(MascaraMoeda(this,'','.',event))"></td> </tr> <tr> <td>Descrição</td> <td width="576"> <textarea name="descricao" id="descricao" style="width:650; height:300"><?=$descricao;?></textarea> <script language="javascript1.2"> editor_generate('descricao'); </script> </td> </tr> <tr> <td>Foto</td> <td width="576"><input type="file" name="foto"></td> </tr> <tr> <td colspan="2" align="center"><input type="button" value="Alterar" onClick="CriticaFormulario()"></td> </tr> </table> <? } ?> <table WIDTH="100%" BGCOLOR="#0080C0"> <?php if ($acao == "listar"){ //Inicio da lista dos dados $Sql = mysql_query("select id, nome, preco, foto, baixa from produtos where baixa = 'n' order by nome"); $total = mysql_num_rows($Sql); // Esta função irá retornar o total de linhas na tabela $lpp = 15; // Especifique quantos resultados você quer por página $paginas = ceil($total / $lpp); // Retorna o total de páginas if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada $inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL $Sql = mysql_query("select id, nome, preco, foto, baixa from produtos where baixa = 'n' order by nome LIMIT $inicio, $lpp"); if ($total == "0") {?><tr><td colspan=13 align="center" valign="middle" bgcolor="#FFFFFF"><center><font color=red>=>Não foi encontrado nenhum produto para a sua pesquiza</font> </center></td></tr><?php } else {?> <tr><td colspan=13><center> <b><font color="#FFFFFF" size=+2>Edição de Produtos </font><br> <font color="#FFFF00">Para ver a descrição do produto, clike em alterar </font></b> </center></td></tr> <tr BGCOLOR="#CCCCCC"> <td><div align="center"><b>Id</b></div></td> <td><div align="center"><b>Nome</b></div></td> <td><div align="center"><b>Preço</b></div></td> <td><div align="center"><b>Foto</b></div></td> <td><div align="center"><b>Excluir</b></div></td> <td><div align="center"><b>Alterar</b></div></td> <?php while(list($id, $nome, $preco, $foto, $baixa) = mysql_fetch_row($Sql)) { if($foto==""){ $foto = "<img src='../figuras/Next.png' alt='Sem foto' border=0 width=30>"; } else { //se existir um valor no campo na tabela ele testa se a foto esxiste 'fisicamente' na pasta if(file_exists("../../img/foto_produto/normal/$foto")){ //se existir ele monta a exibição da foto e coloca numa variavel $imagem e pega a largura da foto e compara, se for maior que 800 px ela seta o width para 800px. list($width) = getimagesize("../../img/foto_produto/normal/$foto"); $foto = "<img src='../../img/foto_produto/normal/$foto' alt='Alterar foto' border=0 width=30>"; } else { //se tiver um valor na tabela, mas a foto não existir na pasta a variavel fica setada como sem foto $foto = "<img src='../figuras/Next.png' alt='Sem foto' border=0 width=30>"; } } if ($baixa=="n"){ $baixa = "s"; $icone = "<img border=0 src=../figuras/bloquear.gif alt='Excluir'>"; } else { $baixa = "n"; $icone = "<img border=0 src='../figuras/desbloquear.ico' alt='Retornar'>"; } echo " <tr BGCOLOR=#FFFFCC> <td> <font face=Arial size=-2><b>". $id ."</b></font></td> <td> <font face=Arial size=-2><b>". $nome ."</b></font></td> <td align=right><font face=Arial size=-2><b>R$ ". $preco ."</b></font></td> <td align=center><font face=Arial size=-2><b>". $foto ."</b></font></td> <td align=center><a href='?acao=baixa&id=". $id ."' onclick='return verifica()'>$icone</a></td> <td align=center><a href='?acao=alterar&id=". $id ."'><img border=0 src=../figuras/alterar.ico alt='Alterar'></a></td> </tr> "; } if($pagina > 0) { $menos = $pagina - 1; $url = "$PHP_SELF?acao=listar&pagina=$menos"; echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior } for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas $url = "$PHP_SELF?acao=listar&pagina=$i"; echo " | <a href=".$url.">$i</a>"; } if($pagina < ($paginas - 1)) { $mais = $pagina + 1; $url = "$PHP_SELF?acao=listar&pagina=$mais"; echo " | <a href=".$url.">Próxima</a>"; } }} //Fim do envio dos dados ?></table> Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 3, 2009 nao li o codigo.. li apenas a sua descrição. o problema é simples. basta armanezar a informação numa variável de sessão. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 7, 2009 Fiz com sessão e mesmo assim não deu certo; Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 7, 2009 o problema em si tem mais a ver com lógica do que com a linguagem Compartilhar este post Link para o post Compartilhar em outros sites