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
Gracias a todosssssssssss!!!!!!!!!!!!!!!
Picasso.
