PHP - Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

 
Vista:
Imágen de perfil de facundo

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por facundo (185 intervenciones) el 06/09/2017 19:23:53
Hola gente como andan? Estoy buscando la opinion de algun profesional o programador php con mucha experiencia.

Necesito saber cual de las dos siguientes maneras es mejor para programar mas profesionalmente y porque?

El código que les voy a pasar se trata de un simple registro de usuarios, se los voy a pasar solo con el username para que no se haga tan largo. Aclaro que puede tener algun error de tipeado ya que lo modifique para postear aca.

En la primera trabajo mas con las propiedades directo, y en la segunda trabajo mas con un objeto, sus getters y setters, basicamente... Si lo pasan a su php storm se les va a hacer mas facil para verlo

Primer manera de hacerlo:

register.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
require_once '../src/User.php';
 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    require_once '../validator/userValidator.php';
    try{
        $user = new userValidator;
        $user->validarDatos($_POST);
        if (!empty($user->errors)){
            foreach($user->errors as $value){
                echo '<div style="color: red">' . $value . '</div>';
            }
        }
        $msg = isset($user->msg)?$user->msg:'';
        echo '<div style="color: limegreen; font-size: 25px">' .  $msg .'</div>';
    }catch (PDOException $e){?>
        <div style="color: red">
 
<?php            echo $e->getMessage(); ?>
        </div>
    <?php
    }
}

UserValidator.php
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
class userValidator
{
    private $username;
    public $errors = [];
 
    public function validarDatos(array $data)
    {
        $this->username = $data['username'];
 
    if (empty($this->username)) {
             $this->errors[] = 'Debe introducir un nombre de usuario<br>';
        } elseif (strlen($this->username) < 5 || strlen($this->username) > 16) {
              $this->errors[] = 'El usuario debe tener entre 5 y 16 caracteres<br>';
        }
    if (empty($this->errors)){
            $this->validarUsuario($this->username);
       }
    }
private function validarUsuario($username,$email)
    {
        $conn = get_connection();
        $sql1 = "SELECT username FROM users WHERE username =:usu";
        $stmt1 = $conn->prepare($sql1);
         $stmt1->bindParam(':usu',$username);
        $stmt1->execute();
if ($stmt1->rowCount() > 0){
            throw new PDOException('El usuario ya esta en uso');
        }
        if (empty($this->errors)){
              $user = new User;
              $user->setUsername($this->username);
              $user->addUser();
         }
 
}

User.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class User
{
    private $username;
 
    public function setUsername($username)
    {
        $this->username = $username;
        return $this;
    }
private function addUser()
    {
 
        $sql = "INSERT INTO users (`username`) VALUES (?)";
        $conn = get_connection();
        $stmt = $conn->prepare($sql);
        $stmt->bindvalue(1,$this->username);
      try {
            if ($stmt->execute()) {
                $this->msg = 'Usuario registrado';
            }
        }catch(PDOException $e){
            throw new PDOException('Lo sentimos, hubo un error al intentar crear el usuario, por favor intentelo devuelta');
        }
    }

Bien, esa seria la primer manera de hacer el registro de usuario (aunque claro, pregunto esto, porque despues la logica la aplicaria tambien para añadir productos, etc etc)

Y la segunda forma de hacerlo seria asi:

register.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    require_once '../validator/userValidator.php';
 
    try{
        $user = new User;
        $user->setUsername($_POST['username']);
       $userValidator = new userValidator($user);
        $userValidator->validarDatos();
        if (!empty($userValidator->errors)){
            foreach($userValidator->errors as $value){
                echo '<div style="color: red">' . $value . '</div>';
            }
        }
        $msg = isset($userValidator->msg)?$userValidator->msg:'';
        echo '<div style="color: limegreen; font-size: 25px">' .  $msg .'</div>';
    }catch (PDOException $e){?>
        <div style="color: red">
 
<?php            echo $e->getMessage(); ?>
        </div>
    <?php
    }
}

User.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class User
{
    private $username;
 
    public function getUsername()
    {
        return $this->username;
    }
 
    public function setUsername($username)
    {
        $this->username = $username;
        return $this;
    }
 
}



UserValidator.php

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
require_once '../helpers.php';
require_once '../src/User.php';
require_once '../src/UserCollection.php';
class UserValidator
{
    private $user;
    public $errors;
    public $msg;
 
