PHP - [AYUDA] ABM completo en PHP puro

 
Vista:
Imágen de perfil de Francisco

[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:
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

[AYUDA] ABM completo en PHP puro

Publicado por d0min (2 intervenciones) el 05/07/2017 17:13:41
así a priori creo que te falta el WHERE en el UPDATE
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

[AYUDA] ABM completo en PHP puro

Publicado por Francisco (2 intervenciones) el 06/07/2017 03:28:41
Hola! Gracias por tomarte el tiempo de contestar.
Posiblemente tengas razón, pero sería WHERE id = a qué? Al ID que estoy trayendo?
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