Ir para conteúdo

POWERED BY:

Arquivado

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

leooizepi

consulta pequena com problema!

Recommended Posts

ae galera.. na primeira inserida ao banco.. vai rapido.. mais quando é a mesma imagem.. eu acrescendo um numero.. ai demora pra caramba.. e cai a conexão!!

 

$_SESSION["output"] = "img_clientes/".$nome;		

		$conn=mysql_connect($host,$user,$senha) or die ("Erro:".mysql_error());
		$db=mysql_select_db($base,$conn) or die ("Erro".mysql_error());

		$sql="SELECT img FROM clientes WHERE img = '".$_SESSION["output"]."'";
		$sql_result=mysql_query($sql,$conn)or die("Erro:".mysql_error());
		
		// se encontro uma imagem no banco!
		if(mysql_fetch_row($sql_result)){
			$num = "0";
			$i = "0";
			while($i=="0") {
				$_SESSION["output"] = "img_clientes/".$num.$nome;
				$sql2="SELECT img FROM clientes WHERE img = '".$_SESSION["output"]."'";
				$sql_result2=mysql_query($sql2,$conn)or die("Erro:".mysql_error());
				if(mysql_fetch_row($sql_result2)){
					$num++; 
				}else {
					$i == "1";
				}
			} // while
			mysql_close($conn);
		} // if
		mysql_close($conn);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você só postou o código aqui, é mais fácil fazer um

mysql_query("EXPLAIN ".$sql);

e

mysql_query("EXPLAIN ".$sql2);

 

pra saber o que tá rolando, porque não parece ser erro do PHP, só digo pra tirar o mysql_fetch_row() do IF, e colocar mysql_num_rows($sql_result) > 0

Eu só não entendi porque você tá retornando o campo "img" se você tá procurando por ele mesmo? Não deveria ser um id? Que inclusive poderia ser feito as duas queries numa só? :P

 

PS: O código PHP também tá uma zona, você poderia melhorar isso, aprendendo direito como fazer um codigo eficiente em PHP. Você tá fazendo um query a cada passagem no loop. Isso significa que este código atual seu vai fazer muitas queries a cada vez que rodar, o que não é benéfico pra estabilidade nem do seu site, nem pro servidor.

 

Você poderia muito bem, fazer numa query só, um SELECT COUNT(*) AS `Total` FROM `clientes` WHERE `img` LIKE "img_clientes/%".$nome

Vai pegar todas as imagens que tenham algo antes do nome. Vai retornar o total de linhas pro determinado $nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao.. vo explica pq eu faço uma consulta no loop..

 

eu tenho um form para cadastar no banco..

nesse form tenho uma imagem para salvar..

 

na primeira select.. eu verifico se no banco eu tenho o caminho q eu ira salvar.. se no banco tiver eu pego o nome da minha imagem e altero ela aumento um numero antes do nome da imagem.. feito isso.. eu verifico denovo.. se esse nome q eu alterei existe no banco denovo.. se retorna q sim.. eu aumento mais 1 numero.. se retorna zero.. eu cadastro no banco...

 

considerando meu banco vazio.. na primeira fez q eu for cadastra.. cadastra normal.. rapido!!

se eu for cadastra a mesma imagem.. ele entra no loop e estoura o tempo limite..

 

há algo q eu possa fazer sem fazer essa select?

 

valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, você não tá retornando nenhum dado do SELECT que você está fazendo, por isso não vejo necessidade alguma de você fazer tantas queries dentro de um loop, mesmo com a explicação que você deu. O loop é infinito se você deixar essa linha

$i == "1";

do jeito como está, pois deveria ser $i = "1";

 

Mesmo assim, você deveria mudar essa query, pois vai sobrecarregar o servidor, e seu site vai ter constantes baixas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

puts. verdade.. a variavel $i tem q receber 1

 

a respeito de mudar..

mudar pra q jeito?...

 

da uma ajuda ae paulo!!

 

brigado por enquanto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ainda não entendi o que você quer fazer. Você quer criar uma imagem tipo img_clients/12blah.jpg ? Usa o próprio PHP pra fazer isso, com file_exists() e depois escreve na database o nome que você encontrou que não está sendo usado, tipo

 

for ($i = 0;; $i++){ //atenção, loop infinito
$caminho = sprintf("img_clientes/%s%s", $i, $nome);
if (!file_exists($caminho)){
// opa conseguimos um nome válido pra imagem
$novo_nome = $caminho;
break; // Sem esquecer desse imenso detalhe
}
}

if (isset($novo_nome)) mysql_query('INSERT INTO `clientes` (`img`) VALUES("'.$novo_nome.'")');

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.