Darse de alta en la web | Recuperar password   
Inicio / Foros / PHP / Tipo de campo
7 respuestas recibidas | 76 visitas | Categoría PHP

Tipo de campo

Avatar de canta65
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 10 posts)

#0 Offline canta65 Usuario hace 10días 4h  
Hola !
Tengo que armar un Form con un boton checkbox, (es para una base donde se carga si un socio PAGO o No PAGO) lo que necesito es que cuando se tilde el checkbox envie un SI o un NO (dependiendo de que check se apriete claro), luego de varias pruebas infructuosas... me entro la duda sobre:
En esta tabla el campo "pagosi" y el "pagono" ¿que tipo de campo debería ser? Llo probé con VARCHAR y como TEXT pero nunca lo pude hacer funcionar... por lo tanto no se si MI ERROR esta en la forma que envío los datos desde el formulario o si en la BD (por el TIPO de datos del campo)...
Desde ya GRACIAS!
A propósito el código de el formulario es:

[php][/php]<?php
$conexion = mysql_connect('localhost', 'xxx', 'xxx');
mysql_select_db('prueba');
?>

<html>
<head><title>Prueba checkbox</title>
</head><body>
<h1>Prueba checkbox</h1>



<?php
if (isset($_POST['socio'])&&($_POST['pagosi'])&&($_POST['pagono'])) {
@mysql_query("INSERT INTO socios(socio,pagosi,pagono) VALUES('" . $_POST['socio'] . "','" . $_POST['pagosi']

. "','" . $_POST['pagono'] . "')");
echo 'El estado del Pago ingresado';
} else {
?>



<form action="prueba.php" method="post"><br>
Socio: <input type="text" name="socio" id="socio" size="50"><br>

Pago? : SI <INPUT TYPE="checkbox" NAME="pagosi" id="pagosi" VALUE="SI"> o NO: <INPUT TYPE="checkbox" id="pagono"

NAME="pagono" VALUE="NO"><br><br>


<input type="submit" name="cmdAceptar" id="cmdAceptar" value="Aceptar">
<input name="restablecer" type="reset" id="restablecer" value="Borrar">
</form>


<?php
}
mysql_close($conexion);
?>
</body>
</html>

Re: Tipo de campo

Avatar de Irozga
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 70 posts)

#1 Offline Irozga Usuario hace 9días 22h Valor Valor Valor  
Yo lo haría de otra forma.

1.- Eliminar los campos pagosi y pagono.
2.- Crear un campo llamado pago de tipo ENUM con dos posibles valores: true y false.
3.- Cambiar el codigo para que según la opción marcada introduzca "true" o "false" en el campo pago.

Quedaría algo así:

Código PHP


<?php

// Me salto la cabecera la conexion a la base de datos y el HTML que lo sigue porque eso es igual.

// Solo necesitamos saber una variable. Si han marcado la casilla es que sí, si no, es que no.
if (isset($_POST['socio']) and isset($_POST['pagosi'])) {
    if (
$_POST['pagosi']) $pago = true;
    else
$pago = false;
    
    if (
mysql_query("INSERT INTO socios(socio,pago) VALUES ('{$_POST['socio']}','$pago')")) echo 'El estado del Pago ingresado';
}
else {
?>
<form action="prueba.php" method="post"><br />
Socio: <input type="text" name="socio" id="socio" size="50"><br>

Pago? : SI <input type="checkbox" name="pagosi" id="pagosi">

<input type="submit" name="cmdAceptar" id="cmdAceptar" value="Aceptar">
<input name="restablecer" type="reset" id="restablecer" value="Borrar">
</form>

</body>
</html>
<?php
}
?>



NOTA: Es posible que en el código haya un fallo a la hora de utilizar/comprobar los checkboxes. Es que hace mucho tiempo que no los utilizo y no me acuerdo exactamente como iban (creo que tenían un valor booleano, pero no estoy seguro).

NOTA 2: Por como has utilizado el checkbox, creo que lo has confundido con radio así que te recomiendo que te mires más manuales de HTML o XHTML.

OK

Avatar de canta65
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 10 posts)

#2 Offline canta65 Usuario hace 8días 18h  
Hola Irozga
En efecto tenes RAZÓN.... debo hacerlo con un radio y no con un chechbox fue un error mio de CONCEPTO...

La primera prueba que acabo de hacer rápido no funciono ... pero mañana me tomo un tiempo.. le busco la vuelta y te confirmo si anduvo
GRACIAS!

Mas o menos

Avatar de canta65
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 10 posts)

#3 Offline canta65 Usuario hace 7días 22h  
Hola Master

