Esta es la clase:
Código PHP:
<?php
class crudSqlite
{
private $table;
private $database = "users.db";
private $db;
public function __construct(){
$this->db = sqlite_open($this->database);
}
public function listTable($tb){
$this->table = $tb;
$cols = sqlite_fetch_column_types($this->db, $this->table, SQLITE_ASSOC);
echo '<table><thead><tr>';
foreach ($cols as $column => $type) {
echo '<th>' . $column . ' ' . $type . '</th>';
}
echo '</tr></thead>';
echo '<tbody>';
$result = sqlite_query($this->db,"SELECT * FROM ".$this->table."");
while($row = sqlite_fetch_array($result)){
echo '<tr>';
for($i=0;$i < sqlite_num_fields($result);$i++){
echo '<td>' . $row[$i] . '</td>';
}
echo '</tr>';
}
echo '</body></table>';
}
public function deleteRow($del){
$result = sqlite_query($this->db,"DELETE FROM " .$this->table." WHERE id=" . $del . "");
}
public function insertRow(){
if (isset($_POST[submit])){
$cols = sqlite_fetch_column_types($this->table, $this->db, SQLITE_ASSOC);
$i=0;
foreach ($cols as $column =>$type) {
$col[$i] = $column;
$pos[$i] = sqlite_escape_string($_POST[$column]);
$i++;
}
$col = '(' . implode(' , ', $col) . ')';
$pos = '("' . implode('", "', $pos) . '")';
$sql = "INSERT INTO " . $this->table . " " . $col.' VALUES '.$pos;
echo $sql;
$result = sqlite_query($this->db,$sql);
}
else
{
$cols = sqlite_fetch_column_types($this->table, $this->db, SQLITE_ASSOC);
echo '<form action = "" method="post">';
foreach ($cols as $column => $type) {
echo '<h2>' . $column . '</h2>';
switch ($type) {
case "INTEGER":
echo "<input name=" . $column . "></input>";
break;
case "REAL":
echo "<input name=" . $column . "></input>";
break;
case "TEXT":
echo "<textarea name=" . $column . "></textarea>";
break;
case "BLOB":
echo "<textarea name=" . $column . "></textarea>";
break;
case "CHAR":
echo "<input name=" . $column . " type='text' ></input>";
break;
}
}
echo '<input type="submit" name="submit" value="Add"></button></form>';
}
}
}
?>
Código PHP:
<?php
require_once("crud.sql.php");
$sqldb = new crudSqlite();
$sqldb->listTable("users");
$sqldb->insertRow();
?>
1. La función insertRow() hace lo que le pido, lista automáticamente una tabla que le metes por parámetro. Lo siguiente que quiero hacer para esta función, es añadir unos enlaces en cada fila que lista. Estos enlaces serian editar y borrar. Esta parte es fácil, pero lo que no se como hacer es que haga una llamada a $this->deleteRow(); al hacer click en el enlace de borrar. Esto se complica porque lo quiero hacer sin tener que llamar a un archivo .php externo, ni por medio de javascript. ¿Es esto posible?
2. Tengo un problema con la funcion insertRow() en el momento que detecto el tipo de dato que es cada columna de la tabla. Me explico, al usar la función sqlite_fetch_column_types(), me he encontrado con que me devuelve INTEGER(valor) o CHAR(valor) en vez de INTEGER, CHAR que seria fácil de analizar. El caso es que al analizar esta información para devolver un textarea o input... dependiendo del tipo de dato que se vaya a insertar, me crea problemas. ¿como haría para poder analizar correctamente esta información?
Muchas gracias por adelantado