Autor
|
Tema: FORO en PHP (Leído 1,855 veces)
|
inquilin@19
Desconectado
Mensajes: 81
|
Estoy haciendo un foro en php, ya tengo todo lo que queria, ahora me falta que, al responder a un post, pueda subir un archivo, tengo los scripts para ello pero no sé como hacer que, al dar a subir archivo y la respuesta me salga en la lista de posts la respuesta y el archivo aparte de que, cuando lo borro, tiene que borrarme también el archivo que se insertó con el post pero no me lo hace, aquí pongo los scripts para contestar el post y subir el archivo. <?php session_start(); $mysqli = mysqli_connect("localhost", "root", "", "foro_2"); if (!$_POST) { if (!isset($_GET["id_post"])) { header("Location: lista_temas.php"); exit; } $verify_sql = "SELECT ft.id_tema, ft.titulo_tema FROM posts AS fp LEFT JOIN temas AS ft ON fp.id_tema = ft.id_tema WHERE fp.id_post = '".$_GET["id_post"]."'"; $verify_res = mysqli_query($mysqli, $verify_sql) or die(mysqli_error($mysqli)); if (mysqli_num_rows($verify_res) < 1) { header("Location: lista_temas.php"); exit; } else { while($topic_info = mysqli_fetch_array($verify_res)) { $id_tema = $topic_info['id_tema']; $titulo_tema = stripslashes($topic_info['titulo_tema']); } echo " <html> <head> <title>Responde a ".$titulo_tema."</title> </head> <body> <h1>Responde a $titulo_tema</h1> <form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\"> <p><strong>Texto del post</strong><br/> <textarea name=\"texto_post\" rows=\"8\" cols=\"40\" wrap=\"virtual\"></textarea> <input type=\"hidden\" name=\"id_tema\" value=\"$id_tema\"> <p><input type=\"submit\" name=\"submit\" value=\"Añadir post\"></p> </form> </body> </html>"; echo " <html> <body> <form action=\"subida_archivo.php\" enctype=\"multipart/form-data\" method=\"POST\"> <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"500\" /> <p><strong>Selecciona un archivo</strong> <input type=\"file\" name=\"fileupload\" /></p> <p><input type=\"submit\" name=\"submit\" value=\"Añadir post y archivos\"></p> </form> </body> </html>"; } mysqli_free_result($verify_res); } else if ($_POST) { if ((!$_POST["id_tema"]) || (!$_POST["texto_post"])) { header("Location: lista_temas.php"); exit; } $obtener_email_sql="SELECT email FROM sesion WHERE id_sesion='".session_id()."'"; $obtener_email_res = mysqli_query($mysqli, $obtener_email_sql) or die(mysqli_error($mysqli)); $ret=mysqli_fetch_array($obtener_email_res); $email=$ret['email']; if ($email=="") { header("Location: lista_temas.php"); exit; } $add_post_sql = "INSERT INTO posts (id_tema,texto_post, fecha_creacion,email,creacion_tema) VALUES ('".$_POST["id_tema"]."', '".$_POST["texto_post"]."', now(),'".$email."','NO')"; $add_post_res = mysqli_query($mysqli, $add_post_sql) or die(mysqli_error($mysqli)); //cerrar conexión mysqli_close($mysqli); header("Location: ver_tema.php?id_tema=".$_POST["id_tema"]); exit; } ?> Y este es el codigo de añadir el archivo <?php $file_dir = "C:\\xampp\\htdocs\\EjerciciosWeb\\Foro_2\\Archivos_subidos\\"; foreach($_FILES as $file_name => $file_array) { echo "Localizacion: ".$file_array["tmp_name"]."<br />\n"; echo "Nombre: ".$file_array["name"]."<br />\n"; echo "Tipo: ".$file_array["type"]."<br />\n"; echo "Tamaño: ".$file_array["size"]."<br />\n";
if (is_uploaded_file($file_array["tmp_name"])) { move_uploaded_file($file_array["tmp_name"], "$file_dir/".$file_array["name"]) or die ("No se pudo copiar"); echo "Archivo movido!<br/>"; echo "Ya está, ahora puedes<a href=\"lista_temas.php\">volver a los temas</a>"; } } ?> Alguien me puede ayudar? Me he atascado en esa parte y no se como seguir Muchas gracias de antemano
|
|
|
En línea
|
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
se supone que cada respuesta al ser una publicación nueva, tiene como mínimo: tabla posts id_post pk id_tema fk -- id del tema al cual pertenece (esa es otra tabla obviamente)
por ejemplo, dependiendo de cuantos archivos permitirás adjuntar al post, veo dos opciones: 1.- si es uno solo: simplemente le agregas un nuevo campo a tu tabla posts que almacene el path/dirección/ruta del archivo que se adjunto: tabla posts id_post pk id_tema fk path_adjunto cuando inicies el proceso que eliminara dicho post, antes de hacerlo, consulta el path del archivo, verificas la existencia del mismo, lo eliminas y luego eliminas el post. 2.- si es más de 1 archivo: si vas a permitir que en un mismo post se adjunten varios archivos (debería haber un límite), entonces crea una tabla aparte, por ejemplo " archivos_adjuntos". archivos_adjuntos id_archivo pk id_post fk path_adjunto partiendo de la idea de que un post puede tener varios archivos adjuntos. Antes de eliminar el registro de la tabla posts, debes consultar la tabla archivos_adjuntos donde archivos_adjuntos.id_post sea igual a posts.id_post y por cada fila debes obtener el path del archivo adjuntado para ese post, verificar su existencia y eliminarlo, luego eliminar ese registro y al finalizar con todos los archivos, eliminar el post.
|
|
« Última modificación: 10 Enero 2012, 15:29 pm por cassiani »
|
En línea
|
|
|
|
inquilin@19
Desconectado
Mensajes: 81
|
Haber si me aclaro, la cosa es que cree una nueva tabla donde guarde los archivos que subo para luego hacer un SELECT para mostrarles?
|
|
|
En línea
|
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
no, los archivos seguirías guardándolos en tu directorio uploads por ejemplo, con un nombre que tu asignas al momento de moverlos ahí, y en la base de datos guardas el path del archivo que subiste. Es solo una idea, no tiene que ser exactamente así.
|
|
« Última modificación: 11 Enero 2012, 14:09 pm por cassiani »
|
En línea
|
|
|
|
inquilin@19
Desconectado
Mensajes: 81
|
Bien, ya conseguí subir los archivos, ahora el problema que se me presenta es cómo borrarlos, he probado con la función unlink pero no me hace nada, solo me borra el post de la base de datos pero no el archivo de la carpeta. Aquí dejo el código que tengo para borrar los posts, ojalá podáis ayudarme <?php session_start(); $mysqli = mysqli_connect("localhost", "root", "", "foro_2"); $id_tema_sql="SELECT id_tema FROM posts WHERE id_post='".$_GET["id_post"]."'"; $id_tema_res = mysqli_query($mysqli, $id_tema_sql) or die(mysqli_error($mysqli)); $ret=mysqli_fetch_array($id_tema_res); $id_tema=$ret['id_tema']; $primer_post_sql="SELECT id_post FROM posts WHERE id_tema='".$id_tema."' AND creacion_tema LIKE 'SI'"; $primer_post_res=mysqli_query($mysqli, $primer_post_sql) or die(mysqli_error($mysqli)); $ret=mysqli_fetch_array($primer_post_res); $id_post2=$ret['id_post']; if($_GET["id_post"]==$id_post2){ header("Location: ver_tema.php?id_tema=".$id_tema.""); exit; } else{ $obtener_email_sql="SELECT email FROM sesion WHERE id_sesion='".session_id()."'"; $obtener_email_res = mysqli_query($mysqli, $obtener_email_sql) or die(mysqli_error($mysqli)); $ret=mysqli_fetch_array($obtener_email_res); $email=$ret['email']; if ($email=="") { header("Location: lista_temas.php"); exit; } else if($email=='admin@foro.es'){ $del_post_sql = "DELETE FROM posts WHERE id_post='".$_GET["id_post"]."'"; $del_post_res = mysqli_query($mysqli, $del_post_sql) or die(mysqli_error($mysqli)); }else{ $comprobar_usuario_sql="SELECT id_post,email FROM posts WHERE email='".$email."' AND id_post='".$_GET["id_post"]."'"; $comprobar_usuario_res=mysqli_query($mysqli,$comprobar_usuario_sql) or die (mysqli_error($mysqli)); $ret=mysqli_fetch_array($comprobar_usuario_res); $email2=$ret['email']; $file=$ret['file']; if (($email2=='') || ($file <> '')) { header("Location: lista_temas.php"); exit; } else { $del_post_sql = "DELETE FROM posts WHERE id_post='".$_GET["id_post"]."'"; $del_post_res = mysqli_query($mysqli, $del_post_sql) or die(mysqli_error($mysqli)); [i][b]$borrar_file = "C:\\xampp\\htdocs\\Ejer\\Foro\\uploads\\".$file_array["name"].""; unlink($borrar_file);[/b][/i] } } } } mysqli_close($mysqli); header("Location: ver_tema.php?id_tema=".$id_tema.""); exit; ?> En negrita he puesto el código de la funcion para borrar archivos, la que no funciona Gracias de antemano, un saludo
|
|
|
En línea
|
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
que wen foro!!!
Sugerencias y dudas sobre el Foro
|
Killer Dog
|
5
|
2,922
|
7 Abril 2004, 05:12 am
por Lalooh
|
|
|
Nueva URL para el foro (foro.elhacker.net)
Sugerencias y dudas sobre el Foro
|
el-brujo
|
0
|
3,267
|
24 Abril 2004, 16:32 pm
por el-brujo
|
|
|
Para el Foro que significa foro??
Sugerencias y dudas sobre el Foro
|
JuCemax
|
2
|
2,195
|
26 Junio 2004, 05:29 am
por el-brujo
|
|
|
Pegar reglas del foro en todo el foro
Sugerencias y dudas sobre el Foro
|
pisagatos
|
5
|
3,946
|
7 Abril 2006, 19:31 pm
por pisagatos
|
|
|
Sobre el buscador del foro e imágenes o videos del foro con una "X" roja
Sugerencias y dudas sobre el Foro
|
Gabriela
|
7
|
4,073
|
7 Octubre 2010, 12:26 pm
por Gabriela
|
|