    public function __construct(User $user)
    {
        $this->user = $user;
    }
 public function validarDatos()
    {
        if (empty($this->user->getUsername())) {
            $this->errors[] = 'Debe introducir un nombre de usuario<br>';
        } elseif (strlen($this->user->getUsername()) < 5 || strlen($this->user->getUsername()) > 16) {
            $this->errors[] = 'El usuario debe tener entre 5 y 16 caracteres<br>';
        }
     }
 
 private function validarUsuario($username)
    {
        $conn = get_connection();
        $sql1 = "SELECT username FROM users WHERE username =:usu";
        $stmt1 = $conn->prepare($sql1);
        $stmt1->bindParam(':usu',$username);
        $stmt1->execute();
        if ($stmt1->rowCount() > 0){
               throw new PDOException('El usuario ya esta en uso');
        }
 
        if (empty($this->errors)){
           $collect = new UserCollection();
           $collect->addUser($this->user);
            $this->msg = $collect->getMessage();
 
        }
}

UserCollection.php

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
require_once '../helpers.php';
class UserCollection
{
    public $msg;
 
    public function getMessage()
    {
        return $this->msg;
    }
 
    public function addUser(User $user)
    {
 
        $sql = "INSERT INTO users (`username`) VALUES (?)";
        $conn = get_connection();
        $stmt = $conn->prepare($sql);
 
        try {
            if ( $result = $stmt->execute([
                $user->getUsername()
            ])) {
                $this->msg = 'Usuario registrado';
            }
        }catch(PDOException $e){
            $this->msg .= 'Lo sentimos, hubo un error al intentar crear el usuario, por favor intentelo devuelta';
        }
    }
 
