• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Diseñando con PHP, HTML,CSS y javascript. Post de consultas.

Ignacio G.R.

De profesión Chapuzas
Registrado
15 May 2015
Mensajes
212
Puntos
43
Buenas compañeros. Abro este hilo, para que me ayudeis a resolver problemas que voy teniendo en alguno de mis diseños, ver que cosas se pueden y no pueden hacer, etc.

Por ahora voy con la primera consulta, a continuacion explicare lo que quiero hacer.



---------------------------
Formulario de entrada de producto introduzco los datos y click al submit.

En la misma pestaña abre el archivo php que recibe el formulario si todo salio bien lo abre con 2 lineas pintadas en pantalla (3 echos)

1ºDatos incorporados correctamente a base de datos.

2º url1 (regreso al formulario) .

3º url2(cerrar ventana)
---------------

Como veis quiero que tras haber enviado el nuevo producto y haberlo incorparado a la base de datos me salga un aviso y dos enlaces, uno enlazando al formulario, por si se quieren introducir mas productos y otro que cierre la ventana/pestaña.

El problema es este ultimo. Lo he hecho con javascript, pero no logro que cierre la pestaña si la pagina se abrió en la misma pestaña que el formulario.

Sin embargo si lo que hago es que al darle a submit abra otra pestaña o un popup, (en lugar de en la misma pestaña), la "url" para cerrar si funciona.


Obviamente estoy usando el window.close() He buscado por ahi en ingles y al parecer solo sirve para cerrar ventanas o pestañas que el propio javascript haya abierto (de ahi que funcione con pestañas nuevas o popup pero no con una pestaña ya abierta que actualiza su contenido con otro archivo php).

¿Alguna idea de como hacerlo funcionar o hacerlo de otra forma?


Si quereis ver el codigo avisad (ahora mismo no lo tengo, me he dejado olvidado el usb donde lo tengo guardado e ire a buscarlo en media hora).
 
Sin codigo esto es una locura

Enviado desde mi SM-G920F mediante Tapatalk
 
+1 para woxt
 
Aqui os lo traigo, he quitado para para probar todo el php y alguno de los campos imput del formulario que usaban llamadas a la base de datos, funciona de la misma forma que con todo, aqui os lo dejo:


codigo formulario:


codigo opcion 1 (abre pestaña nueva que si se cierra)


Código:
				<form action="alta_productos_OK.html" target="popup" onsubmit="window.open('','_self','')" name="alta_producto" method="post" enctype="multipart/form-data">

					<label> Nombre del Producto: </label> <input type="text" name="nombre" placeholder="introduce el nombre del producto">
<br>
					<label> Descripcion del producto: </label> <input type="text" name="descripcion" placeholder="introduce una breve descripcion del producto">
<br>
					<label> Precio del Producto: </label> <input type="text" name="precio" placeholder="introduce el precio del producto">
<br>
					<label> Stock inicial del Producto: </label> <input type="number" name="stock" placeholder="introduce el stock inicial del producto">

					<div class="input"><input type ="reset" name="borrar"> 
					<div class="input"><input type ="submit" value="enviar" name="enviar">

				</form>





codigo opcion 2 idem pero en un popup del tamaño puesto en el window.open

Código:
					<form action="alta_productos_OK.html" target="popup" onsubmit="window.open('','popup','width=600,height=400')" name="alta_producto" method="post" enctype="multipart/form-data">

					<label> Nombre del Producto: </label> <input type="text" name="nombre" placeholder="introduce el nombre del producto">
<br>
					<label> Descripcion del producto: </label> <input type="text" name="descripcion" placeholder="introduce una breve descripcion del producto">
<br>
					<label> Precio del Producto: </label> <input type="text" name="precio" placeholder="introduce el precio del producto">
<br>
					<label> Stock inicial del Producto: </label> <input type="number" name="stock" placeholder="introduce el stock inicial del producto">

					<div class="input"><input type ="reset" name="borrar"> 
					<div class="input"><input type ="submit" value="enviar" name="enviar">

					</form>



codigo opcion 3 abre en la misma pestaña pero no funciona el cierre



Código:
					<form action="alta_productos_OK.html" target="_self" onsubmit="window.open('','_self','')" name="alta_producto" method="post" enctype="multipart/form-data">

					<label> Nombre del Producto: </label> <input type="text" name="nombre" placeholder="introduce el nombre del producto">
<br>
					<label> Descripcion del producto: </label> <input type="text" name="descripcion" placeholder="introduce una breve descripcion del producto">
<br>
					<label> Precio del Producto: </label> <input type="text" name="precio" placeholder="introduce el precio del producto">
<br>
					<label> Stock inicial del Producto: </label> <input type="number" name="stock" placeholder="introduce el stock inicial del producto">

					<div class="input"><input type ="reset" name="borrar"> 
					<div class="input"><input type ="submit" value="enviar" name="enviar">

					</form>


codigo a mostrar en la nueva pestaña (no cambia):


Código:
					El producto $producto ha sido dado de alta correctamente<br>
					<a  href='javascript:onclick=window.close()'>Cerrar pestaña</a>
 
Tú mismo has dado con la respuesta.
"Los scripts no puden cerrar ventanas que no hayan abierto"
Pues abre una ventana que sustituya a la actual y ciérrala.
Si tienes problemas con el código avisa, pero es muy simple.
Un saludo.
 
Tú mismo has dado con la respuesta.
"Los scripts no puden cerrar ventanas que no hayan abierto"
Pues abre una ventana que sustituya a la actual y ciérrala.
Si tienes problemas con el código avisa, pero es muy simple.
Un saludo.

Gracias por confirmarmelo. Seguire trabajando con la web si veo alguna cosa más volveré a postear aqui.
 
Arriba