leooizepi 1 Denunciar post Postado Abril 25, 2008 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
Paulo Caesar 0 Denunciar post Postado Abril 26, 2008 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
leooizepi 1 Denunciar post Postado Abril 26, 2008 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
Paulo Caesar 0 Denunciar post Postado Abril 26, 2008 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
leooizepi 1 Denunciar post Postado Abril 26, 2008 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
Paulo Caesar 0 Denunciar post Postado Abril 26, 2008 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