    public function deleteUser()
    {
 
    }
    public function editUser()
    {
 
    }


Espero que entiendan a que me refiero y puedan responderme,cualquier cosa me preguntan, gracias, saludos!
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
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por Gonzalo (615 intervenciones) el 07/09/2017 04:26:20
no lei todo el codigo, pero hasta donde he visto la declaracion de objetos esta mal

1
$user = new userValidator;

la variable user esta bien, = esta bien, new esta bien, pero la llamada a la clase esta mal, debe ser userValidator();

esto porque en el parentesis se pasan los valores para el contructor, aunque reconozco que yo pudiera estar mal.

1
2
3
4
public function __construct(User $user) //este valor  se pasa al momento de crear el objeto.
{
    $this->user = $user;
}

si me aceptas una sugerencia yo te diria:

lo mejor de lo mejor son los objetos en php(punto)

imagina cada objeto como un especialista en algo:
un especialista en html, solo pasale los valores y el objeto creara los labels, drop box, check box
inlcuso, imagina un objeto al que le pasas un query y el objeto arma la tabla, solo debes agregar una columna al query para que la tabla se modifique por si sola.
un objeto que controle las variables de sesion.

para mas claro:

un especialista en abrir, leer, actualizar e insertar registros en sql, solo pasale el query y el objeto hara el resto.

1
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "INSERT INTO users (`username`) VALUES (?)";
$conn = get_connection();
$stmt = $conn->prepare($sql);
 
try {
    if ( $result = $stmt->execute([
        $user->getUsername()
    ])) {
        $this->msg = 'Usuario registrado';
    }
}catch(PDOException $e){
    $this->msg .= 'Lo sentimos, hubo un error al intentar crear el usuario, por favor intentelo devuelta';
}

que tal este cambio?

1
2
3
4
5
6
7
8
9
10
11
12
13
$users=new ClassMySql($Server,$BaseDeDatos); // el constructor abre la conexion dependiendo del servidor y habilita la base de datos
 
$sql = "INSERT INTO users (`username`) VALUES (?)";
 
$users->Insert($SqlCommand); //el objeto inserta el registro, ahi esta la validacion.
 
if($users->Error)
{
echo($users->GetError());
}else
{
echo("registro registrado con exito");
}

disculpa lo prolijo del ejemplo, lo hice "at momentum".

ahora imagina que haces el cambio a MySqli, solo le das mantenimiento al archivo donde esta la clase ClassMySql y listo, no tienes porque modificar cada pagina que hisiste.

cambiaste a MsSql? o a mariadb?

o necesitas usar los 3? con una sola clase tienes.

capichi?

asi que mi recomendacion es que uses objetos, no son dificiles, es igual que andar en bicicleta.

salu2.
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
Imágen de perfil de facundo

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por facundo (185 intervenciones) el 07/09/2017 17:28:04
Hola gonzalo, aver si entiendo lo que me planteas, vos te referis a usar objetos con la conexion no? porque lo demas es todo objetos.
Lo que me decis es que cree una clase MySQL la cual defina los métodos insert, update, delete, etc ? Entonces cada vez que necesito hacer un insert solo creo una variable SQL con la consulta y llamo al metodo?

por ejemplo $classMySQL->insert("insert into usuarios set nombre ='asd'") ?? a eso te referis?

Te muestro el codigo de mi conexion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function get_connection()
{
        $engine = 'mysql';
        $hostname = '127.0.0.1';
        $dbname = 'ecommerce';
        $username = 'root';
        $password = '';
 
    try {
        $dsn = $engine . ':host=' . $hostname . ';dbname=' . $dbname;
        $pdo = new PDO($dsn,$username,$password);
        return $pdo;
 
    } catch (PDOException $e) {
        throw new Exception($e->getMessage(), 1);
    }
}

Entonces tendria que hacer una clase para la conexión la cual incluya métodos para hacer inserts (automatizados) que solo le tenga que pasar los parametros a insertar??

Pero no entiendo como hacer el metodo insert() automatizado,porque en este caso seria asi..

1
2
3
4
5
6
public function insert($sql)
{
         $stmt = $this->pdo->prepare($sql);
         $stmt->bindValue(.....) //acá es la cuestión...
 
}

Pero si quiero automatizar un bindValue o bindParam no se puede o si?
Y si en vez de pasarle el "sql" le paso los parametros que quiero insertar tampoco podria porque si defino 3 parametros por ejemplo public function insert($1,$2,$3) pero si solo quiero insertar un registro solo?

Otra cosa, vos dijiste que un objeto te crea automaticamente una tabla por ejemplo... Pero tengo entendido que en las clases no se puede usar nada de html, entonces como seria?
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
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por Gonzalo (615 intervenciones) el 07/09/2017 20:54:55
Buenas noches don Facundo.

aqui habria que entender la diferencia entre el explorador y php.

lo que php hace es armar la pagina en hipertexto y mandarlo al explorador, el explorador lo interpreta y muestra la pagina.

ejemplo:

el explorador recibe este hipertexto:

1
<label>Hola Facundo!</label>

y el explorador muestra el mensaje como una etiqueta

Hola Facundo!

ahora bien, si el hipertexto que recibo venia de una pagina html entonces la pagina luce mas o menos asi

1
2
3
4
5
6
7
<html>
<header>
</header>
<body>
<label>Hola Facundo!</label>
</body>
<html>

hasta aqui entendemos entonces que el archivo en html es intepretado por el explorador y mostrado en la pagina porque solo contiene hipertexto.

en donde esta php?, bueno, si lo que tienes es un script que manda el label entonces debes tener una pagina en html o en php con un codigo mas o menos asi.

1
2
3
4
<?php
$nombre='Hola Facundo!';
echo('<label>'.$nombre.'</label>');
?>

si llamas esta pagina el motor de php en el servidor arma el hiperterxo y lo manda al explorador, lo que el exlorador recibe no es el codigo en php si no el hipertexto con el label.

1
<label>Hola Facundo!</label>

lo cual entiende e interpreta como un label con el texto "hola facundo!" y lo muestra.

al igual que asp, java para web, html y algunos otros lo que en realidad hacen es enviar hipertexto al explorador y eso es todo, el explorador hace el resto.

capichi??

asi que el hipertexto puede ser enviado al explorador practicamente en cualquier parte del codigo php, sea script, funcion, objeto, clase o clase abstracta, si el hipertexto esta dentro de un echo eso es lo que se manda al explorador.

ahora bien, te mando una clase de ejemplo para que veas el caso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//esta es la clase, puedes copiar y pegar en tu archivo php o crear un archivo que se llame ClassHrml.php e incluirla en tu archivo php
// en mi caso lo guarte en un directorio Class y lo inclui en el archivo ejemplo.php
// esta es una clase real, es la que uso para imprimir labels, tengo basicamente 1 clase para cada tipo de objeto, asi que solo paso los parametros y la clase arma el objeto, esto reduce el codigo y me ayuda a modificarlo mas rapidamente.
 
class ClassLabel
{
	var
	$Value
	;
 