Lo probe mejor y SOLO funciona cuando el valor ingresado es TRUE... lo modifique levemente... te lo pego de nuevo a ver si observas por donde puede estar el error...
Mil Gracias!

Código PHP


<?php
// Solo necesitamos saber una variable. Si han marcado la casilla es que sí, si no, es que no.
if (isset($_POST['socios']) and isset($_POST['pago'])) {
    if (
$_POST['pago']) $pago = true;
    else
$pago = false;
    
    if (
mysql_query("INSERT INTO socios(socios,pago) VALUES ('{$_POST['socios']}','$pago')")) echo 'El estado del Pago

ingresado'
;
}
else {
?>
<form action="prueba.php" method="post"><br />
Socio: <input type="text" name="socios" id="socios" size="50"><br>

Pago? : SI <input type="radio" name="pago" id="pago">

<input type="submit" name="cmdAceptar" id="cmdAceptar" value="Aceptar">
<input name="restablecer" type="reset" id="restablecer" value="Borrar">
</form>

</body>
</html>
<?php
}
?>

Re: Tipo de campo

Avatar de Irozga
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 70 posts)

#4 Offline Irozga Usuario hace 4días 19h  
A ver, ahora utilizas el radio como un checkbox xDD. Digamos que el checkbox es para escoger o no una sola opción y el radio para escoger una entre varias.

Para hacerlo con radio sería así.

Código PHP


<?php
// Solo necesitamos saber una variable. Si han marcado la casilla es que sí, si no, es que no.
if (isset($_POST['socios']) and isset($_POST['pago'])) {
    if (
$_POST['pago']) $pago = true;
    else
$pago = false;
    
    if (
mysql_query("INSERT INTO socios(socios,pago) VALUES ('{$_POST['socios']}','$pago')")) echo 'El estado del Pago

ingresado'
;
}
else {
?>
<form action="prueba.php" method="post"><br />
Socio: <input type="text" name="socios" id="socios" size="50"><br>

<!-- Aunque aquí aparezcan en diferentes líneas, se te mostrarán en una sola -->
Pago? :
<input type="radio" name="pago" id="pago" value="true"> SI
<input type="radio" name="pago" id="pago" value="false"> NO

<input type="submit" name="cmdAceptar" id="cmdAceptar" value="Aceptar">
<input name="restablecer" type="reset" id="restablecer" value="Borrar">
</form>

</body>
</html>
<?php
}
?>


Dime ahora a ver que tal

Ummmm

Avatar de canta65
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 10 posts)

#5 Offline canta65 Usuario hace 4días 2h  
Hola Master...
Si sabia la diferencia entre el check y el radio solo que entendía que no hacia falta el otro radio ya que si no tildas el true (SI) era false... pero tenes razón es mejor ponerlo... queda mejor y es mas claro como interfaz...
Bueno te cuento no funciona ya que pulses el radio que pulses envia TRUE... no habria que darle otro ID a :

Código PHP


<input type="radio" name="pago" id="pago" value="false"> NO


?????
Gracias por tu ayuda... soy duro pero creo que voy avanzando de a poco...muy de a poco

Re: Tipo de campo

Avatar de Irozga
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 70 posts)

#6 Offline Irozga Usuario hace 4días 0h  
A ver, prueba esto.

Código PHP


<?php
// Solo necesitamos saber una variable. Si han marcado la casilla es que sí, si no, es que no.
if (isset($_POST['socios']) and isset($_POST['pago'])) {
    
    if (
mysql_query("INSERT INTO socios(socios,pago) VALUES ('{$_POST['socios']}','{$_POST['pago']}')")) echo 'El estado del Pago

ingresado'
;
}
else {
?>
<form action="prueba.php" method="post"><br />
Socio: <input type="text" name="socios" id="socios" size="50"><br>

<!-- Aunque aquí aparezcan en diferentes líneas, se te mostrarán en una sola -->
Pago? :
<input type="radio" name="pago" id="pago" value="true"> SI
<input type="radio" name="pago" id="pago" value="false"> NO

<input type="submit" name="cmdAceptar" id="cmdAceptar" value="Aceptar">
<input name="restablecer" type="reset" id="restablecer" value="Borrar">
</form>

</body>
</html>
<?php
}
?>

OK

Avatar de canta65
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 10 posts)

#7 Offline canta65 Usuario hace 3días 19h  
Funciona perfecto MIL GRACIAS... luego que te envie el comentario comencé a sospechar de:

Código PHP


if ($_POST['pago']) $pago = true;
    else $pago = false;


Pero tu respuesta llego mas rapido...

gracias por todo un abrazo

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

Web alojada en Zilos

php-hispano.net 2002 - 2008 | XHTML 1.0
Datos Legales | Webmaster