Ir para conteúdo

Arquivado

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

Carcleo

Enviar muitos carcters em uma variavel via url

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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