Comunidad de diseño web y desarrollo en internet online

Eliminar registro de BDD y también su foto

Citar            
MensajeEscrito el 20 Feb 2009 05:29 pm
Hola a todos! me surgió 2 dudas... una para dar de alta y la misma pero para dar de baja. Para dar de alta utilizo un formulario común en php para que grabe los datos en la BDD.
Para listar, tengo una simplísima consulta donde llamo a esa tabla con los siguientes campos:

TABLA IMAGENES
id_foto nombre archivo
1 foto1 foto.jpg

La consulta para listarla es simple:

conexion bdd
$id_foto = $_GET['idfoto'];
sql="SELECT * FROM IMAGENES WHERE id_foto=$id_foto"

Y para borrar los registros de la base lo hago así:

$id_foto = $_GET['idfoto'];
$sql = "DELETE FROM IMAGENES WHERE id_foto = $id_foto";

Pero para subir archivos utilizo otro formulario... un upload.php y los archivos físicamente se guardan en una carpeta llamada imagenes/

Código :

<script type="text/javascript">
var numero = 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
   return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
   return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
   return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
   return evt.srcElement ?  evt.srcElement : evt.target;
}

addField = function () {
   container = d('file');
   
   span = c('SPAN');
   span.className = 'archivo';
   span.id = 'archivo' + (++numero);

   field = c('INPUT');   
   field.name = 'archivo[]';
   field.type = 'file';
   
   a = c('A');
   a.name = span.id;
   a.href = '#';
   a.onclick = removeField;
   a.innerHTML = 'Quitar';

   span.appendChild(field);
   span.appendChild(a);
   container.appendChild(span);
}
removeField = function (evt) {
   lnk = f(e(evt));
   span = d(lnk.name);
   span.parentNode.removeChild(span);
}
</script>


Y el formulario es este:

Código :

<form action="imagenes/uploadok.php" method="post" enctype="multipart/form-data">
                <dl>
                <dt>
                  <label for="to"></label>
                </dt>
              <dt>
                  <label>Archivos Adjuntos:</label>
                <a href="#" onClick="addField()">Añadir Archivo</a></dt>
              <dd>
                  <div id="file"><br>
                  </div>
              </dd>
              <dd><br>
                    <input type="submit" value="upload" id="archivo" name="archivo" />
                    <input type="hidden" name="action" value="upload" />
                </dd>
              </p>
            </form>


Código :

      if(isset($_POST['action'])) {
//      if ($_POST["action"] == "upload") {
          $tmpfile = $_FILES['archivo']['tmp_name'];
          $tmpname = $_FILES['archivo']['name'];
          $ftpuser = "xxxx";
          $ftppass = "xxxx";
          $ftppath = "ftp.xxxxx.xxx/imagenes/";
          $ftpurl = "ftp://".$ftpuser.":".$ftppass."@".$ftppath;

//places files into same dir as form resides
foreach ($_FILES["archivo"]["error"] as $key => $error) {
   if ($error == UPLOAD_ERR_OK) {
       echo"$error_codes[$error]";
       move_uploaded_file(
         $_FILES["archivo"]["tmp_name"][$key],
         $_FILES["archivo"]["name"][$key]) or die("Problems with upload");
   }
}
}
    header("location: upload.php");
    exit;

// if ($tmpname != "") {
//     echo 'Archivo subido correctamente.';
// } else {
//     echo 'Error al subir el archivo.';
//}



Así, separado funciona perfecto, pero me faltaría encontrar la manera de:
- en el formulario de alta, subir también los archivos seleccionados... hacer upload.
- al eliminar un registo también me elimine el archivo físico del servidor.

¿Se puede hacer esto?

Perdon si hay un error en la sintaxis, es que estoy en el trabajo :oops:

Gracias a todosssssssssss!!!!!!!!!!!!!!!

Picasso.

Por Picasso

45 de clabLevel



Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 20 Feb 2009 07:23 pm
No entiendo bien tu primera pregunta, pero para la segunda puede servirte la función unlink de php, que se utiliza para borrar archivos.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 25 Mar 2009 09:43 am
Efectivamente, una vez elimines el registro de la base de datos, directamente utiliza la función unlink de PHP. Es muy sencillo.

Por fnsoftware

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Mar 2009 01:23 pm

Código PHP :

$id_foto = $_GET['idfoto'];
$sql="SELECT * FROM IMAGENES WHERE id_foto=$id_foto"
unlink('imagenes/nombreFoto');
$sql = "DELETE FROM IMAGENES WHERE id_foto = $id_foto";

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 25 Mar 2009 07:22 pm
sencillo unlink

Por calebzion

51 de clabLevel



Genero:Masculino  

Diseñador Programador Principiante

msie7

 

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