Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Modificar atributos de inputs

Estas en el tema de Modificar atributos de inputs en el foro de PHP en Foros del Web. Buenas noches: Necesito saber como puedo modificar atributos de input desde php, ya que quiero que algunos botones se desactiven y otros se activen. Gracias....
  #1 (permalink)  
Antiguo 18/01/2015, 13:59
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Modificar atributos de inputs

Buenas noches:
Necesito saber como puedo modificar atributos de input desde php, ya que quiero que algunos botones se desactiven y otros se activen.
Gracias.
  #2 (permalink)  
Antiguo 18/01/2015, 17:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Modificar atributos de inputs

Es posible pero sólo puedes imprimirlos o no imprimirlos, no puedes modifcarlos "al vuelo", ya que para eso necesitarías Javascript y no PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/01/2015, 00:33
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Modificar atributos de inputs

Hola:
No entiendo tu respuesta de imprimirlos o no.
La idea es que hay botones activados y no activados según el usuario este haciendo o vaya hacer una tarea.
Lo hago a través del evento onclick de un input type button y consigo lo que quiero.
Cuando lo hago a través de un botón type submit, el evento se produce pero seguidamente se ejecuta php y las modificaciones alcanzadas con el evento se desactivan y el formulario vuelve a su estado normal por lo que los botones no están desactivados o activados de acuerdo a lo que yo quiero.
Te ruego un ejemplo de lo que me intentas explicar.
Gracias.
  #4 (permalink)  
Antiguo 19/01/2015, 02:21
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Modificar atributos de inputs

Un botón de tipo submit siempre va a enviar el formulario a no ser que le digas lo contrario en su evento onclick. Puedes probar a modificar ese botón de tipo submit y cambiarlo por un button y en el onclick del button hacer el control de envío del formulario. Desde él tendrías que, después de hacer lo que necesites, hacer el submit del formulario.

De todas formas, si puedes poner más datos de lo que quieres hacer o algún fragmento de tu código seguro que te podremos ayudar mejor.
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #5 (permalink)  
Antiguo 19/01/2015, 03:33
 
Fecha de Ingreso: enero-2015
Mensajes: 1
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Modificar atributos de inputs

hola disculpen por meterme y hablar de otro tema que no este pero me podrian ayudar con este ejercicio



<?php

class escuela {

public function InsertarAlumno($nombre, $apellido) {
return $nombre;
return $apellido;
}

public function DatosColegio($Colegio) {
return $Colegio;
}

public function DatosCurso($curso) {
return $curso;
}

public function resultado($n1, $n2, $n3, $prom) {
$prom = ($n1 * 0.2) + ($n2 * 0.3) + ($n3 * 0.5);

if ($prom >= 11) {
echo "Estado: APROBADO";
} else {

echo "Estado: DESAPROBADO";
}
return $prom;
}

}

$c = new escuela();
$nombre = $_GET["nombre"];
$apellido = $_GET["apellido"];
$Colegio = $_GET["Colegio"];
$curso = $_GET["curso"];
$n1 = $_GET['n1'];
$n2 = $_GET['n2'];
$n3 = $_GET['n3'];

$prom = $_GET['prom'];




$InsertarAlumno = $c->InsertarAlumno($nombre, $apellido);
$DatosColegio = $c->DatosColegio($Colegio);
$DatosCurso = $c->DatosCurso($curso);
$resultado = $c->resultado($n1, $n2, $n3, $prom);
?>

<html>
<head>
<title>ESCUELA</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>ESCUELA </h1>
<p>ESTE ES UN DEMO</P>
<form>
<hr/>
<h2>NOMBRE COMPLETO DEL ALUMNO<h2/>
<div>
<label>NOMBRE</label>
<input type="text" name="nombre" id="txtnombre"value="<?php echo$nombre; ?>"/>
<label>APELLIDO </label>
<input type="text" name="apellido" id="txtapellido"value="<?php echo$apellido; ?>"/><br/>
</div> <br/>
<div>
<label>NOMBRE DE LA COLEGIO</label>
<input type="text" name="Colegio" id="txtcolegio"value="<?php echo$Colegio; ?>"/><br/>

</div> <br/>
<div>
<label>NOMBRE DEL CURSO</label>
<input type="text" name="curso" id="txtcurso"value="<?php echo$curso; ?>"/><br/>

</div>

<div>
<label>resultado</label><br/>
<input type="text" name="n1" id="txtpar1"value="<?php echo$n1; ?>"/>
<input type="text" name="n2" id="txtpar2"value="<?php echo$n2; ?>"/>
<input type="text" name="n3" id="txtpar3"value="<?php echo$n3; ?>"/>
</div><br/>

