Programación php
Email: Password:


¡Regístrate gratis! | ¿Has perdido tu password?

Home
Blog

En él que podrás informarte de todas las noticias relacionadas con el posicionamiento de páginas web.

Ir al Blog de posicionamiento web



Foro de programación en PHP

Responder el mensaje

Ayuda con php y formularios

Autor: ferne17
Publicado: 11-6-2011 07:47 PM
Hola, soy nuevo en este foro y necesito un poco de ayuda, lo que pasa es que estoy estudiando sobre php y en libros hay ejercicios, que me dicen que me serán de utilidad para poder comprender más, aparte que la practica hace al maestro. Bueno fuera de eso lo que busco es que me ayuden. Tengo este codigo en html y php.

<html>
<head>
<title>
Formulario Notas
</title>
</head>
<body>
<form action="tareajose2.php" method="get">
Nota Calculo1: <input type="text" name="cal1" /><br />
Nota Calculo2: <input type="text" name="cal2" /><br />
Nota Calculo3: <input type="text" name="cal3" /><br />
Nota Algebra1: <input type="text" name="alg1" /><br />
Nota Algebra2: <input type="text" name="alg2" /><br />
Nota Algebra3: <input type="text" name="alg3" /><br />
Nota Programacion1: <input type="text" name="pro1" /><br />
Nota Programacion2: <input type="text" name="pro2" /><br />
Nota Programacion3: <input type="text" name="pro3" /><br />
<input type="submit" value="Ingresar notas"/>
</form>
</body>
</html>

<?php
class Alumno {

public $calculo = array();
public $algebra = array();
public $programacion = array();

private function notas(){
echo "Calculo: {$this->calculo[0]} / {$this->calculo[1]} / {$this->calculo[2]}</br>";
echo "Algebra: {$this->algebra[0]} / {$this->algebra[1]} / {$this->algebra[2]} </br>";
echo "Programacion: {$this->programacion[0]} / {$this->programacion[1]} / {$this->programacion[2]} </br>";
}
public function __construct(){
$this->calculo[0] = $_GET['cal1'];
$this->calculo[1] = $_GET['cal2'];
$this->calculo[2] = $_GET['cal3'];
$this->algebra[0] = $_GET['alg1'];
$this->algebra[1] = $_GET['alg2'];
$this->algebra[2] = $_GET['alg3'];
$this->programacion[0] = $_GET['pro1'];
$this->programacion[1] = $_GET['pro2'];
$this->programacion[2] = $_GET['pro3'];
$this->notas();
}
}

function ingresarnotas(){
$minota = new alumno();
}

ingresarnotas();
?>

Bueno, mi codigo lo que hace es guardar la nota de cada una de las tres pruebas de los tres ramos; calculo, algebra y programacion. Hasta este momento todo anda genial, pero ahora yo cuando necesito cambiar UNA nota, una sola nota, si ingreso solo la nueva nota se me borran las demas. Bueno yo entiendo que mi error esta en que dejo campos vacios, pero no encuentro la solucion.
Una solucion que ami se me ocurre es hacer un boton de ingresar nota, para cada nota ... pero no se como hacerlo, nose como hacer que mi boton ingresar nota solo modifique la nota que yo quiero. Si se les ocurre una idea mejor me gustaria que me la dijieran.
Gracias de antemano por la ayuda
Autor: Maquin
Publicado: 13-6-2011 12:35 PM
Bueno siempre hay miles de formas de hacer las cosas, una forma sería conservar el objeto... porque cada vez que entras a tu archivo php te lo crea. La forma de conservarlo podría ser por ejemplo a través de una variable de sessión, en la cual lo creas la primera vez... con un new. por ejemplo.... $_SESSION['notas'] = new Alumno();

Luego en el formulario... vas poniendo las notas siempre en los campos... por ejemplo con value="<?php $_SESSION['notas']->calculo[0]; ?>". Cuando le des al botón y te lleve de nuevo a la página de php, solo con comprobar si existe el objeto en la sessión (si es así modificas los campos por los nuevos) sino pus te lo creas, con ello bastaría. Por ejemplo con este código:



public function modificar()
{
$this->calculo[0] = $_GET['cal1'];
$this->calculo[1] = $_GET['cal2'];
$this->calculo[2] = $_GET['cal3'];
$this->algebra[0] = $_GET['alg1'];
$this->algebra[1] = $_GET['alg2'];
$this->algebra[2] = $_GET['alg3'];
$this->programacion[0] = $_GET['pro1'];
$this->programacion[1] = $_GET['pro2'];
$this->programacion[2] = $_GET['pro3'];
$this->notas();
}

y cambiando la función esta ingresarnotas() por.....

function ingresarnotas(){
if(!isset($_SESSION['notas']))
$minota = new alumno();
else
modificar();
}

Siguiendo esos pasos ya bastaría, un saludo!