Foros del Web » Programando para Internet » PHP »

PHP OO Mostrar/ocultar botones en un formulario

Estas en el tema de Mostrar/ocultar botones en un formulario en el foro de PHP en Foros del Web. Buenas noches a todos, es mi primer tema creado, estoy comenzando programacion y tengo un temita con los formularios (lo puse en php porque tengo ...
  #1 (permalink)  
Antiguo 01/06/2012, 23:36
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 10 meses
Puntos: 0
Sonrisa Mostrar/ocultar botones en un formulario

Buenas noches a todos, es mi primer tema creado, estoy comenzando programacion y tengo un temita con los formularios (lo puse en php porque tengo entendido que se soluciona aca), tengo mi servidor apache funcionando en linux, laburo con eclipse y todo anda de maravillas, el problema es que no se como hacer una funcion, quiero que el formulario valla "mostrando" o "desocultando" los botones submit que tengo segun haga falta, ejemplo. si no tengo datos cargados en los campos, no aparezca ningun boton, si cargo algun dato (validado ya) que me habilite el submit agregar solamente, si selecciono para modificar alguno de la lista (linkea mediante post, y con javascript hice que los muestre en los campos para ser modificados) que solo aparezca el boton guardar, cancelar o borrar, etc. espero ser claro, espero sus sugerencias.


Tenia pensado hacerlo mediante js:

// onKeyPress="if (this.value!=='') {document.form1.boton_agregar.type='submit'; }

o bien en PHP en cada "CASE" del switch, pero tampoco se como "valido" que los campos del formulario en html estan vacios, solo se hacerlo mediante javascript, ya que si llamo a los campos como $xxxx variable del campo me trae la q este en ese momento, y no podria identificar nunca si esta vacio.

Nota: hasta el momento todo anda perfectamente, solo quiero agregar ese chiche.


mi codigo es este:





<? // Incluye el codigo encontrado en funciones.php

include ("./funciones.php");
conectardb(); //llama a la funcion conectardb (loguea y selcciona db)
?>


<?php


IF (ISSET($_POST)) { // si la variable esta inicializada $_post es un cajon con datos adentro
foreach ($_POST as $var => $val){ // para cada $_post que asigne los valores a la variable $var y le de el valor $val, luego
$$var = $val; //convierte el nombre del campo en variable ($_POST[codigo] lo transforma en $codigo
//echo "POST".$var."<BR>";
}
}


switch ($quehacer) {


case "agregar":
$sqladd = "INSERT INTO productos (codigo,descripcion) VALUES ('$codigo','$descripcion')"; //inserta un nuevo registro, donde le dice que valores (values) darle en codigo y descr..)
$consulta = mysql_query($sqladd);
unset($descripcion);
unset($codigo);
break;


case "modificar":
$sql = "UPDATE productos set descripcion = '$descripcion', codigo = '$codigo' WHERE id='$id'" ; // se modifica un registro, donde set dice que es lo q cambia, y where dice la condicion (porque sino borraria todos los registros)
$consulta = mysql_query($sql);
unset($descripcion);
unset($codigo);
break;


case "borrar":

$sqldel = "DELETE FROM productos WHERE id='$id'" ;
$consulta = mysql_query($sqldel);
unset($descripcion);
unset($codigo);
break;


case "listar":

break;

}

// onKeyPress="if (this.value!=='') {document.form1.boton_agregar.type='submit'; }"
// onKeyPress="if ((this.value!=='') && (document.form1.codigo.value!=='')) {document.form1.boton_agregar.type='submit'; }"
// onclick="document.form1.quehacer.value='agregar'; if (document.form1.codigo.value=='') {alert('No hay datos cargados en el campo nombre');return false} else {if (document.form1.descripcion.value=='') {alert('No hay datos cargados en el campo descripcion');return false}}; ">
?>



<form name=form1 ACTION='<?php $PHP_SELF ?>' METHOD='POST'>
Codigo: <input name=codigo type="text" value='<?php echo $codigo?>' >
Descripcion: <input name=descripcion type="text" value='<?php echo $descripcion?>' >
<input name=id type="hidden" value='<?php echo $id?>'>
<input type="hidden" name="quehacer" >

<input type="submit" name="boton_agregar" value="Agregar" onclick="document.form1.quehacer.value='agregar'; if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('Por favor complete todos los campos obligatorios !!');return false}; ">

<input type="submit" name="boton_borrar" value="Borrar" onclick="if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('No selecciono ningun registro para borrar !!');return false}; if (confirm('Esta seguro que quiere eliminar <?php echo"$codigo ", "$descripcion" ?> ?')) {
document.form1.quehacer.value='borrar';} else {document.form1.codigo.value='';
document.form1.descripcion.value='';document.form1 .submit()}">
<input type="submit" name="boton_guardar"value="Guardar" onclick="if (confirm('Esta seguro que quiere modificar <?php echo"$codigo ", "$descripcion" ?> ?')) {
document.form1.quehacer.value='modificar';}else {document.form1.codigo.value='';
document.form1.descripcion.value='';document.form1 .submit()}">

