Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Clase para formulario

Estas en el tema de Clase para formulario en el foro de PHP en Foros del Web. Estoy estudiando un poco de php y estaba probando una clase que mostrara y procesara un formulario pero creo que no llega a recoger la ...
  #1 (permalink)  
Antiguo 04/11/2013, 14:02
 
Fecha de Ingreso: mayo-2013
Mensajes: 75
Antigüedad: 10 años, 11 meses
Puntos: 0
Clase para formulario

Estoy estudiando un poco de php y estaba probando una clase que mostrara y procesara un formulario pero creo que no llega a recoger la información POST.
Os mando el código...

Código:
<!doctype html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" type="text/css" href="css/principal.css">
</head>
<body>
	<?php include('processimage.php'); ?>
	<?php
		$upload=new Upload;
		$upload->checkSubmit();
	?>
</body>
</html>
y la clase es...

Código:
<?php

	class Upload{

			private $newfile;
			private $submit;


		function checkSubmit(){

			if(isset($_POST['submit'])){
				$this->processForm();
			}else{
				$this->showForm();
			};


		}

		function showForm(){

			echo'
				<div id="wrapper">
				<header>
					<img src="img/horizonte.jpg"/>
				</header>
				<section>
					<form method="POST" action="processimage.php" enctype="multipart/form-data" >
						<input type="file" name="newimage"/>
						<input type="submit" name="submit" value="Subir archivo"/>
				</section>
			</div>
			';

		}

		function processForm(){

						$uploaddir="img/";
						$uploadfile = $uploaddir . basename($_FILES['newimage']['name']);

						if (move_uploaded_file($_FILES['newimage']['tmp_name'], $uploadfile)) {

			    			echo "El archivo es válido y fue cargado exitosamente.\n";
						} else {
			    			echo "¡Posible ataque de carga de archivos!\n";
						}
	}
}
?>
  #2 (permalink)  
Antiguo 04/11/2013, 14:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Clase para formulario

El action indica hacia donde se va a enviar dicho formulario, pero tu no muestras lo que hay dentro de dicho script, ¿esperas a que adivinemos lo que te resulta?

Además antes de querer encapsular todo en un clase ya deberías ser capaz de resolverlo sin clase alguna, ¿ya sabes trabajar formularios en su forma más primitiva?

Si no dominas eso dudo que usar clases te ayude de algo, así que antes de correr te sugiero aprender a caminar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/11/2013, 14:24
 
Fecha de Ingreso: mayo-2013
Mensajes: 75
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Clase para formulario

Bueno aunque soy novato en esto he podido hacerlo sin clases, sólo con funciones.
Pero al hacerlo con clases no sé como obtener las variables POST y procesarlas desde las funciones de la misma. En la funcion checkSubmit() creo que no recoge $_POST['submit']

Puedes ponerme un ejemplo básico o rectificar este?
  #4 (permalink)  
Antiguo 04/11/2013, 14:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Clase para formulario

La super-variable $_POST es global, esto quiere decir que es accesible desde cualquier punto de nuestra programación, ya sean funciones o métodos funciona exactamente igual.

Entonces si no funciona como esperas es porque aún no entiendes lo básico de la mecánica de formularios, ¿es posible que muestres lo que tienes en el script que indica el action o tenemos que seguir adivinando?

Es decir, ¿se está mostrando tu formulario pero no se está procesando?

Si eso es así entonces el problema está en el script que recibe al formulario, en tu caso, lo indicas en el action: processimage.php

Y es dicho script el que desconocemos, pues ahí deberías aplicar la misma lógica de tu clase Upload.

¿Cómo adivinar si lo estás haciendo correctamente?

Ahora, si tu idea es mostrar el formulario en la misma pagina que muestras entonces el action debería estar vacío.

Por eso te sugiero comprendas dicho comportamiento antes de querer abordar otra técnica.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/11/2013, 14:43
 
Fecha de Ingreso: mayo-2013
Mensajes: 75
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Clase para formulario

Supongo que cambiando esto...
<form method="POST" action="<php processForm() ?>" enctype="multipart/form-data" >

Lo he probador pero no me deja XAMPP seguramente por algo de privilegios.
  #6 (permalink)  
Antiguo 04/11/2013, 14:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Clase para formulario

Cita:
Iniciado por disenosergio Ver Mensaje
Supongo que cambiando esto...
<form method="POST" action="<php processForm() ?>" enctype="multipart/form-data" >

Lo he probador pero no me deja XAMPP seguramente por algo de privilegios.
Estás equivocado, ¿si sabes lo que debe ir en el action de un formulario?

Y vamos, que esa pregunta ni siquiera corresponde a PHP, es HTML básico, ¿lo sabes?

Además si tuvieras la razón aun así la sintaxis que usas está errada, porque processForm() no es una función sino un método, y dado el contexto sería así:
Código PHP:
Ver original
  1. <?php $this->processForm(); ?>

Pero el resultado sería igual de malo, ¿no ya sabias hacerlo de forma básica?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: clase, formulario, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:00.