	function __construct()
	{
		$this->Value="";
	}
 
	function Label($Value)
	{
		return
			'<label>'.
				$Value.
			'</label>';
	}
}

y este es el ejemplo.php con el objeto
1
2
3
4
5
6
7
8
<?php
 
include "Class/ClassHtml.php";
 
$Label=new ClassLabel(); //se crea el objeto, se dispara el constructor e inicializa $Value para que no tenga nada.
echo($Label->Label("Hola Facundo!"));
 
?>

listo! lo mandas ejecutar en el explorador y te muestra: Hola Facundo! igual que en el primer ejemplo, si mandas revisar la pagina veras el codigo <label>Hola Facundo!<label> pero no veras nada del codigo de php.

bueno, igual como se creo el objeto $Label se puede crear un objeto $Empleados que use una clase que controla el acceso a tus bases de datos, de ahi creas una funcion select, una funcion insert, una funcion update, una close y listo, la clase te ayuda a controlar todo lo referente a la transferencia de la base de datos a tu codigo o viceversa.

cual es la ventaja?

que solo necesitas un objeto y una clase, el objeto le dice a la clase que hacer y la clase hace el resto.

ahora imaginemos el caso:

tiene usted 3 servidores, uno con mssql, otro con mysql y otro con postgre (asi se escribe?)

la forma de abrir la base de datos es diferente no?

bien tomemos en cuenta la misma clase para abrir las 3 bases de datos y transferir informacion ok?

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
$Postgre=new ClassSql("Postgre","Empleados")
$MsSql=new ClassSql("MsSql","Usuarios");
$MYSql=new ClassSql("MySql","Contabilidad");
 
$SqlCommmand="select * from Empleados";
$Postgre->Select($SqlComand);
echo($Postgre->GetField("Nombre"));
 
//(igual para mssql y MySql)
como seria la clase?
 
Class ClassSql
{
var
$Servidor,
$Conexion,
$RecordSet;
 
 function __constructor($Servidor,$Database)
{
$this->servidor=$Servidor;
switch($this->Servidor)
{
case "Postgre":
$this->Conexion=instruciones para abrir la base de datos usando postgre
break;
case "MsSql":
$this->Conexion=instruciones para abrir la base de datos usando MsSql
break;
case "MySql":
$this->Conexion=instruciones para abrir la base de datos usando MySql
break;
case "Access":
$this->Conexion=instruciones para abrir la base de datos usando Access
break;
}
//listo, base de datos abierta
}
 
function Select($SqlCommand)
{
switch($this->Servidor)
{
case "Postgre":
$this->RecordSource=instruciones para ejecutar un select usando postgre
break;
case "MsSql":
$this->RecordSource=instruciones para ejecutar un select usando MsSql
break;
case "MySql":
$this->RecordSource=instruciones para ejecutar un select usando MySql
break;
case "Access":
$this->RecordSource=instruciones para ejecutar un select usando Access
break;
}
//ojo, el recorsource se queda en la clase y es manejado desde el objeto
}
 
function GetField($Campo)
{
$Ok="";
switch($this->Servidor)
{
case "Postgre":
$Ok=instruciones para leer un campo usando postgre
break;
case "MsSql":
$Ok=instruciones para leer un campo usando MsSql
break;
case "MySql":
$Ok=instruciones para leer un campo usando MySql
break;
case "Access":
$Ok=instruciones para leer un campo usando Access
break;
}
return $Ok;
}

ventajas, cambiaste el password de acceso a la base de datos? solo modifica la clase y todas las paginas se van a actualizar.

desventajas: debes poner un include del archivo con la clase en cada pagina

que buena desvelada nos estamos dando!, pero bueno, esa es la idea, asi lo hago yo y la verdad apra mi funciona bien, aqui exagere con lo de las bases de datos, yo uso solamente mysql y mssql al mismo tiempo en la misma pagina, pero con algunas modificaciones pudiera tambien usar access, etc etc etc.

El conocimiento es limitado, la imaginacion es infinita. Albert Einstein.
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
Imágen de perfil de facundo

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por facundo (185 intervenciones) el 07/09/2017 21:03:44
Genial, me vino muy bien esa info, muchas gracias!! Arriba postie como seria una funcion para agregar usuarios automatizada, que te parece esta bien asi?
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
Imágen de perfil de facundo

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por facundo (185 intervenciones) el 07/09/2017 20:58:34
Ee !! Me auto respondo... encontré la solución! En la clase conexion tengo esta funcion:
1
2
3
4
5
6
7
8
9
10
11
12
public function insert($sql, array $data)
{
    $stmt = $this->pdo->prepare($sql);
    foreach($data as $key => $value){
        $stmt->bindValue($key,$value);
    }
    if ($stmt->execute()){
        return true;
    }else{
        throw new PDOException('Hubo un problema al intentar registrarse, por favor reintentelo');
    }
}

y en la clase userCollection tengo esta funcion:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public function addUser(User $user)
{
    $sql = "INSERT INTO usersss (`name`,`surname`,`username`,`birthdate`,`pass`,`email`,`id_province`,`id_city`) VALUES (?,?,?,?,?,?,?,?)";
    $conn = new Connection;
    $data = [
        1=>$user->getName(),
        2=>$user->getSurname(),
        3=>$user->getUsername(),
        4=>$user->getBirthdate(),
        5=>$this->hashPass($user->getPassword2()),
        6=>$user->getEmail(),
        7=>$user->getProvince(),
        8=> $user->getCity()
    ];
    try {
         if ($conn->insert($sql,$data) == true){
            $this->msg = 'Usuario registrado';
         }
    }catch(PDOException $e){
        echo $e->getMessage();
    }
}

Me podrias dar tu opinion sobre eso crees que es correcto para una reusablidad si cambio de base de datos? Gracias!!
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
Imágen de perfil de facundo

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por facundo (185 intervenciones) el 07/09/2017 21:48:35
Y para hacer el select lo hize de la sig. manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function select($sql,$data)
{
    $stmt = $this->pdo->prepare($sql);
    foreach ($data as $key=>$value){
        $stmt->bindValue($key,$value);
    }
    $stmt->execute();
    return $stmt->rowCount();
}
public function verSelect($sql,$data)
{
    $stmt = $this->pdo->prepare($sql);
    foreach ($data as $key =>$value){
        $stmt->bindValue($key,$value);
    }
    $stmt->execute();
    return $stmt->fetch(PDO:: FETCH_ASSOC);
}

y en la clase LogValidator lo llamo de esta manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function verificar()
{
    $conn = new Connection;
    $data = [
        ':us' => $this->username
    ];
    $sql = "SELECT username,pass,id,email FROM users WHERE username =:us";
    // $conn->select($sql,$data);
     if ($conn->select($sql,$data) == 0){
        return false;
     } else{
        $row = $conn->verSelect($sql,$data);
        $this->hash = $row['pass'];
        $this->id= $row['id'];
        $this->email= $row['email'];
    }
    if ($this->passVerify() == true ){
        $log = new Log($this->username,$this->email,$this->id);
        $log->sessionStart();
        return true;
    }else{
        return false;
    }
}

Te parece que esta bien asi o me podria dar algun tipo de error en un futuro?
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
Imágen de perfil de facundo

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por facundo (185 intervenciones) el 08/09/2017 20:07:14
TERMINADO:


En la clase coneccion estan las funciones para insertar y seleccionar:

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
public function insert($sql, array $data)
     {
         $stmt = $this->pdo->prepare($sql);
         foreach($data as $key => $value){
             $stmt->bindValue($key,$value);
         }
         if ($stmt->execute()){
             return true;
         }else{
             throw new PDOException('Hubo un problema al intentar registrarse, por favor reintentelooo');
         }
     }
 
     public function selectAffected($sql,$data)
     {
         $stmt = $this->pdo->prepare($sql);
         foreach ($data as $key=>$value){
             $stmt->bindValue($key,$value);
         }
         $stmt->execute();
         return $stmt->rowCount();
     }
 
     public function viewSelectByParameter($sql,$data)
     {
         $result = [];
         $stmt = $this->pdo->prepare($sql);
         foreach ($data as $key =>$value){
             $stmt->bindValue($key,$value);
         }
         $stmt->execute();
         while ($row = $stmt->fetch(PDO:: FETCH_ASSOC)){
             $result[] = $row;
         }
         return $result;
     }
 
     public function viewAllSelect($sql)
     {
         $result = [];
         $stmt = $this->pdo->prepare($sql);
 
         $stmt->execute();
         while( $row = $stmt->fetch(PDO:: FETCH_ASSOC)){
             $result[] = $row;
         }
        return $result;
     }
Y cuando tengo que usar viewAllSelected lo recorro con un array:
1
2
3
4
5
6
7
8
$sql1 = 'SELECT id,namee FROM province';
$results1 = $connection->viewAllSelect($sql1); ?>
   <select name="province">
        <option value=""></option>
        <?php foreach($results1 as $value){ ?>
            <option value="<?=$value['id'] ?>"> <?= $value['namee'] ?> </option>
        <?php }  ?>
    </select><br><br>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por Gonzalo (615 intervenciones) el 08/09/2017 20:11:19
mis disculpas pero me quitaron el internet por estar en esta web, te atiendo el sabado desde la casa.

suerte

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cual creen que es la mejor manera de trabajar con objetos?[Ayuda profesional]

Publicado por gonzalo (615 intervenciones) el 10/09/2017 02:07:47
mis disculpas don facundo, de momento no tengo internet, le puedo enseñar a usar objetos pero debe tener el teamviewer para que pueda ver mi monitor o si tiene alguna manera en la que le pueda mandar el código para que lo vea, no es difícil, solo necesita entender como funcionan las clases y los objetos, le aseguro que no es cosa del otro mundo.

le mando un saludo y le pido disculpas por no contestarle a tiempo, me sorprendieron en el trabajo y me bloquearon el internet, ya sali por otro lado pero no quiero que me sorprendan de nuevo porque me pueden mandar a descansar unos dias y si acumulo castigos me mandan a descansar en forma definitiva.

bueno avíseme si le interesa y tiene tiempo libre y platicamos los fines de semana.

en este momento solo podríamos ver si hay manera de conversar en linea pero no podría ayudarle porque estoy retrasado con las tareas de la escuela así que no podría explicarle gran cosa.

entonces déjeme dicho como lo contacto y nos vemos en linea.

salu2
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