Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Dae pessoal, tudo certo?
Bom, estou com a seguinte dúvida, utilizo uma class de upload aqui e ela renomeia as imagens em uma ordem exemplo:
imagem.jpg
imagem_1.jpg
imagem_2.jpg
imagem_3.jpg
imagem_4.jpg
Consegui fazer isso contanto o numero de arquivos do diretório e adicionando o valor no nome da imagem, mas ai veio a seguinte duvida, vamos supor que uma imagem seja apagada do diretorio, ai ficaria algo assim:
imagem.jpg
imagem_1.jpg
imagem_3.jpg
imagem_4.jpg
ai vem o problema, ele vai me retorna 4 arquivos o que resultaria em outra imagem com o nome de imagem_4.jpg, e isso acabaria substituindo a imagem ja existente.
Então gostaria de ver se alguem sabe como posso estar fazendo isso, onde ele veja o nome dos arquivos e adicione o proximo nome na ordem, ou o que esta faltando como no caso acima seria o imagem_2.jpg
Desde já agradeço a atenção.
Walker, valeu pelo toque, quebrei um pouco a cabeça mas consegui obter o resultado que queria..
Sinceramente, acredito que tem uma forma mais correta ou ate simplificada de fazer isso, vou ver se descubro uma maneira melhor de fazer essa "contagem".
Abaixo segue o código, ficarei feliz em ver os comentários sobre o mesmo..
while ($item = readdir($pasta)) {
if ($item != "." && $item != "..") {
$nome = basename($item, '.' . $ext);
$contagem = explode("_", $nome);
if ($i > $contagem[1] || $i != $contagem[1]) {
echo "imagem_" . $i . "." . $ext;
$condicao = true;
break;
} else {
$i++;
$condicao = false;
}
}
}
if (!$condicao) {
echo "imagem_" . $i . "." . $ext;
}
Abrass
Fácil.
Leia os arquivos que contem no diretório usando readdir.
Dê um explode em . (ponto).
Pegue o valor 0 e dê outro explode em _ (underline).
Pegue o valor 1.
Agora você tem a numeração certo ?
Ai tu cria um padrão. Faz um while incrementando uma var e comprara o valor 1 com o valor incrementado.
Se o valor 1 for vazio, tu coloca _1 no nome do arquivo.
Se o valor 1 for diferente de vazio e maior que o valor incrementado tu muda o nome da imagem para _valor incrementado.
E se o valor for igual ao valor incrementado faz nada.
Eu não fiz em código pra que você entende a lógica.
Abraços Walker