#1• Hola, acabo de empezar en esto de PHP y MySQL. Necesito hacer un formulario que suba a la BD varios campos de texto y una imagen. La ruta de la imagen quiero guardarla en la BD y la imagen en el directorio /uploads del servidor. Necesito ayuda y una explicación para tontos por favor!!!!. Resumo lo que quiero hacer: 1. el formulrio recoge los datos y una imagen 2. guarda los daos y la ruta de la imagen en la BD 3. asignamos nombre aleatorio a la imagen, le asignamos un tamaño y la guardamos en /uploads 4. Si no seleccionmos una imagen, se asigna una por defecto que he llamado 'none.jpg' Después necesito un formulario que actualice los registros: 1.muestra los datos y la imagen del registro seleccionado 2. permite cambiar el contenido de los campos 3. permite dejar la imagen asignada, borrarla (en este caso se sustituye automáticamente por 'none.jpg) o cambiarla por otra. 4. guardalos cambios en la BD y modifica la ruta a la imagen si se ha modificado Lo siento, no se si me he explicado bien. Por favor, vuestra ayuda será muy apreciada. Muchas gracias |
#2• Escrito originalmente por lingo5 1. el formulrio recoge los datos y una imagen ¿Sabes hacer esto? |
#3• Hola....bueno en teoría si, supongo que un formulario html con todos los campos. |
#4• Escrito originalmente por lingo5 Hola, acabo de empezar en esto de PHP y MySQL. Necesito hacer un formulario que suba a la BD varios campos de texto y una imagen. La ruta de la imagen quiero guardarla en la BD y la imagen en el directorio /uploads del servidor. Necesito ayuda y una explicación para tontos por favor!!!!. Resumo lo que quiero hacer: 1. el formulrio recoge los datos y una imagen 2. guarda los daos y la ruta de la imagen en la BD 3. asignamos nombre aleatorio a la imagen, le asignamos un tamaño y la guardamos en /uploads 4. Si no seleccionmos una imagen, se asigna una por defecto que he llamado 'none.jpg' Después necesito un formulario que actualice los registros: 1.muestra los datos y la imagen del registro seleccionado 2. permite cambiar el contenido de los campos 3. permite dejar la imagen asignada, borrarla (en este caso se sustituye automáticamente por 'none.jpg) o cambiarla por otra. 4. guardalos cambios en la BD y modifica la ruta a la imagen si se ha modificado Lo siento, no se si me he explicado bien. Por favor, vuestra ayuda será muy apreciada. Muchas gracias Te has expresado claramente (y todo tiene lógica), sigue con ese plan y posteas sobre los problemas que vas encontrando. |
#5• Hola GestionXls, pues la verdad es que me gustaría hacerlo....pero ese es mi problema, que no se como. |
#6• Toma cada paso que has descripto como un problema, busca información, códigos, ejemplos, etc. (aprendes) y luego diseñas la solución a cada paso. Al final lo habrás logrado. |
#7•• Hola, he conseguido hacer el formulario que recoge datos y una imagen, me guarda los datos y la ruta de la imagen en la BD MySQL y la imagen la sube a un directorio del servidor. Aquí está el código PHP que hace est. $uploadDir = '../uploads/'; if(isset($_POST['upload'])) $filePath = $uploadDir . $fileName; //este código asigna nombre aleatorio a cada imagen // tomamos la extensión del archivo $ext = substr(strrchr($fileName, "."), 1); // asignamos nombre de archivo aleatorio $randName = md5(rand() * time()); // ya tenemos el nombre de archivo único $filePath = $uploadDir . $randName . '.' . $ext; $result = move_uploaded_file($tmpName, $filePath); if (!$result) { // insertamos contenido del formulario en la BD if(!get_magic_quotes_gpc()) // "VALUES (\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\')"; mysql_query($query) or die('Error, query failed : ' . mysql_error()); //echo "<br>Archivos cargados con éxito<br>"; header("Location: PC_products_inserted.php"); Ahora necesito el formulario para actualizar los registros. Lo he intetado pero me borra siempre la ruta de la imagen en la BD. Me gustaría que sólo se modificara la ruta si se quiere cambiar la imagen, en caso contrario que se mantenga la que ya hay. Agradecería vuestra ayuda. Gracias |
#8• Comento que veo: 1) en $query = "INSERT INTO basededatos.t_articulo (id_categoria,articulo_esp,articulo_cat,precio,descripcion_esp,descripcion_ cat,novedad,articulo_image) "."VALUES (\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\')"; dentro de VALUES() deben ir las variables (allí no hay ninguna...) 2) en la misma sentencia INSERT INTO no veo en que campo se carga el path (la variable $filePath que se crea con $filePath = $uploadDir . $randName . '.' . $ext;) 3) deducción: si no almacenas el path, no se puede borrar ni leer |
#9•• Hola, no se por que no se han pegado los valores cuando he puesto el código, los pongo aquí sin comas y sin nada porque no me deja pegarlos de otra manera: $categoria $articuloesp $articulocat $precio $descripcionesp $descripcioncat $novedad $filePath Funciona como he dicho antes, pero necesito ayuda para actualizar registros, ya que no consigo que la imagen se mantenga cuando edito un registro. Necesitaría que la imagen solo se cambiara si se quiere cambiar, de lo contrario que la D mantenga la que hay. No se si queda claro. Gracias. |
#10• Se me ocurren varias cosas que pueden estar haciendo ruido, al final sugiero la 'fuerza bruta' (funciona siempre) Al leer un registro para editarlo, también lees la url y la cargas en un campo oculto (propiedad hidden) del formulario. Al guardar el registro editado, incluyes la url de la imagen de nuevo (pasará por _POST junto con los otros campos). |
#11• Gracias GestionXls, pero por favr podrías darme un ejemplo con mi código....soy muy nuevo en esto de PHP y bastante m ha costado que me funcione eto. Si me puedes indicar (explicación para tontos) como hacer el formulario y el código para actualizar me har´s un gran favor. Gracias |
#12• Los detalles son muchos, te doy una guía (tu tarea es aprender php, métodos GET y POST, html y mysql): Desde la página que le permites modificar un artículo (registro) apuntas a un script pasándole el id del artículo (GET). Creas un script que recibe el id del registro a editar, haces una consulta SQL que incluya todos los campos. Este script crea un formulario donde carga los campos (en 2 campos ocultos pones el id de la consulta y la url de la imagen) y se lo envías a quien lo edita. ej de formulario (en este caso, no hace falta un campo oculto para poner el id del registro): <form name="editar" action="?actualizar.php&id=id_reg" method="post"> ej de campo oculto para la url: <input type="hidden" name="url" value="url_de_la_imagen"> Este formulario (luego de editados los datos) envía los datos al mismo script (u otro si lo prefieres). El script que recibe los campos editados (actualizar.php) recupera los valores actuales, id de registro y url y los actualiza en la base de datos. |
#13• OK, este es el formulario que muestrael contenido de un registro para editarlo: <form action=""<? echo $PHP_SELF;?>"" method="post" enctype="multipart/form-data"> <select name="id_categoria" class="CP_loginFormFields"> <input name="articulo_esp" type="text" class="CP_loginFormFields" value="<?php echo $row_products_RS['articulo_esp']; ?>" size="32" /> <input name="articulo_cat" type="text" class="CP_loginFormFields" value="<?php echo $row_products_RS['articulo_cat']; ?>" size="32" /> <input name="precio" type="text" class="CP_loginFormFields" value="<?php echo $row_products_RS['precio']; ?>" size="8" /> <textarea name="descripcion_esp" cols="50" rows="10"><?php echo $row_products_RS['descripcion_esp']; ?></textarea> <textarea name="descripcion_cat" cols="50" rows="10"><?php echo $row_products_RS['descripcion_cat']; ?></textarea> //este es el campo oculto con la URL de la imagen existente <input name="imgUrl" type="hidden" id="imgUrl" value="../uploads/<?php echo $row_products_RS['articulo_image']; ?>" /> //este es el campo para seleccionar imagen nueva <input name="userfile" type="file" id="userfile" /> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> <input <?php if (!(strcmp($row_products_RS['novedad'],"si"))) {echo "checked=\"checked\"";} ?> name="novedad" type="checkbox" value="" /> <input name="editar" type="submit" class="box" id="editar" value="modificar producto "></form> No se si el campo oculto con la URL es correcto. |
#14• y este es el script que actualiza la BD. Pero no me cambia la imagen, n me mantiene la que hay y además me de error al subir archivo cuando actualizo los otros datos. Si selecciono una imagen nueva me actualiza todos los campos excepto la imagen. <? if(isset($_POST['editar'])) $filePath = $uploadDir . $fileName; // get the file extension first // make the random file name // and now we have the unique file name for the upload file $result = move_uploaded_file($tmpName, $filePath); if(!get_magic_quotes_gpc()) $Sql="UPDATE basededatos.t_articulo SET id_categoria='$categoria', articulo_esp='$articuloesp', articulo_cat='$articulocat', precio='$precio', descripcion_esp='$descripcionesp', descripcion_cat='$descripcioncat', novedad='$novedad', articulo_image='$filePath' WHERE id_articulo = 'id_articulo'"; mysql_query($Sql) or die('Error, query failed : ' . mysql_error()); header("Location: PC_products_updated.php"); |
#15•• a) En esta línea: //este es el campo oculto con la URL de la imagen existente <input name="imgUrl" type="hidden" id="imgUrl" value="../uploads/<?php echo $row_products_RS['articulo_image']; ?>" /> debes poner el nombre del campo que contiene la url de la imagen (asegúrate que sea así). b) Después de esta instrucción: $Sql="UPDATE basededatos.t_articulo SET id_categoria='$categoria', articulo_esp='$articuloesp', articulo_cat='$articulocat', precio='$precio', descripcion_esp='$descripcionesp', descripcion_cat='$descripcioncat', novedad='$novedad', articulo_image='$filePath' WHERE id_articulo = 'id_articulo'"; pon un echo $Sql; y revisa si la sentencia está bien armada. PD: si es posible, evita postear tanto código, concéntrate en la parte que interesa. |
#16• Hola, bueno ya hemos avanzado algo. Ahora puedo actualizar la imagen si selecciono una nueva. Si actualizo el resto de datos y dejo la imagen que ya había, recibo el error "Error uploading file". |
#17• Escrito originalmente por lingo5 bueno ya hemos avanzado algo. Ahora puedo actualizar la imagen si selecciono una nueva. Si actualizo el resto de datos y dejo la imagen que ya había, recibo el error "Error uploading file". Tendrás que, antes de intentar subir la imagen, comprobar si ya esta... |
#18• uuuufffff....esto si que ya no tengo ni idea de como hacerlo. De todas maneras el script asigna un nombre aleatorio cada vez....ayuda porfa. |
#19• Escrito originalmente por lingo5 uuuufffff....esto si que ya no tengo ni idea de como hacerlo. De todas maneras el script asigna un nombre aleatorio cada vez....ayuda porfa. is_file() |
#20• OK, he intentado esto para comprobar si hay una imagen...pero no funciona. Estoy muy perdido. Gracias. <? if(isset($_POST['editar'])) $filePath = $uploadDir . $fileName; // get the file extension first // make the random file name // and now we have the unique file name for the upload file $result = move_uploaded_file($tmpName, $filePath); |
#21• Me auto-cito: Escrito originalmente por GestionXls PD: si es posible, evita postear tanto código, concéntrate en la parte que interesa. así no te perderás... |
#22• hola alguien me puede ayudar hice un formulario para insertar a una tabla de mi base de datos pero no inserta nada y no se donde esta mal espero me pedan ayudar se los agradesco <HTML> $link = mysql_connect("localhost", "root", "") </BODY> |
#23• Hola GestionXls, por favor, me podrías orientar un poco más sobre como hacer el is_file() utilizando el código que ya uso para subir imágenes?. El caso es que este me funciona bien subiendo la imagen, guardando la ruta en la BD y asignando el nombre aleatorio. El problema es que si actualizo un registro sin cambiar la imagen no me deja. He de cambiar la imagen cada vez. He buscado por todas partes pero no encuntro nada que yo entienda y pueda implementar a este código. Un ejemplo me iría muy bien. Gracias. |
#24• http://es.php.net/manual/es/function.is-file.php Devuelve TRUE si el archivo con el nombre dado existe y es un archivo regular, FALSE de lo contrario. |
#25• Hola de nuevo. Bueno, como que ya estaba un poco saturado de este lio me he tomado unos días de descanso....a veces pasa que es mejor dejar algo unos días cuando se llega al punto de que le das tantas vueltas que ya ni sabes lo que hace. Me pongo con function.is a ver si consigo algo. |
ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un nuevo tema en lugar de responder al actual |
Opciones: Ir al subforo: |
Permisos: TU NO PUEDES Escribir nuevos temas TU NO PUEDES Responder a los temas TU NO PUEDES Editar tus propios mensajes TU NO PUEDES Borrar tus propios mensajes |
Temas similares | ||||
Tema | Usuarios | Respuestas | Visitas | Actividad |
---|---|---|---|---|
Por: udelunar, el 07/May/2009, 18:09 | 5 | 8k | May/09 | |
Por: craven78, el 09/Oct/2014, 17:19 | 3 | 2k | Jan/15 | |
Por: franciskiko_20, el 15/Oct/2011, 04:17 | 1 | 5k | Oct/11 | |
Por: fb@100001468962018, el 04/Ago/2011, 02:36 | 1 | 2k | Aug/11 | |
Por: cesarobcn, el 05/May/2010, 19:08 | 2 | 4k | May/10 |