PHP - error de metodo con slim php api rest

 
Vista:
sin imagen de perfil
Val: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 04/10/2018 03:14:27
me sale este error en el navegador cuando pruebo en el navegador
http://localhost/restfull/public/api/clientes/nuevo
ya la probe en postman y no funciona

{"error" : {"text":SQLSTATE[42S22]: Column not found: 1054 Unknown column 'nuevo' in 'where clause'}

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
// POST Crear nuevo cliente
$app->post('/api/clientes/nuevo', function(Request $request, Response $response){
   $nombre = $request->getParam('nombre');
   $apellidos = $request->getParam('apellidos');
   $telefono = $request->getParam('telefono');
   $email = $request->getParam('email');
   $direccion = $request->getParam('direccion');
   $ciudad = $request->getParam('ciudad');
 
  $sql = "INSERT INTO clientes (nombre, apellidos, telefono, email, direccion, ciudad) VALUES
          (:nombre, :apellidos, :telefono, :email, :direccion, :ciudad)";
  try{
    $db = new db();
    $db = $db->conectDB();
    $resultado = $db->prepare($sql);
    $resultado->bindParam(':nombre', $nombre);
    $resultado->bindParam(':apellidos', $apellidos);
    $resultado->bindParam(':telefono', $telefono);
    $resultado->bindParam(':email', $email);
    $resultado->bindParam(':direccion', $direccion);
    $resultado->bindParam(':ciudad', $ciudad);
    $resultado->$execute();
   echo json_encode("Nuevo cliente guardado.");
    $resultado = null;
    $db = null;
  }catch(PDOException $e){
    echo '{"error" : {"text":'.$e->getMessage().'}';
  }
});
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
Imágen de perfil de Javier (orzo) Rodríguez
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Javier (orzo) Rodríguez (25 intervenciones) el 04/10/2018 13:52:38
Hola, Rey.
Pues sí que es raro el error, porque no veo la claúsula WHERE por ningún sitio.
El error no parece corresponder con este pedazo de código.
¿Es posible que tengas alguna regla en la base de datos que se aplique cuando insertas un registro en "clientes"?
Saludos.
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 04/10/2018 16:21:14
no tengo ninguna regla en la bd solo un metodo me ha funcionado en slim php mysql . el resto sale el mismo error.
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 Francisco Javier
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Francisco Javier (25 intervenciones) el 04/10/2018 16:47:46
Hola de nuevo, Rey.

El error lo da dentro del bloque try...catch, pero por lo que se ve, no hay nada que añada una claúsula where a la sentencia SQL que quieres ejecutar en la variable $resultado.
¿Puedes indicar la sentencia sql contenida en $resultado antes de llamar al método execute()?

Saludos.
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 04/10/2018 17:23:08
de esta forma ?

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
// POST Crear nuevo cliente 
$app->post('/api/clientes/nuevo', function(Request $request, Response $response){
   $nombre = $request->getParam('nombre');
   $apellidos = $request->getParam('apellidos');
   $telefono = $request->getParam('telefono');
   $email = $request->getParam('email');
   $direccion = $request->getParam('direccion');
   $ciudad = $request->getParam('ciudad');
 
    $sql = "INSERT INTO clientes (nombre, apellidos, telefono, email, direccion, ciudad) VALUES
          (:nombre, :apellidos, :telefono, :email, :direccion, :ciudad)";
 
 
 
    try{
    $db = new db();
    $db = $db->conectDB();
    $resultado = $db->prepare($sql);
    $resultado->bindParam(':nombre', $nombre);
    $resultado->bindParam(':apellidos', $apellidos);
    $resultado->bindParam(':telefono', $telefono);
    $resultado->bindParam(':email', $email);
    $resultado->bindParam(':direccion', $direccion);
    $resultado->bindParam(':ciudad', $ciudad);
 
if($result){
$result = $response->withJson($resultado, 200);
} else {
$result = $response->withJson("No guardo clientes en la BBDD.", 404);
}
 $resultado->$execute();
 
    $resultado = null;
    $db = null;
  } catch(PDOException $e){
 
 
$data["error"] = array("text" => $e->getMessage());
$result = $response->withJson($data, 404);
}
return $result;
});
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 Javier (orzo) Rodríguez
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Javier (orzo) Rodríguez (25 intervenciones) el 04/10/2018 19:51:48
Hola de nuevo, Rey.

No me refiero a eso, pero como no he utilizado nunca este modo de ejecutar sentencias SQL, he estado mirando este enlace https://diego.com.es/sentencias-preparadas-en-php y he cotejado tu código con lo que se explica en él.

Creo que tienes un error en la sentencia

1
$resultado->$execute();

que debería ser

1
$resultado->execute();

(sin el dólar).

Si te parece prueba con este pequeño cambio y reporta el resultado que obtengas.

Saludos.
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 04/10/2018 20:00:43
ya lo modifique sale el mismo error en el navegador con el codigo ultimo que te envie no se si hay algo malo

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
// POST Crear nuevo cliente
$app->post('/api/clientes/nuevo', function(Request $request, Response $response){
$nombre = $request->getParam('nombre');
$apellidos = $request->getParam('apellidos');
$telefono = $request->getParam('telefono');
$email = $request->getParam('email');
$direccion = $request->getParam('direccion');
$ciudad = $request->getParam('ciudad');
 
$sql = "INSERT INTO clientes (nombre, apellidos, telefono, email, direccion, ciudad) VALUES
(:nombre, :apellidos, :telefono, :email, :direccion, :ciudad)";
 
 
 
try{
$db = new db();
$db = $db->conectDB();
$resultado = $db->prepare($sql);
$resultado->bindParam(':nombre', $nombre);
$resultado->bindParam(':apellidos', $apellidos);
$resultado->bindParam(':telefono', $telefono);
$resultado->bindParam(':email', $email);
$resultado->bindParam(':direccion', $direccion);
$resultado->bindParam(':ciudad', $ciudad);
 
if($result){
$result = $response->withJson($resultado, 200);
} else {
$result = $response->withJson("No guardo clientes en la BBDD.", 404);
}
$resultado->execute();
 
$resultado = null;
$db = null;
} catch(PDOException $e){
 
 
$data["error"] = array("text" => $e->getMessage());
$result = $response->withJson($data, 404);
}
return $result;
});
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 Javier (orzo) Rodríguez
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Javier (orzo) Rodríguez (25 intervenciones) el 04/10/2018 20:40:28
Hola.

Revisando un poco más tu código (lo siento, soy así de lento), me doy cuenta de dos cosas:

1
2
$db = new db();
$db = $db->conectDB();

Esta segunda asignación no debería hacerse sobre la misma variable que contiene la instancia de db().
Podrías hacer algo así:

1
2
3
$db = new db();
$statement = $db->conectDB();
$resultado = $statement->prepare($sql);

Por otro lado, no entiendo el uso que haces de la variable $result.
Creo que, basándonos en el hecho de que el execute() lanza un error sino consigue ejecutar la sentencia SQL que le pasamos, lo ideal sería capturar el error con el catch.

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
try{
 
    $db = new db();
    $statement = $db->conectDB();
    $resultado = $statement->prepare($sql);
    $resultado->bindParam(':nombre', $nombre);
    $resultado->bindParam(':apellidos', $apellidos);
    $resultado->bindParam(':telefono', $telefono);
    $resultado->bindParam(':email', $email);
    $resultado->bindParam(':direccion', $direccion);
    $resultado->bindParam(':ciudad', $ciudad);
    $resultado->execute();
 
    $result = $response->withJson($resultado, 200);
 
    $statement->close();
    $db->close();
 
} catch(PDOException $e){
 
    $data["error"] = array("text" => $e->getMessage());
    $result = $response->withJson($data, 404);
 
}
return $result;


Suerte y saludos.
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 04/10/2018 21:05:01
sale aun ese error con ese codigo que me enviaste
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 04/10/2018 21:26:27
coloque de esta forma y sale el mismo error
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Preparamos la consulta de insert.
$app->post('/api/clientes/nuevo', function(Request $request, Response $response){
    $consulta=$db->prepare("insert into clientes(nombre, apellidos, telefono, email, direccion, ciudad)
    values (:nombre, :apellidos, :telefono, :email, :direccion, :ciudad)");
 
    $estado=$consulta->execute(
        array(
            ':nombre'=> $request->getParam('nombre'),
            ':apellidos'=> $request->getParam('apellidos'),
            ':telefono'=> $request->getParam('telefono'),
            ':email'=> $request->getParam('email'),
            ':direccion'=> $request->getParam('direccion'),
            ':ciudad'=> $request->getParam('ciudad'),
        )
    );
    if ($estado)
        echo json_encode(array('estado'=>true,'mensaje'=>'Datos insertados correctamente.'));
    else
        echo json_encode(array('estado'=>false,'mensaje'=>'Error al insertar datos en la tabla.'));
 
});
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 Javier (orzo) Rodríguez
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Javier (orzo) Rodríguez (25 intervenciones) el 05/10/2018 08:49:39
Hola, Rey.

Voy a intentar simular el proceso de inserción que tu código realiza para ver si cazo el error y puedo darte una solución. Lo más desconcertante es que el error se concentre en un campo de nombre "nuevo" en una claúsula "WHERE" inexistente.
Hazme el favor de pasarme la estructura de la tabla que utilizas para probar el ejemplo.
Por otro lado, la clase db() entiendo que es la que construye la conexión real con la base de datos.

Lo solucionaremos.

Saludos.
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 05/10/2018 16:49:40
esta es la bd
43228386_107663303484313_82420486834749440_n
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: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Yamil Bracho (888 intervenciones) el 05/10/2018 17:00:23
Casi seguro de que tienes un trigger de insercion y alli es donde haces el chequo por el campo nuevo...
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 05/10/2018 17:10:16
como quito ese trigger pues yo no lo he creado
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 05/10/2018 17:47:46
con este metodo ya puede guardar a la base datos y probe en postman guardando
http://localhost/restfull/public/api/clientes/nuevo

con el segundo metodo
PUT de modificar no me deja modificar
http://localhost/restfull/public/api/clientes/modificar/3

// POST Crear nuevo cliente
$app->post('/api/clientes/nuevo', function(Request $request, Response $response){
$nombre = $request->getParam('nombre');
$apellidos = $request->getParam('apellidos');
$telefono = $request->getParam('telefono');
$email = $request->getParam('email');
$direccion = $request->getParam('direccion');
$ciudad = $request->getParam('ciudad');

$sql = "INSERT INTO clientes (nombre, apellidos, telefono, email, direccion, ciudad) VALUES
(:nombre, :apellidos, :telefono, :email, :direccion, :ciudad)";
try{
$db = new db();
$db = $db->conectDB();
$resultado = $db->prepare($sql);
$resultado->bindParam(':nombre', $nombre);
$resultado->bindParam(':apellidos', $apellidos);
$resultado->bindParam(':telefono', $telefono);
$resultado->bindParam(':email', $email);
$resultado->bindParam(':direccion', $direccion);
$resultado->bindParam(':ciudad', $ciudad);
$resultado->execute();
echo json_encode("Nuevo cliente guardado.");
$resultado = null;
$db = null;
}catch(PDOException $e){
echo '{"error" : {"text":'.$e->getMessage().'}';
}


});
// PUT Modificar cliente
$app->put('/api/clientes/modificar/{id}', function(Request $request, Response $response){
$id = $request->getAttribute('id');
$nombre = $request->getParam('nombre');
$apellidos = $request->getParam('apellidos');
$telefono = $request->getParam('telefono');
$email = $request->getParam('email');
$direccion = $request->getParam('direccion');
$ciudad = $request->getParam('ciudad');

$sql = "UPDATE clientes SET
nombre = :nombre,
apellidos = :apellidos,
telefono = :telefono,
email = :email,
direccion = :direccion,
ciudad = :ciudad
WHERE id = $id";

try{
$db = new db();
$db = $db->conectDB();
$resultado = $db->prepare($sql);
$resultado->bindParam(':nombre', $nombre);
$resultado->bindParam(':apellidos', $apellidos);
$resultado->bindParam(':telefono', $telefono);
$resultado->bindParam(':email', $email);
$resultado->bindParam(':direccion', $direccion);
$resultado->bindParam(':ciudad', $ciudad);
$resultado->execute();
echo json_encode("Cliente modificado.");
$resultado = null;
$db = null;
}catch(PDOException $e){
echo '{"error" : {"text":'.$e->getMessage().'}';
}
});
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 Javier (orzo) Rodríguez
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Javier (orzo) Rodríguez (25 intervenciones) el 05/10/2018 18:47:36
Hola, Rey.

Me alegro de que hayas podido resolver el INSERT. ¿Cómo lo has hecho?

Respecto del problema con el UPDATE, ¿qué error te da?

Saludos.
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 05/10/2018 18:56:17
con el metodo insert que te coloque anterior , pero yo no tengo ningun trigger en la bd
el update es el que esta abajo del que te mande me da el mismo error que el insert
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 Javier (orzo) Rodríguez
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Javier (orzo) Rodríguez (25 intervenciones) el 06/10/2018 22:35:16
Hola, Rey.

He revisado tu código y, haciendo algunas pequeñas modificaciones en él, he hecho un par de ejemplos que funcionan.
Creo que va a salirme un post un poco largo, pero al menos es funcional. He aprovechado los ejemplos de la web de Diego Lázaro https://diego.com.es/sentencias-preparadas-en-php.

Para empezar, he creado la tabla de clientes adecuándola un poco a mi manera de funcionar.

La estructura es esta:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE IF NOT EXISTS `clientes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `nombre` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  `apellidos` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  `telefono` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
  `direccion` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  `ciudad` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Clientes' AUTO_INCREMENT=3 ;


He hecho dos ejemplos, uno basado en conexiones mysqli (que es la que yo utilizo) y otra utilizando las conexiones PDO (que es la que tú utilizas).

La página web de ejemplo que permite la edición de los datos y el envío a los ejemplos, es la siguiente:


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
<!-- ============================================================== -->
    <!-- Contenido de la página -->
    <!-- ============================================================== -->
    <div id="page-wrapper">
        <div class="container-fluid">
 
            <form class="form-horizontal m-t-40" method="post" action="/clientespdo/nuevo">
 
                <input type="hidden" name="_token" value="{{ csrf_token() }}">
 
                <div class="form-group">
                    <label class="col-sm-3 control-label" for="input-nombre">Nombre :</label>
                    <div class="col-sm-9">
                        <div class="input-group">
                            <input type="text" class="form-control" id="input-nombre" name="nombre" tabindex="1" maxlength="80" autofocus>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label" for="input-apellidos">Apellidos :</label>
                    <div class="col-sm-9">
                        <div class="input-group">
                            <input type="text" class="form-control" id="input-apellidos" name="apellidos" tabindex="2" maxlength="80">
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label" for="input-telefono">Teléfono :</label>
                    <div class="col-sm-9">
                        <div class="input-group">
                            <input type="text" class="form-control" id="input-telefono" name="telefono" tabindex="3" maxlength="40">
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label" for="input-email">EMail :</label>
                    <div class="col-sm-9">
                        <div class="input-group">
                            <input type="text" class="form-control" id="input-email" name="email" tabindex="4" maxlength="70">
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label" for="input-direccion">Dirección :</label>
                    <div class="col-sm-9">
                        <div class="input-group">
                            <input type="text" class="form-control" id="input-direccion" name="direccion" tabindex="5" maxlength="80">
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label" for="input-ciudad">Ciudad :</label>
                    <div class="col-sm-9">
                        <div class="input-group">
                            <input type="text" class="form-control" id="input-ciudad" name="ciudad" tabindex="6" maxlength="80">
                        </div>
                    </div>
                </div>
 
                <input type="submit" value="Guardar" class="btn btn-info btn-rounded" tabindex="7">
 
            </form>
 
        </div>
    </div>


La única observación a este código es que la línea

<form class="form-horizontal m-t-40" method="post" action="/clientespdo/nuevo">

puede cambiarse a

<form class="form-horizontal m-t-40" method="post" action="/clientesmysqli/nuevo">


en función del ejempo que quieras utilizar.
Las etiquetas HTML5 responden al CSS3 que utilizo habitualmente para trabajar, de modo que si el formulario aparece un poco raro, no te preocupes.

Por último, te adjunto los dos ejemplos, el uno a continuación del otro.

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
 
 
 
 
$server = "tuservidor";
$databasename = "tubasededatos";
$user = "tuusuario";
$password = "tupassword";
 
 
 
/* La versión MYSQLI
************************************************************************************************** 
*/
 
 
 
//-- CLIENTES
Route::get( '/clientesmysqli/nuevo' ,  function(){
    return View::Make( 'clientes/nuevo' );
});
 
Route::post( '/clientesmysqli/nuevo' ,  function(Request $request, Response $response){
 
    try{
 
        $db = new mysqli( $server , $user , $password , $databasename );
 
        /* verificar conexión */
        if ( $db->connect_error ) {
            die( "La conexión ha fallado, error número ".$db->connect_errno.": ".$db->connect_error );
        }
 
//            $db = new db();
//            $db = $db->conectDB();
        // Preparar
        $sql = "INSERT INTO clientes (nombre, apellidos, telefono, email, direccion, ciudad) VALUES (?, ?, ?, ?, ?, ?)";
        $stmt = $db->prepare($sql);
        $stmt->bind_param( "ssssss" , $nombre, $apellidos, $telefono, $email, $direccion, $ciudad );
        // Establecer parámetros y ejecutar.
        $nombre = $request->input('nombre');
        $apellidos = $request->input('apellidos');
        $telefono = $request->input('telefono');
        $email = $request->input('email');
        $direccion = $request->input('direccion');
        $ciudad = $request->input('ciudad');
        $stmt->execute();
 
Log::Info( $nombre );
Log::Info( $apellidos );
Log::Info( $telefono );
Log::Info( $email );
Log::Info( $direccion );
Log::Info( $ciudad );
 
Log::Info( "Esto ha ido chachi piruli" );
 
        $stmt->close();
        $db->close();
 
    } catch (Exception $ex) {
 
Log::Info( $ex->getMessage() );
 
    }
 
});
 
 
 
 
/* La versión PDO
************************************************************************************************** 
*/
 
 
 
Route::get( '/clientespdo/nuevo' ,  function(){
    return View::Make( 'clientes/nuevo' );
});
 
Route::post( '/clientespdo/nuevo' ,  function(Request $request, Response $response){
 
    try{
 
        // Conectar
        $db = new PDO( "mysql:host=$server;dbname=$databasename" , $user , $password );
        // Establecer el nivel de errores a EXCEPTION
        $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
 
    } catch ( PDOException $e ) {
Log::Info( "Error: ".$e->getMessage() );
    }
 
    // Preparar
    $sql = "INSERT INTO clientes (nombre, apellidos, telefono, email, direccion, ciudad) VALUES (:nombre, :apellidos, :telefono, :email, :direccion, :ciudad)";
    $stmt = $db->prepare($sql);
    $stmt->bindParam(':nombre', $nombre);
    $stmt->bindParam(':apellidos', $apellidos);
    $stmt->bindParam(':telefono', $telefono);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':direccion', $direccion);
    $stmt->bindParam(':ciudad', $ciudad);
    // Establecer parámetros y ejecutar.
    $nombre = $request->input('nombre');
    $apellidos = $request->input('apellidos');
    $telefono = $request->input('telefono');
    $email = $request->input('email');
    $direccion = $request->input('direccion');
    $ciudad = $request->input('ciudad');
    $stmt->execute();
 
Log::Info( $nombre );
Log::Info( $apellidos );
Log::Info( $telefono );
Log::Info( $email );
Log::Info( $direccion );
Log::Info( $ciudad );
 
Log::Info( "Esto ha ido chachi piruli" );
 
    $db = null;
 
});




Habitualmente utilizo la Facade Log para guardar un registro de lo que va ocurriendo. Tú acostumbras a utilizar el echo de php.

Creo que no se me olvida nada más.
Saludos.
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
Imágen de perfil de Javier (orzo) Rodríguez
Val: 85
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Javier (orzo) Rodríguez (25 intervenciones) el 06/10/2018 22:53:41
Se me había olvidado la demostración de que, efectivamente, funciona.
;-)

datos

Saludos.
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 12/10/2018 22:30:05
una pregunta tengo conectado mi celular al computador yo genero la apk desde visual studio con apache cordova cuando abro la aplicacion en el cel no me conecta a la base datos que esta en mi portatil para hacer pruebas nadie me a colaborado con esto


este es el index.js en c#
url: "http:// 127.0.0.1/restfull/public/api/clientes", // aca apunto a mi localhost de la pc




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
// Si quiere una introducción sobre la plantilla En blanco, vea la siguiente documentación:
// http://go.microsoft.com/fwlink/?LinkID=397704
// Para depurar código al cargar la página en dispositivos/emuladores Ripple o Android: inicie la aplicación, establezca puntos de interrupción 
// y ejecute "window.location.reload()" en la Consola de JavaScript.
(function () {
    "use strict";
 
    document.addEventListener('deviceready', onDeviceReady.bind(this), false);
 
    function onDeviceReady() {
        // Controlar la pausa de Cordova y reanudar eventos
        document.addEventListener('pause', onPause.bind(this), false);
        document.addEventListener('resume', onResume.bind(this), false);
 
        // TODO: Cordova se ha cargado. Haga aquí las inicializaciones que necesiten Cordova.
 
        document.getElementById("btnCargar").addEventListener('click', CargarLista, false);
 
    };
 
    function onPause() {
        // TODO: esta aplicación se ha suspendido. Guarde el estado de la aplicación aquí.
    };
 
    function onResume() {
        // TODO: esta aplicación se ha reactivado. Restaure el estado de la aplicación aquí.
    };
 
    function CargarLista() {
        var cadena = "<table border=0 cellpadding=2 cellspacing=0><tr><th>nombre</th><th>apellidos</th><th>telefono</th><th>email</th></tr>";
        //agregando evento Ajax
        $.ajax({
            type: "GET",
            url: "http:// 127.0.0.1/restfull/public/api/clientes",
            crossDomain: true,
            cache: false,
            contentType: "application/json; charset=utf-8",
            async: false,
            dataType: "json",
            success: function (result) {
                $.each(result, function (i, field) {
                    cadena = cadena + "<tr>" + "<td>" + field.nombre + "</td><td>" + field.apellidos + "</td><td>" + field.telefono + "</td><td> " + field.email + "</td></tr>";
                });
                cadena = cadena + "</table>";
                $("#divLista").append(cadena);
            },
           error: function (result) {
                alert("Ocurrió un problema. Por favor Comuníquese con el administrador del sistema. 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
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Yamil Bracho (888 intervenciones) el 12/10/2018 22:47:13
127.0.0.1 o localhost se refiere a la direccion IP del equipo donde esta cargando la pagina y NO a tu euqipo personal. Es decir, cuando ejecutas en tu movil 127.0.0.1 lo va a buscar en tu dispostivo.
Necesitas (1) Tener conectividad al internet desde el movil y (2) Ver que direccion IP tienes en tu PC, con ipconfig y esa es la direccion que debes usar para llamar el servicio desde tu movil...
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 12/10/2018 23:10:02
es decir nada mas cambio la ip que esta en mi portatil y la coloco donde esta la de localhost o hay que hacer algo mas

url: "http:// 127.0.0.1/restfull/public/api/clientes", // aca apunto a mi localhost de la pc
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: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Yamil Bracho (888 intervenciones) el 12/10/2018 23:11:33
Tu portatil debe tener conectividad a intenerte y obtienes la direccion IP que le asigno tu ISP usando ipconfig y esa direccion es la que usas en el codigo de conexion (url: "http:// 127.0.0.1/restfull/public/api/clientes",)
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 12/10/2018 23:16:54
yo copio la que sale en direccion ipv4 y la reemplazo en la linea de localhost 127.0.0.1
yo hago eso y no conecta y tengo internet en ambos dispositivos

la pego aqui
(url: "http:// 127.0.0.1/restfull/public/api/clientes",)
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: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Yamil Bracho (888 intervenciones) el 12/10/2018 23:22:08
Exacto. Substituye la direccion 127.0.0.1 por la direccion de tu personal...
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 12/10/2018 23:26:09
ya lo hice pero no conecta
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 12/10/2018 23:36:26
la coloque asi aca oculto lo demas numero con una x

url: "http://192.xxx.x.xx/restfull/public/api/clientes",
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: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Yamil Bracho (888 intervenciones) el 12/10/2018 23:40:54
OK. Prueba a ver si funciona. Deberia funcionar si te conectas desde el browser
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 12/10/2018 23:45:13
como me conecto desde el browser
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 12/10/2018 23:50:09
cuando copio esto en el navegador me muestra el json con los clientes
url: "http://192.xxx.x.xx/restfull/public/api/clientes

y cuando abro aplicacion desde el celular no trae nada y es la misma ruta
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: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Yamil Bracho (888 intervenciones) el 13/10/2018 00:28:46
Pruebalo desde el browser del telf a ver si tienes acceso
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: 135
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error de metodo con slim php api rest

Publicado por Rey (74 intervenciones) el 13/10/2018 00:35:39
ya lo probe desde el browser y tengo acceso me muestra colocando la ruta con mi ip
http://192.xxx.x.xx/restfull/public/api/clientes

y me sale el json en el navegador mostrando los datos

pero en la aplicacion que esta en el celular no sale nada cunado cargo la lista
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