PHP - Controlar validaciones y eventos en una página php

 
Vista:
Imágen de perfil de Reinaldo

Controlar validaciones y eventos en una página php

Publicado por Reinaldo (16 intervenciones) el 27/01/2018 04:46:39
Cordial saludo.

Estoy desarrollando un sistema de votación de candidatos a un cargo en línea usando php y consultas a dos tablas de mysql (una con los votantes y otra con los candidatos).

quiero validar (sin que la primera vez que se cargue la página lo haga) el valor de un campo de una consulta sql para saber si el votante ya votó, es decir algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
$ha_votado=mysqli_query($con,"select si_voto from votantes where id='".$id."'");
 
if ($ha_votado == 1)
{
echo '<script language="javascript">alert("ya votaste, no puedes volver a votar.");</script>';
}
else
{
//ejecuta una consulta SQL aquí
echo 'Puedes votar por los siguientes candidatos:';
//luego activar o habilitar un select de html con el resultado de la consulta
}

y luego, que esa misma consulta, me active un select de HTML para que se haga visible sòlo si el votante aún no ha votado. Lo que ocurre es que haciéndolo así como el còdigo anterior tengo el problema que siempre me valida que el votante ya votó, incluso si inicializo la variable $ha_votado en cero desde el momento que carga la página, imposibilitando votar.

¿Cómo pasar por alto esta validación la primera vez que carga la página y cómo habilitar un select-option de html dependiendo de que el votante aùn no haya votado (el select se poblaría con los candidatos )?

Gracias por su amable ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Controlar validaciones y eventos en una página php

Publicado por xve (6935 intervenciones) el 27/01/2018 08:14:25
Hola Reinaldo, la instrucción mysqli_query() no devuelve un numero, devuelve false o un result... nunca un valor numerico... una manera seria así:
1
2
3
if ($ha_votado)
{
....

Si no ha devuelto un result su condición sera true!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Reinaldo

Controlar validaciones y eventos en una página php

Publicado por Reinaldo (16 intervenciones) el 27/01/2018 11:44:55
Hola xve gracias por responder. Sí, entiendo esa parte, es que es un diseño inicial. Lo he hecho de esta forma con mysql_ pero entiendo que esas funcuones de php están obsoletas...

Tendrías alguna idea, sobre cómo evitar que valide datos al cargar la página _(que se salte ese if) o para cargar el select-option sólo si esa validación devuelve false? Supongo que sería algo de javascript
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Reinaldo

Controlar validaciones y eventos en una página php

Publicado por Reinaldo (16 intervenciones) el 27/01/2018 12:04:01
Hola, entiendo que PHP se ejecuta primero que el HTML, pero, entonces cómo hacer para que me valide sòlo los datos al presionar el botón de validar (más abajo de este código tengo un formulario donde el votante ingresa unos datos y luego los envía con un submit.

Otra forma entiendo que sería con algo como así:

1
2
3
4
5
6
<?php
 
if(isset($_POST['id'])){
   ejecutar_accion();
}
?>

y supongo que lo del select se podría controlar con un display=none con javascript para el div o el elemento select.

1
2
3
4
5
<script>
function myFunction() {
    document.getElementById("myDIV").style.display = "none";
}
</script>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Controlar validaciones y eventos en una página php

Publicado por carlos antonio (1 intervención) el 27/01/2018 14:15:55
integra esta linea en tu codigo el mysqli_fetch_row te devuelve un array con la columna la cual fue afectada por la sentencia sql y luego el count() te verifica cuantos elmentos tienes en el array por lo que si es mayor que cero es por que ya realizo la votacion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ha_votado=mysqli_query($con,"select si_voto from votantes where id='".$id."'");
 
$result = mysqli_fetch_row($has_votado);
 
if (count($result) > 0)
{
echo '<script language="javascript">alert("ya votaste, no puedes volver a votar.");</script>';
}
else
{
//ejecuta una consulta SQL aquí
echo 'Puedes votar por los siguientes candidatos:';
//luego activar o habilitar un select de html con el resultado de la consulta
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Reinaldo

Controlar validaciones y eventos en una página php

Publicado por Reinaldo (16 intervenciones) el 30/01/2018 01:04:54
Doy por terminado este tema y reabro otro explicando mejor el problema. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar