Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: gabrielbdmr en 29 Enero 2017, 00:15 am



Título: While & if
Publicado por: gabrielbdmr en 29 Enero 2017, 00:15 am
Buen día con todos tengo el siguiente código y necesito que se verifique que ninguno de los archivos existentes se llama como el nuevo nombre enviado, funciona bien si mando un nombre diferente a todos, es decir si no hay coincidencias entonces renombra correctamente el archivo, sin embargo si hay UNA coincidencia debería mandar error, pero como en el while se produce $rename==TRUE por que obviamente los demas archivos tienen otro nombre, igual considera como valor final $rename==TRUE, entonces mi pregunta es como obtener $rename==FALSE si existe al menos una coincidencia con el nuevo nombre

Código
  1. $dirint = dir($directory);
  2.  
  3.  
  4. while (($archivo = $dirint->read())!== false)
  5. {
  6.  
  7. if (preg_match("/(\.jpg)$/i",$archivo)){
  8.  
  9.  
  10.   $ext = pathinfo($archivo, PATHINFO_EXTENSION);
  11. $archivo_basename = basename($archivo, ".".$ext);
  12.  
  13.  
  14. echo $nuevo_nombre." VS ".$archivo_basename.">";
  15. if($archivo_basename==$nuevo_nombre) {
  16.  
  17. echo "IGUAL<br>";
  18. $rename==FALSE;
  19.  
  20. }
  21.  
  22. else {
  23.  
  24. echo "DESIGUAL<br>";
  25. $rename==TRUE;
  26. }
  27.  
  28.  
  29. }
  30.  
  31. }
  32. $dirint->close();
  33.  
  34.  
  35.  
  36. if($rename!==TRUE) {
  37.  
  38. //renombrar archivo
  39. rename($directory.$filename, $directory.$nuevo_nombre.".jpg");
  40.  
  41. //renombrar thumbnail
  42. rename($directory."thumbnail/".$filename, $directory."thumbnail/".$nuevo_nombre.".jpg");
  43.  
  44. echo '
  45. <p>Se renombró el archivo con éxito.</p>
  46. <p>El archivo "'.$filename.'" ahora se llama: "'.$nuevo_nombre.'.jpg"</p>
  47. <p class="t_centrado t_rojo">Cierre la ventana y actualice la página.</p>
  48. ';
  49.  }  
  50.  else {
  51.  echo '
  52.   <p class="t_centrado t_rojo">Existe un archivo con el nombre:'.$nuevo_nombre.'</p>
  53. <p>Intente nuevamente con otro nombre.</p>
  54. <p><a class="btn btn-primary btn-sm" href="renombrar_imagen.php?id='.$id.'&dir='.$dir.'&filename='.$filename.'">Renombrar</a></p>
  55. ';
  56.  }


Título: Re: While & if
Publicado por: danny920825 en 30 Enero 2017, 15:51 pm
Hola, soy nuevo en PHP y aun hay cosas que no domino, pero... puedes hacer un array con todo el contenido de la carpeta? De poder hacerse, pienso que con un foreach podrías revisar archivo por archivo y comprobar individualmente el nombre, la extensión y el renombrado. Ya te podrán explicar mejor otros usuarios más experimentados, yo solo aporto una idea. Perdón si no soy del todo útil.