Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] votaciones con PHP

Estas en el tema de votaciones con PHP en el foro de PHP en Foros del Web. Hola, estoy trabajando con un sistema de votaciones en PHP, para ello he creado un formulario que recoje la eleccion del usuario y recarga la ...
  #1 (permalink)  
Antiguo 17/05/2018, 11:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 292
Antigüedad: 10 años, 8 meses
Puntos: 2
Pregunta votaciones con PHP

Hola,
estoy trabajando con un sistema de votaciones en PHP, para ello he creado un formulario que recoje la eleccion del usuario y recarga la pagina que al ver que hay un voto actualiza el valor de los votos de la opcion elegida. El problema es que al entrar en la comprobacion no reconoce el objeto de la DB.

os dejo el codigo:

Código PHP:
Ver original
  1. if(isset($_POST["voto"])) {
  2. if(!$id) die("error de BD");
  3.     $lenguaje=$_POST["voto"];
  4.     $sql="SELECT votos from lenguajes WHERE lenguaje=$lenguaje";
  5.     $rs=$id->query($sql);
  6.     $fila=$rs->fetch_assoc();
  7.     $votos=$fila["votos"];
  8.     $sql="UPDATE lenguajes SET votos=$votos+1 WHERE lenguaje=$lenguaje";
  9.     $id->query($sql);
  10. }
  11. ?>
  12.  
  13. <h1>Vota por tu lenguaje de programación preferido</h1>
  14.  
  15. <!-- Formulario que permite votar -->
  16. <form method="post">
  17. <select name="voto">
  18. <?php
  19. $id=new mysqli($host,$usr,$pass,$db);
  20. $sql="SELECT * from lenguajes";
  21. $rs=$id->query($sql);
  22. while($f=$rs->fetch_assoc()){
  23.     echo "<option value=\"$f[lenguaje]\">$f[lenguaje]</option>";
  24. }
  25. ?>
  26. </select>
  27. <input type="submit" value="Enviar">
  28. </form>

al ejecutar la consulta de comprobacion(linea 5) me falla el metodo query porque la DB es null(sin embargo para crear el formulario si abre la DB), ¿por que no lo reconoce si lo abri previamente(en el formulario)?
__________________
1os pasaos con xAMP en Windows
programando en PERL

Última edición por alfa18; 17/05/2018 a las 11:49
  #2 (permalink)  
Antiguo 17/05/2018, 19:30
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 313
Antigüedad: 9 años, 6 meses
Puntos: 27
Respuesta: votaciones con PHP

por que al momento de realizar el POST primero entra en el IF y ahi no esta seteado la conexion a la base.. debes mover la conexion al principio

Código PHP:
Ver original
  1. <?php
  2. $id=new mysqli($host,$usr,$pass,$db);//aqui la conexion
  3. if(isset($_POST["voto"])) {
  4. if(!$id) die("error de BD");
  5.     $lenguaje=$_POST["voto"];
  6.     $sql="SELECT votos from lenguajes WHERE lenguaje=$lenguaje";
  7.     $rs=$id->query($sql);
  8.     $fila=$rs->fetch_assoc();
  9.     $votos=$fila["votos"];
  10.     $sql="UPDATE lenguajes SET votos=$votos+1 WHERE lenguaje=$lenguaje";
  11.     $id->query($sql);
  12. }
  13. ?>
  14.  
  15. <h1>Vota por tu lenguaje de programación preferido</h1>
  16.  
  17. <!-- Formulario que permite votar -->
  18. <form method="post">
  19. <select name="voto">
  20. <?php
  21. $sql="SELECT * from lenguajes";
  22. $rs=$id->query($sql);
  23. while($f=$rs->fetch_assoc()){
  24.     echo "<option value=\"$f[lenguaje]\">$f[lenguaje]</option>";
  25. }
  26. ?>
  27. </select>
  28. <input type="submit" value="Enviar">
  29. </form>
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Gerente Desarrollo TI (BEPSA)
Espacio Geek - Comunidad Tecnologica
  #3 (permalink)  
Antiguo 18/05/2018, 04:27
 
Fecha de Ingreso: diciembre-2007
Mensajes: 292
Antigüedad: 10 años, 8 meses
Puntos: 2
Exclamación Respuesta: votaciones con PHP

Hola de nuevo,

gracias por tu respuesta @vicram10, probe con lo que me dijiste en tu post y me funciona perfecttsmente

Si en lugar de hacer el POST en la misma pagina del formulario lo hiciera en otra diferente ¿existiria el objeto de DB en esa otra pagina o tendria que enviarlo expresamente a esa otra pagina?
__________________
1os pasaos con xAMP en Windows
programando en PERL

Última edición por alfa18; 18/05/2018 a las 05:31
  #4 (permalink)  
Antiguo 19/05/2018, 14:43
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 313
Antigüedad: 9 años, 6 meses
Puntos: 27
Respuesta: votaciones con PHP

puedes hacer tu conexion a la base en un archivo php distinto por ejemplo "conexion.php" entonces al principio le haces include al archivo y asi podras utilizar el ID.
de esa forma no necesitas hacer varias veces la misma conexion, simplemente incluis el archivo conexion.php en cada archivo que quieras tener con conexion a la base de datos.
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Gerente Desarrollo TI (BEPSA)
Espacio Geek - Comunidad Tecnologica
  #5 (permalink)  
Antiguo 01/06/2018, 08:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 292
Antigüedad: 10 años, 8 meses
Puntos: 2
Respuesta: votaciones con PHP

Gracias por tu clara y completa respuesta vicram10, saludos :D
__________________
1os pasaos con xAMP en Windows
programando en PERL
  #6 (permalink)  
Antiguo 02/06/2018, 19:05
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 313
Antigüedad: 9 años, 6 meses
Puntos: 27
Respuesta: votaciones con PHP

de nada para eso estamos
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Gerente Desarrollo TI (BEPSA)
Espacio Geek - Comunidad Tecnologica



La zona horaria es GMT -6. Ahora son las 11:20.