<button>CALCULAR</button>
<div>
<label> mostrar </label><br/>
<span><?php echO" El Nombre del Alumno es: " . $nombre; ?> </span><br/>
<span><?php echo "El Apellido del Alumno es :" . $apellido; ?> </span><br/>
<span><?php echo "El Colegio en donde estudio es :" . $Colegio; ?> </span><br/>
<span><?php echo "El Curso que lleva :" . $curso; ?> </span><br/>
<span><?php echo "Su Promedio es " . $resultado; ?> </span><br/>


</div>
</form>

</body>
</html>


la verdad no me sale cuando lo corro en neatbeans lo que se refiere al index cuando corre deberia salir aprobado o desaprobado pero no me sale como podria arreglarlo, serian amables de responderme y disculpenme
  #6 (permalink)  
Antiguo 19/01/2015, 09:44
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Modificar atributos de inputs

Es un formulario diseñado para la entrada de información que se almacena en una base de datos.
Este es el código que genera los diferentes botones que forman parte del formulario.


Código HTML:
Ver original
  1. <input type="submit" name="btn1" value="Primero"/>
  2. <input type="submit" name="btn1" value="Anterior"/>
  3. <input type="text"   class="vis" name="txtvariable" value="<?php echo $cont ?>"/>
  4. <input type="submit" name="btn1" value="Siguiente"/>
  5. <input type="submit" name="btn1" value="Ultimo"/>
  6. <?php echo "<font size=2> de ".$totreg."</font>";?>
  7.  
  8.  
  9. <input type="button" name="btn2" value="Nuevo"                      onclick="nuevo()" />
  10. <input type="button" name="btn1" value="Modificar"                  onclick="modificar()"/>
  11. <input type="submit" name="btn1" value="Buscar"/>
  12. <input type="submit" name="btn2" value="Eliminar" id="20"           onclick="eliminar()" />
  13. <input type="submit" name="btn2" value="Aceptar"  id="19" disabled />
  14. <input type="submit" name="btn2" value="Pruebas"                    onclick="prueba()"   />
  15. <input type="reset"  name="btn2" value="Cancelar" id="21" disabled  onclick="cancelar()" />

El botón de la linea 9 del código anterior con value="Nuevo" tiene como objeto:
dejar en blanco todos los casilleros (input type text) de entrada de datos.
Suprimir el atributo "solo lectura" de esos casilleros (input type text).
Pasar a estado "disabled" los botones que hay en la linea 1 à 5, 10,11,12,14.
Pasar a "enabled" los botones de la linea 13 y 15, que tienen su atributo en disabled.

Esto lo consigo mediante el siguiente codigo javascript invocando la función nuevo(), desde el evento onclick del mencionado botón:

Código Javascript:
Ver original
  1. function nuevo()
  2.         {  
  3.             document.getElementById('0').value=null;
  4.             document.getElementById('1').value=null;
  5.             document.getElementById('2').value=null;
  6.             document.getElementById('3').value="Apellidos";
  7.             document.getElementById('4').value=null;
  8.             document.getElementById('5').value=null;
  9.             document.getElementById('6').value=null;
  10.             document.getElementById('7').value=null;
  11.             document.getElementById('8').value=null;
  12.             document.getElementById('9').value=null;
  13.             document.getElementById('10').value=null;
  14.             document.getElementById('11').value=0.0;
  15.             document.getElementById('12').value=0.0;
  16.             document.getElementById('13').value=0.0;
  17.             document.getElementById('14').value=0.0;
  18.             document.getElementById('15').value=null;
  19.             document.getElementById('16').value=null;
  20.             document.getElementById('17').value=null;
  21.             document.getElementById('18').value=null;
  22.             document.getElementById('19').value="Aceptar";
  23.        
  24.             var mivar = document.getElementsByTagName('input');
  25.             for(i=0; i< mivar.length; i++)
  26.             {
  27.                 mivar[i].readOnly = false;
  28.             }
  29.             var mivar = document.getElementsByTagName('select');
  30.               for(i=0; i< mivar.length; i++)
  31.             {
  32.               mivar[i].disabled = false;
  33.             }
  34.             var mivar = document.getElementsByName('btn1');
  35.               for(i=0; i< mivar.length; i++)
  36.             {
  37.               mivar[i].disabled = true;
  38.             }
  39.             mivar = document.getElementById('9');
  40.             mivar.disabled = false;
  41.  
  42.             mivar = document.getElementById('18');
  43.             mivar.readOnly = false;
  44.             mivar = document.getElementById('19');
  45.             mivar.disabled = false;
  46.             mivar = document.getElementById('20');
  47.             mivar.disabled = true;
  48.             mivar = document.getElementById('21');
  49.             mivar.disabled = false;
  50.     };

Pero aquí me empezó a surgir el problema que me ha llevado a intentarlo a tarvés de php.
El caso es que dentro de los input hay un select que reproduzco:
Código Javascript:
Ver original
  1. <tr>
  2.         <td>
  3.              Apellidos:
  4.         </td>
  5.     <td>
  6.         <select id="3" class="tx"  disabled= "disabled" name="txtape" value="">
  7.         <option value= "<?php echo $var3id ?>"><?php echo $var3 ?></option>
  8.             <?php
  9.                 while ($fila=mysql_fetch_row($resultape))
  10.                 {              
  11.                                 echo "<option value='".$fila['0']."'>".$fila['1']."</option>";
  12.                 echo "<$var3id value='".$fila['0']."' ";
  13.                 }
  14.                          ?>
  15.         </select>
  16.     </td>
  17. </tr>

Pues bien, a través del código javascript, todos los inputs quedan en blanco, salvo el de este select, que mantien la información de la última selección en lugar de quedarse en blanco.
He comprobado que a través de php que establece la variable $var=null, el campo queda vacio. Cosa que, salvo indicaciones vuestras, consigo si el input "Nuevo" pasa de type=button a type=submit. Pero al hacerlo como submit, todo lo realizado a través del evento onclick que llama a la funcion nuevo(), queda como si hiciera un "reset", dejando el formulario en el estado anterior con todos los inputs rellenos, salvo el del select que queda en blanco.

De ahí que lo que estoy intentando es conseguir a través de php, lo que hago a través de javascript.
Espero haber trasladado la idea de lo que pretendo.
En resumidas cuentas es:
controlar o modificar atributos de etiquetas html mediante código php.
Gracias.
  #7 (permalink)  
Antiguo 19/01/2015, 11:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Modificar atributos de inputs

Cita:
controlar o modificar atributos de etiquetas html mediante código php.
Y es lo que dije desde un inicio, PHP no tiene "control" porque el HTML para PHP sólo es texto y nada más, sólo puedes "imprimir" el atributo/valor/html en cuestión.

Código PHP:
Ver original
  1. <input name="campo" value="<?php echo isset($_POST['campo']) ? $_POST['campo'] : ''; ?>">

Así es como puedes "controlar" el valor de un atributo, que sólo es imprimir el valor en el lugar correspondiente.

Para "controlar" un atributo es igual, lógica simple:
Código PHP:
Ver original
  1. <input name="foo" <?php echo !empty($bar) ? 'disabled' : ''; ?>>

¿Se entiende la idea?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 21/01/2015, 16:47
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Modificar atributos de inputs

Buenas noches:
Disculpa mi retraso en contestar a tu respuesta. He tenido que instalar un disco duro solido y reinstalar todo el sistema operativo y etc, etc.
Creo que entiendo lo que me estás diciendo.
Mañana haré una prueba y veré resultado.
Ojalá salga bien y podamos marcar tema como solucionado.
Un saludo.
  #9 (permalink)  
Antiguo 22/01/2015, 15:05
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Modificar atributos de inputs

Bien. Funcionó perfectamente.
Era lo que buscaba.
Creo una función en php que asigna un valor a una variable.

Código PHP:
Ver original
  1. if($btn=="Nuevo") //Vaciamos los inputs para instroducir nuevos registros.
  2.                     {
  3.                             //Codigo para dejar los inputs a null. Todos los campos quedan como null.
  4.                      ************
  5.                      ************
  6.                             //Con esta variable indicamos el estado de los botones. Por defecto su valor es 0.
  7.                             //Al asignarle el valor 1, algunos se activan y otros se inactivan.
  8.                             $var_atributos = 1;
  9.                     }
Luego en cada uno de los input o botones inserto el código php echo, que imprime, escribe, como me comentaba pateketrueke.

Este era el código que tenía:

Código Javascript:
Ver original
  1. <input type="submit" name="btn2" value="Aceptar"  id="19" disabled />

Este es el código que he insertado:
Código Javascript:
Ver original
  1. <input type="submit" name="btn2" value="Aceptar"  id="19" <?php  if($var_atributos ==0){echo disabled;}else{echo enabled;} ?>/>

Espero que sirva a alguien.
Un saludo y gracias.

Etiquetas: atributos, inputs, modificar
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 05:14.