<?php // esto anterior pregunta en los botones de borrar y modificar si realmente quiere realizar la accion, sino que borre los campos y no haga nada?>

</form>
<html>
<head>
<title> --== AGENDA ==--</title>
</head>
<body>


<?


$resultado = mysql_query("SELECT * FROM productos"); // le asigna todo lo encontrado en la tabla productos a la variante $resultado
$num_rows = mysql_num_rows ($resultado); // nos dice cuantas filas tiene la tabla "$resultado" (lo encontrado desde el select)


echo "<br>Hay actualmente $num_rows registros en tu base de datos"; // muestra en pantalla cuantas filas son (en texto)

echo "<br><br><table border=1>\n"; // muestra bordes de la tabla
while ($a_row = mysql_fetch_row ($resultado)) // nos asigna a $a_row la matriz que necesita para la tabla $resultado
{$codigo = "caca";
echo "<tr><td> <img title='Modificar' src='./images/up.png' onclick=\"document.form1.quehacer.value='listar';
document.form1.id.value='$a_row[0]';
document.form1.codigo.value='$a_row[1]';
document.form1.descripcion.value='$a_row[2]';document.form1.boton_borrar.type='submit';docume nt.form1.submit()\"> </td>

<td> <img title='Eliminar' src='./images/x.png' onclick=\"if (confirm('Esta seguro que quiere eliminar el registro $a_row[1] $a_row[2] ?'))
{document.form1.quehacer.value='borrar'; document.form1.id.value='$a_row[0]';
document.form1.submit()} else {document.form1.codigo.value='';
document.form1.descripcion.value='';document.form1 .submit()} \" </td>";

foreach ($a_row as $field)
echo "\t<td>$field</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_close($link);


?>

</body>
</html>


Gracias, saludos desde Tierra del Fuego, Argentina.

Renzo
  #2 (permalink)  
Antiguo 02/06/2012, 01:42
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Mostrar/ocultar botones en un formulario

Podrias hacerlo con PHP, pero para cada cambio de campo tendrias que llamar al servidor, comprobar y reenviar formulario.....El caminó óptimo para eso es javascript, ya que es en el navegador donde tienes todos los datos. jquery te va a yudar mucho en esa labor.

Saludos.
  #3 (permalink)  
Antiguo 02/06/2012, 17:19
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Mostrar/ocultar botones en un formulario

Claro Oscar, gracias por responde, a eso me referia si hay que hacerlo en JavaScript, yo puse en el post como tenia pensado hacerlo, algun idea por donde arrancar asi voy probando?

Saludos!

Nota: asi como lo queria hacer yo, el boton del formulario para arrancar esta como hidden, y luego con javascript le digo q si en el onkeypress hay algun cambio q pase a "submit" el type de ese campo, de esa manera me lo muestra, el problema es que si borro lo que escribi el boton no desaparece, osea q onkeypress no me sirve, tendria q ser alguna funcion de js que sea "si hay algo en este campo de texto bla bla bla..."

espero sus comentarios!

Saludos
  #4 (permalink)  
Antiguo 03/06/2012, 03:35
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Mostrar/ocultar botones en un formulario

te dejo un miniejemplo de lo que creo que pides:

Código PHP:
<form name='form1' ACTION='' METHOD='POST'>
Descripcion: <input name="descripcion" type="text" value='hola' onkeyup ='FuncionTest(this);'
<
input type="submit" name="boton_test" value="Agregar">
</
form>
<
script>
function 
FuncionTest(control){
    if (
control.value!=='') {
        
document.form1.boton_test.type='submit';
    } else {
        
document.form1.boton_test.type='hidden';
    }
}
</script> 
Si es eso lo que quieres, adáptalo a tu código.
Espero te sirva.
Saludos!
  #5 (permalink)  
Antiguo 03/06/2012, 14:42
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 10 meses
Puntos: 0
Desacuerdo Respuesta: Mostrar/ocultar botones en un formulario

Gracias oscar por responder nuevamente, probe tu codigo solo y anda barbaro, excepto que no puedo arrancar con el campo vacio porque me muestra igualmente el "Agregar" que asignaste al submit, y es justamente lo que necesito, q no aparezca hasta q escriba algo (arrancando con el campo en blanco)

igualmente lo agregue a mi codigo y no me funciona, lo puse tal cual pero dirigiendo el js a mi form1(objeto) y con mala suerte tampoco funciona alli.

Espero tus comentarios, gracias!!



<form name=form1 ACTION='<?php $PHP_SELF ?>' METHOD='POST'>
Codigo: <input name=codigo type="text" value='<?php echo $codigo?>' >
Descripcion: <input name=descripcion type="text" value='<?php echo $descripcion?>' onkeyup ='FuncionTest(this); >
<input name=id type="hidden" value='<?php echo $id?>'>
<input type="hidden" name="quehacer" >

<input type="submit" name="boton_agregar" value="Agregar" onclick="document.form1.quehacer.value='agregar'; if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('Por favor complete todos los campos obligatorios !!');return false}; ">

<input type="submit" name="boton_borrar" value="Borrar" onclick="if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('No selecciono ningun registro para borrar !!');return false};
if (confirm('Esta seguro que quiere eliminar <?php echo"$codigo ", "$descripcion" ?> ?')) {
document.form1.quehacer.value='borrar';} else {document.form1.codigo.value='';
document.form1.descripcion.value='';document.form1 .submit()}">
<input type="submit" name="boton_guardar"value="Guardar" onclick="if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('No selecciono ningun registro para guardar la modificacion !!');return false};
if (confirm('Esta seguro que quiere modificar <?php echo"$codigo ", "$descripcion" ?> ?')) {
document.form1.quehacer.value='modificar';}else {document.form1.codigo.value='';
document.form1.descripcion.value='';document.form1 .submit()}">

<?php // esto anterior pregunta en los botones de borrar y modificar si realmente quiere realizar la accion, sino que borre los campos y no haga nada?>

</form>


<script>
function FuncionTest(control){
if (control.value!=='') {
document.form1.boton_agregar.type='submit';
} else {
document.form1.boton_agregar.type='hidden';
}
}
</script>
  #6 (permalink)  
Antiguo 03/06/2012, 15:44
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Mostrar/ocultar botones en un formulario

Hola de nuevo.
si el input esta vacio de entrada y quieres que no aparezca el boton, decláralo de entrada como hidden.
En cuanto a que no te funciona en tu código es porque te olvidaste cerrar la comilla del evento.

Te dejo tu código con eso corregido.
Código PHP:
<form name=form1 ACTION='<?php $PHP_SELF ?>' METHOD='POST'>
Codigo: <input name=codigo type="text" value='<?php echo $codigo?>' >
Descripcion: <input name=descripcion type="text" value='<?php echo $descripcion?>' onkeyup ='FuncionTest(this);' > 
<input name=id type="hidden" value='<?php echo $id?>'>
<input type="hidden" name="quehacer" >

<input type="hidden" name="boton_agregar" value="Agregar" onclick="document.form1.quehacer.value='agregar'; if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('Por favor complete todos los campos obligatorios !!');return false}; "> 

<input type="submit" name="boton_borrar" value="Borrar" onclick="if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('No selecciono ningun registro para borrar !!');return false};
if (confirm('Esta seguro que quiere eliminar <?php echo"$codigo ""$descripcion" ?> ?')) { 
document.form1.quehacer.value='borrar';} else {document.form1.codigo.value='';
document.form1.descripcion.value='';document.form1 .submit()}">
<input type="submit" name="boton_guardar"value="Guardar" onclick="if ((document.form1.codigo.value=='') || (document.form1.descripcion.value=='')) {alert('No selecciono ningun registro para guardar la modificacion !!');return false};
if (confirm('Esta seguro que quiere modificar <?php echo"$codigo ""$descripcion" ?> ?')) {
document.form1.quehacer.value='modificar';}else {document.form1.codigo.value='';
document.form1.descripcion.value='';document.form1 .submit()}">

<?php // esto anterior pregunta en los botones de borrar y modificar si realmente quiere realizar la accion, sino que borre los campos y no haga nada?>

</form>


<script>
function FuncionTest(control){
if (control.value!=='') {
document.form1.boton_agregar.type='submit';
} else {
document.form1.boton_agregar.type='hidden';
}
}
</script>
Saludos.
  #7 (permalink)  
Antiguo 03/06/2012, 15:55
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Mostrar/ocultar botones en un formulario

Naaaa, sos muy capo, no vi lo de las comillas!!! FUNCIONO DE MARAVILLAS!!, ahora hago eso con el resto segun quiera, muchas gracias capo! te pasaste!!!

Saludos desde Tierra del Fuego Oscar!
  #8 (permalink)  
Antiguo 03/06/2012, 15:58
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Mostrar/ocultar botones en un formulario

Saludos piiiibe!!

Etiquetas: botones, dee, dinamico, formulario, javascript, submit, validar
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 22:31.