Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2008, 15:37
Wenaptic
 
Fecha de Ingreso: julio-2008
Ubicación: Maldonado
Mensajes: 27
Antigüedad: 15 años, 10 meses
Puntos: 0
Mensaje MiniSistema de encuesta en POO y sqlite

Hola, en mi practica diaria me tope con un minisistema de encuesta, lo que hize fue lo siguiente:
escribi una clase que hace la conexion y consultas a la DB en sqlite.
Código PHP:
<?php
class ServidorBaseDatos
{
    private 
$_baseDatos;
    private 
$_descriptor;
    private 
$_resultado;

    function 
__construct($_baseDatos)
    {
        
$this->servidor $servidor;
        
$this->usuario $usuario;
        
$this->pass $pass;
        
$this->_baseDatos $_baseDatos;
        
$this->conectarBaseDatos();
    }
    public function 
conectarBaseDatos()
    {
        
$this->_descriptor sqlite_open($this->_baseDatos);

    }
    public function 
consulta($consulta)
    {
        
$this->_resultado sqlite_query($consulta$this->_descriptor);

    }
    public function 
extraerRegistro()
    {
        if (
$fila sqlite_fetch_array($this->_resultadoSQLITE_ASSOC)){
            return 
$fila;
        }else{
            return 
false;
        }
    }
}
?>
A partir de ahi lo que hize fue crear un script para que me construyera la tabla con sus campos:
Código PHP:
<?php
require_once('connectSQLite.class.php');
$baseDatos = new ServidorBaseDatos('votaciones.db');
$baseDatos->consulta('create table lenguaje (id_lenguaje INT PRIMARY KEY, lenguaje CHAR(255), votos INT)');
$baseDatos->consulta('insert into lenguaje (lenguaje, votos) values ("PHP", 0)');
$baseDatos->consulta('insert into lenguaje (lenguaje, votos) values ("JSP", 0)');
$baseDatos->consulta('insert into lenguaje (lenguaje, votos) values ("ASP", 0)');
$baseDatos->consulta('insert into lenguaje (lenguaje, votos) values ("COLD FUSION", 0)');

$baseDatos->consulta('select * from lenguaje');

while (
$fila $baseDatos->extraerRegistro()){
    echo 
$fila["lenguaje"].": ".$fila["votos"].'<br>';
}

?>
Hasta aqui voy bien, ahora tengo el formulario para el ingreso de nuevos votos y el estado de la cantidad de votos
Código PHP:
<?php
require_once('connectSQLite.class.php');
//Primero comprobamos si tenemos un voto'
$baseDatos = new ServidorBaseDatos('votaciones.db');
//Si hemos votado sumamos el valor al numero de votos almacenado.
if (isset($_POST['voto'])){
    
$voto $_POST['voto'];
    
$baseDatos->consulta('select votos from lenguaje where id_lenguaje = '.$voto);
    
$numeroVotos $baseDatos->extraerRegistro();
    
$numeroVotos $numeroVotos['votos'];
    
$numeroVotos++;
    
$baseDatos->consulta('update lenguaje set votos="$numeroVotos" where id_lenguaje = "$voto"');
}    
?>
<html>
<body>
Que lenguaje de programacion prefieres?
<!--Formulario que permite votar -->
<form action = '<?= $PHP_SELF ?>' method = 'post'>
<select name = 'voto'>
<?php
$baseDatos
->consulta('select * from lenguaje');
while (
$fila $baseDatos->extraerRegistro()){
    
$id_lenguaje $fila['id_lenguaje'];
    
$lenguaje $fila['lenguaje'];
    echo 
"<option value=\"$id_lenguaje\">$lenguaje</option>";
}
?>
</select>
<input type="submit" name="Enviar" value="Enviar">
</form>
<table>
<?php
$baseDatos
->consulta('select * from lenguaje');
while (
$fila $baseDatos->extraerRegistro()){
    
$lenguaje $fila['lenguaje'];
    
$votos $fila['votos'];
    echo 
'<tr><td>'.$lenguaje.'</td><td>'.$votos.'votos</td></tr>';
}
?>
</table>
</body>
</html>
El problema esta cuando envio un voto, me salen los errores:
Warning: sqlite_query() [function.sqlite-query]: near " ": syntax error in /opt/lampp/htdocs/practicas/graficos/connectSQLite.class.php on line 23

Warning: sqlite_fetch_array() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/practicas/graficos/connectSQLite.class.php on line 28

Warning: sqlite_query() [function.sqlite-query]: attempt to write a readonly database in /opt/lampp/htdocs/practicas/graficos/connectSQLite.class.php on line 23


Sinceramente no encuentro donde me estoy equivocando, podria ser que la clase este mal construida?

Saludos y gracias