problemas con el renombrado en una base de datos
(Nivel 1 - 30 posts) |
Hola, tengo un codigo para poder introducir varias imagenes a la vez en
una base de datos que funciona bien, pero lo que quiero es que cuando se vayan a insertar se renombren tanto en en la base de datos como los propios ficheros y ademas les ponga un numero en funcion de la insercion. Mi base de datos es de pesronajes de todo tipo y lo que busco es lo siguiente. Imaginemos que tenemos esta imagen 3345345345345345.jpg y corresponde al personaje Hannibal Pues bien la idea es que al insertarla en la base de datos entre asi Hannibal_001.jpg Si insertaramos otra de Hannibal entraria Hannibal_002.jpg y asi sucesivamente, he conseguido que al entrar en la base de datos entre ya renombrada como yo quiero, pero lo que no consigo es que al mover las imagenes a la carpeta se renombren igual que en la base de datos. Este es mi codigo. for ($i = 0; $i < $totalimagenes; $i++){ $imagenespequenas=$_FILES["imagenespequenas"]["name"][$i]; echo $imagenespequenas; $tmp = $_FILES["imagenespequenas"]["tmp_name"][$i]; if($imagenespequenas!="") { //esto se hace para dividir las imagenes pequeñas en nombre y extension y asi poder agregar la extension al renombrado $partes=explode(".",$imagenespequenas); //variable para renombrar en funcion del personaje $renomdestino=$nompersonaje.'_'.$i.'.'.$partes[1]; rename($imagenespequenas,$renomdestino); $sql="INSERT INTO imagenes (codpersonaje_imagen, nombre_imagen) VALUES ('".$codpersonaje."','".$renomdestino."') "; echo '<br />'; //MOVIENDO LAS IMAGENES move_uploaded_file($tmp,"imagenes/imagenespequenas/".$imagenespequenas); echo $sql; //$consulta = mysql_query($sql, $conexion); } Al ejecutar este codigo, me suelta este error Warning: rename(CH91_130_035.jpg,kaori makimura_0.jpg) [<a rel="nofollow" href="http://localhost/Proyecto_prueba/function.rename">function.rename</a>]: No error in C:xampphtdocsProyecto_pruebainsercionpersonaje.php on line 77 Y luego esta el otro tema, según este codigo el renombrado autonumerico lo hace bien al meter el dato en la base de datos, pero solo lo hace bien cuando insertas un personaje nuevo con sus imagenes, pero si por cualquier casualidad quieres insertar mas imagenes, empieza el renombrado nuevamente desde 0 cuando deberia continuar desde el ultimo numero en que se quedo. Ejemplo Insertamos 2 imagenes nuevas para un personaje nuevo Hannibal01.jpg Hannibal02.jpg hasta aqui perfecto, pero si queremos insertar otra imagen mas en ese personaje ya creado, el renombrado quedaria asi Hannibal01.jpg cuando deberia ser Hannibal03.jpg me he devanado mucho la cabeza y no se me ocurre ningún metodo para conseguir esto Paralelamente a esto he creado otro codigo para poder introducir ceros en el renombrado en funcion de las cifras que renombren las fotos, pero al fallar el tema del renombrar imagenes a posteriori con el numero siguiente al que se quedo no he podido probarlo, ¿Funcionaria asi? if(strlen($i)==3) {$renomdestino=$nompersonaje.'_'.$i.'.'.$partes[1];} elseif(strlen($i)==2) {$renomdestino=$nompersonaje.'_0'.$i.'.'.$partes[1];} elseif(strlen($i)==1) {$renomdestino=$nompersonaje.'_00'.$i.'.'.$partes[1];} Lo que quiero que haga es que si el renombrado es de una cifra te añada 2 ceros, si es de 2 cifras te añada 1 y si es de 3 que no añada ninguno. |
