
[AYUDA] ABM completo en PHP puro
Publicado por Francisco (2 intervenciones) el 05/07/2017 04:07:56
Hola! Soy nuevo en el foro. Estoy terminando un ABM (alta, baja, modifica) usando solo PHP (sin js) con el patrón modelo - vista - controlador.
El Alta me anda. En el editar y eliminar todavía no. El problema esta en la consulta SQL que no logro entender por que no me actualiza los datos. De antemano muchas gracias por leer!
Adjunto el codigo comentado.
Vista:
Model donde tengo la clase Cliente:
Controlador:
Archivo DB.php donde contiene la conexión:
El Alta me anda. En el editar y eliminar todavía no. El problema esta en la consulta SQL que no logro entender por que no me actualiza los datos. De antemano muchas gracias por leer!

Adjunto el codigo comentado.
Vista:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
//session_start();
$datos = $_SESSION["MODEL"]; //Model es listado de personas
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>ABM</title>
</head>
<body>
<form align="center" method="POST" action="personas_controller.php">
<label>Nombre:</label>
<input style="border-radius: 5px" style="border: 2px solid blue" type="text" id="nombre" name="nombre" placeholder="Ingrese nombre"> </br>
<label>Contraseña:</label>
<input style="border-radius: 5px" style="border: 2px solid blue" type="password" name="password" id="password" placeholder="Ingrese contraseña"></br>
<label>Email:</label>
<input style="border-radius: 5px" style="border: 2px solid blue" type="text" name="email" id="email" placeholder="Ingrese su email"></br>
<input type="hidden" name="action" value="alta_persona" />
<input type="submit" name="insert" value="INSERTAR DATOS">
</form>
<br />
<table border="2" align="center"> <!-- traigo los datos a la tabla por el foreach -->
<tr>
<th>ID</th>
<th>Usuario</th>
<th>Password</th>
<th>Email</th>
<th>Editar</th>
<th>Borrar</th>
</tr>
<?php
foreach ($datos as $dato) {
?>
<tr align="center">
<td><?php echo $dato['id'];?> </td>
<td><?php echo $dato['usuario']; ?></td>
<td><?php echo $dato['password']; ?></td>
<td><?php echo $dato['email']; ?></td>
<td><a href="personas_controller.php?action=editar&id=<?php echo $dato['id'] ?>">Editar</a></td>
<td><a href="personas_controller.php?action=borrar&id=<?php echo $dato['id'] ?>">Borrar</a></td>
</tr>
<?php } ?>
</table>
</body>
</html>
Model donde tengo la clase Cliente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
class Cliente{ //Clase "Cliente"
private $id;
private $nombre;
private $password;
private $email;
public function getId(){
return $this->id;
}
public function setId($id){
$this->clienteid = $id;
}
public function getNombre(){
return $this->nombre;
}
public function setNombre($nombre){
$this->nombre = $nombre;
}
public function getPassword(){
return $this->password;
}
public function setPassword($password){
$this->password = $password;
}
public function getEmail(){
return $this->email;
}
public function setEmail($email){
$this->email = $email;
}
public function __construct($nombre, $password, $email, $id=null){
$this->id = $id;
$this->nombre = $nombre;
$this->password = $password;
$this->email = $email;
}
}
?>
Controlador:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
session_start();
require_once ("../db.php");
require_once ("../model/personas_model.php");
//LAMADAS POST
if (isset($_POST["action"])) { //Si contiene algo ese action entra y ejecuta lo correspondiente
if ($_POST["action"] == "alta_persona") {
$controlador = new personas_controlador();
$controlador->setPersona(new Cliente($_POST["nombre"], $_POST["password"], $_POST["email"], null));
$controlador->alta_persona();
header('location:personas_controller.php?action=index');
}
if ($_POST["action"] == "editar_persona") {
$controlador = new personas_controlador();
$controlador->setPersona(new Cliente($_POST["nombre"], $_POST["password"], $_POST["email"], $_POST["id"]));
$controlador->editar_persona();
header('location:personas_controller.php?action=index');
}
} else {
//LLAMADAS GET
if (isset($_GET["action"])) {
if ($_GET["action"] == "index") {
$per=new personas_controlador();
$datos=$per->get_personas();
$_SESSION["MODEL"] = $datos;
require_once ("../view/personas_view.php");
} elseif ($_GET["action"] == "editar") {
$per=new personas_controlador();
$per->get_persona($_GET["id"]);
$_SESSION["MODEL"] = $per->getPersona();
require_once ("../view/editar_persona.php");
} elseif ($_GET["action"] == "borrar"){
$per=new personas_controlador();
$per->get_persona($_GET["id"]);
$_SESSION["MODEL"] = $per->eliminar_persona();
}
}
}
class personas_controlador{
private $db; //Declaro variables
private $personas;
private $persona;
public function __construct(){ //Este constructor me guarda la conexion en la variable DB y me lo guarda en un array
$this->db=Conectar::conexion();
$this->personas=array();
}
public function getPersona() {
return $this->persona;
}
public function setPersona($persona) {
$this->persona = $persona;
}
public function get_personas(){ //Realizo la consulta a la bbdd, lo guardo en un array con fetch_assoc y lo devuelvo con return
$consulta=$this->db->query("SELECT * FROM users");
while($filas=$consulta->fetch_assoc()){
$this->personas[]=$filas;
}
return $this->personas;
}
public function get_persona($id) { // Me trae por ID, la transformo en un objeto y instancio la clase Cliente
$query = $this->db->query("SELECT * FROM users where id = $id");
$x = $query->fetch_object();
$this->persona = new Cliente($x->usuario, $x->password, $x->email, $x->id);
}
public function alta_persona(){ // CODIGO SQL DEL ALTA
$ejecutar=$this->db->query("INSERT INTO users (usuario, password, email) VALUES ('{$this->persona->getNombre()}', '{$this->persona->getPassword()}', '{$this->persona->getEmail()}')");
}
public function editar_persona(){ //ACÁ ESTÁ EL PROBLEMA - CODIGO SQL DEL EDITAR
$ejecutar=$this->db->query("UPDATE users (usuario, password, email) SET ('{$this->persona->getNombre()}', '{$this->persona->getPassword()}', '{$this->persona->getEmail()}')");
//Si pones el mismo codigo del alta acá me funciona, pero no el UPDATE
}
public function eliminar_persona(){ //¿CUAL SERÍA EL CODIGO SQL PARA ELIMINAR?
$ejecutar = "DELETE FROM users (usuario, password, email)";
}
}
?>
Archivo DB.php donde contiene la conexión:
1
2
3
4
5
6
7
8
<?php
class Conectar{ //Conexion a la bbdd
public static function conexion(){
$conexion=new mysqli("localhost", "root", "", "crud");
return $conexion;
}
}
?>
Valora esta pregunta


0