Comunidad de diseño web y desarrollo en internet online

Problemas para borrar imagen con array en PHP

Citar            
MensajeEscrito el 15 Mar 2015 06:35 pm

kakashi2000 escribió:

Buenas Tardes Amigos,

Estoy teniendo un problema con un plugin que estoy creando para Wordpress el cual se llama WP Catalog Crativo

Este nuevo plugin creado por mi, tiene la caracterizca de hacer un catalogo con propiedades o atributos especiales que con un plugin cualquiera no te permite tener un buscador avanzado para relizar una busqueda filtrada por los atributos.

Como ustedes sabran para que funcione esto se requiere de una tabla especifica para agregar los productos, entonces para esto realice este plugin el cual te permite tener tus propios atributos agragarlos como busqueda para tus clientes.

Veanlo:


Como veran esta en sus inicio de creacion, a un le falta mucha funcionalidad pero lo basico esta listo.



Bien, tengo este tema muy precionado ya que una funcionalidad para terminar este plugin es la de borrar imagenes, como veran encontre la forma no se realmente adecuada de agregar imagenes y guardarla en un registro de la base de datos de forma de arreglo es decir que no hay limitandes al agregar fotos.

Pero al hora de borrar o agregar una imagen que es la funcionalidad faltante tengo problemas para resolver este conflicto, espero me puedan ayudar amigos.

Les mostrare el codigo y como esta compuesto en el sistema vs la tabla.
Aki esta en pantalla las imagenes y el id del producto.


Aki esta en pantalla la tabla y su id y como esta formado el arreglo.


El cual el nombre de las imagenes separados por comas, para despues usar la propiedad de php explode. Por que usar asi esto? En realidad para cargar mas de 2 fotos ala vez.

Lo que intento hacer es crear un link que me envie un GET para despues eliminar la imagen, pero e aqui me perdi :shock:

Aqui cargo las imagenes.

Código HTML :

<tr valign="top">
                    <th scope="row">Subir Imagenes</th>
                    <td>
                     <!-- Esta div contendrá todos los campos file que creemos -->
                     <div id="adjuntos">
                          <!-- Hay que prestar atención a esto, el nombre de este campo debe siempre terminar en []
                          como un vector, y ademas debe coincidir con el nombre que se da a los campos nuevos 
                          en el script -->
                     <input type="file" name="archivos[]" /><br />
                     </div></dd>
                     <a style="cursor:pointer" onClick="addCampo()">Subir otro archivo</a>
                     <script type="text/javascript">
                        var numero = 0; //Esta es una variable de control para mantener nombres
                                    //diferentes de cada campo creado dinamicamente.
                        evento = function (evt) { //esta funcion nos devuelve el tipo de evento disparado
                           return (!evt) ? event : evt;
                        }

                        //Aqui se hace lamagia... jejeje, esta funcion crea dinamicamente los nuevos campos file
                        addCampo = function () { 
                        //Creamos un nuevo div para que contenga el nuevo campo
                           nDiv = document.createElement('div');
                        //con esto se establece la clase de la div
                           nDiv.className = 'archivo';
                        //este es el id de la div, aqui la utilidad de la variable numero
                        //nos permite darle un id unico
                           nDiv.id = 'file' + (++numero);
                        //creamos el input para el formulario:
                           nCampo = document.createElement('input');
                        //le damos un nombre, es importante que lo nombren como vector, pues todos los campos
                        //compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
                           nCampo.name = 'archivos[]';
                        //Establecemos el tipo de campo
                           nCampo.type = 'file';
                        //Ahora creamos un link para poder eliminar un campo que ya no deseemos
                           a = document.createElement('a');
                        //El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla
                           a.name = nDiv.id;
                        //Este link no debe ir a ningun lado
                           a.href = '#';
                        //Establecemos que dispare esta funcion en click
                           a.onclick = elimCamp;
                        //Con esto ponemos el texto del link
                           a.innerHTML = 'Eliminar';
                        //Bien es el momento de integrar lo que hemos creado al documento,
                        //primero usamos la función appendChild para adicionar el campo file nuevo
                           nDiv.appendChild(nCampo);
                        //Adicionamos el Link
                           nDiv.appendChild(a);
                        //Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
                        //con esta función obtenemos una referencia a ella para usar de nuevo appendChild
                        //y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
                           container = document.getElementById('adjuntos');
                           container.appendChild(nDiv);
                        }
                        //con esta función eliminamos el campo cuyo link de eliminación sea presionado
                        elimCamp = function (evt){
                           evt = evento(evt);
                           nCampo = rObj(evt);
                           div = document.getElementById(nCampo.name);
                           div.parentNode.removeChild(div);
                        }
                        //con esta función recuperamos una instancia del objeto que disparo el evento
                        rObj = function (evt) { 
                           return evt.srcElement ?  evt.srcElement : evt.target;
                        }
                    </script>
                    </td>
                </tr>


Aqui las recibo mediante funciones.

Código PHP :

if (isset($_POST['submit_button'])) {

  //Actualizar products
  if ($_POST['action'] == 'update')
  {
  
    $err = "";
    $msg = "";
    
    $image_file_path = "../wp-content/uploads/easy_catalog_img/";

    //Cargar los archivos
    //Preguntamos si nuetro arreglo 'archivos' fue definido
      if (isset ($_FILES["archivos"])) {
         //de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
         //obtenemos la cantidad de elementos que tiene el arreglo archivos
         $tot = count($_FILES["archivos"]["name"]);
         $name_files = "";
         //este for recorre el arreglo
         for ($i = 0; $i < $tot; $i++){
         //con el indice $i, poemos obtener la propiedad que desemos de cada archivo
         //para trabajar con este
            $tmp_name = $_FILES["archivos"]["tmp_name"][$i];
            $name = $_FILES["archivos"]["name"][$i];
            //$rutaArchivo = time().".jpg";
            //copy( $tmp_name,$image_file_path.$name );
            move_uploaded_file($tmp_name,$image_file_path.$name ); 
            $name_files.=",".$name;
            }

            //$name_files_upload = trim(',', $name_files);
      }
    
    if ($err == '')
    {
      $table_name = $wpdb->prefix . "easy_catalog_wp";
      $date = date('Y-m-d');

      $insert = "INSERT INTO " . $table_name . " (`control`, 
                                                  `nombre`, 
                                                  `short_description`, 
                                                  `imagenes`, 
                                                  `tipo_inmueble`, 
                                                  `status`, 
                                                  `ubicacion`,


Como veran adjunto imagenes con file y armo un arrelgo, despues recibo y leeo el arreglo e inserto.

Espero me puedan ayudar amigos, seria de mucha ayuda.

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox
Citar            
MensajeEscrito el 28 Mar 2015 04:27 am
Para eliminar la imagen desde el array:
$clave = array_search($image, $array);
$array = array_slice($array, $clave);
Luego implode() y listo.

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.