PHP - php-mvc-update

 
Vista:
sin imagen de perfil
Val: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 03/08/2017 23:06:23
Hola, estoy tratando de hacer funcionar el update, dejo adjuntado las funciones del controller y modal.
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 05/08/2017 00:45:55
gracias a un contacto en el chat, pude mejorar mi codigo, aqui paso la actualizacion para ver si puedo solucionar, hasta ahora pude traer datos a modificar, los modifico y cuando quiero guardar para insertarlos en la base de datos queda la pantalla en blanco y no se insertan en la base.

funcion del modal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function regSector($dataMod)
{
	$resultado = false;
	global $db;
	//var_dump ($id_sector);
	$safesqlParametros = array($dataMod);
	//var_dump($safesqlParametros);
 
	$safesqlQuery = " UPDATE  sector SET  sec_nombre= '".$dataMod['nombre']."',  sec_descripcion='".$dataMod['descripcion']."'  WHERE id_sector = '%s'";
	//var_dump($safesqlQuery);
	$safesql = new SafeSQL_MySQL($db->dbConn);
	$query = $safesql ->query($safesqlQuery, $safesqlParametros);
	$resultado = $db->UPDATE($query);
	//var_dump($query);
	return $resultado;
}

funcion del controller
1
2
3
4
5
6
7
8
9
function actualizarSector()
{
	$dataMod["nombre"] = $_REQUEST["nombre"];
	$dataMod["descripcion"] = $_REQUEST["descripcion"];
 
	$sector = new Sector_Model();
	$resultado = $sector->regSector($dataMod);
	if ($resultado) return $this->listadoSectores();
}
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 05/08/2017 01:16:54
hice una prueba en la linea 8 del controller sacando
1
if ($resultado)
y me retorno el listado de registros sin la modificacion entonces me parece que el problema puede estar en la variable $dataMod, no estoy seguro de estar utilizandola bien.
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 [abZeroX]
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por [abZeroX] (157 intervenciones) el 05/08/2017 03:58:09
Hola, estuve viendo tu código y realice algunas modificaciones en la función regSector, te comparto el código:

1
2
3
4
5
6
7
8
9
10
function regSector($dataMod) {
	global $db;
 
	$safesqlQuery = "UPDATE sector SET sec_nombre='%s', sec_descripcion='%s' WHERE id_sector = '%s'";
 
	$safesql = new SafeSQL_MySQL($db->dbConn);
	$query = $safesql->query($safesqlQuery, $dataMod);
 
	return $db->UPDATE($query);
}

En caso de que este cambio no funcione, podrias compartir como es que realizas la conexion, es decir el objeto $db.

Nos comentas.
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 05/08/2017 17:28:48
hola, probé y me dio estos errores

Notice: SafeSQL: unmatched number of vars and % placeholders: UPDATE sector SET sec_nombre='%s', sec_descripcion='%s' WHERE id_sector = '%s' in ..class.safesqli.php on line 179

Notice: Undefined offset: 1 in ..class.safesqli.php on line 72

Notice: Undefined offset: 0 in ..class.safesqli.php on line 72

Si es por la conexion a la base, esta bien realizada, siempre la uso asi en las funciones y funcionan, tengo varias realizadas ya.
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 [abZeroX]
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por [abZeroX] (157 intervenciones) el 05/08/2017 22:58:14
Prueba cambiar la linea 7 de regSector:

1
2
$id_sector = 'EL_ID_DE_SECTOR';
$query = $safesql->query($safesqlQuery, array($dataMod['nombre'], $dataMod['descripcion'], $id_sector));

Puedes ver tambien este documento donde detalla más sobre la clase safeSQL.
http://www.phpinsider.com/php/code/SafeSQL/

Nos comentas.
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 07/08/2017 05:08:06
Despues de la prueba me queda la pantalla en blanco y lo siguiente en la url://LOCAL//nombre=A1&descripcion=prueba&estado=1&action=sector%3A%3AactualizarSector
Aclaración: el nombre del sector es A1, en descripcion modifique y escribi prueba, el estado es 1 porque esta habilitado, al contrario desabilitado seria un 2 y estaria eliminado del sistema para el usuario y no lo podria ver el. luego actualizarSector es una funcion.

Así me quedo la función
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function regSector($dataMod)
{
	$resultado = false;
	global $db;
 
	$safesqlQuery = "UPDATE sector SET sec_nombre='%s', sec_descripcion='%s' WHERE id_sector = '%s'";
 
	$safesql = new SafeSQL_MySQL($db->dbConn);
 
	$id_sector = 'EL_ID_DE_SECTOR';
	$query = $safesql->query($safesqlQuery, array($dataMod['nombre'], $dataMod['descripcion'], $id_sector));
 
	return $db->UPDATE($query);
}
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 [abZeroX]
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por [abZeroX] (157 intervenciones) el 08/08/2017 00:08:26
No me queda claro tu comentario, pudiste realizar 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
sin imagen de perfil
Val: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 08/08/2017 00:16:46
no aun no, dejame que prepare algo y te envio de nuevo para poder solucionarlo. de todos modos agradezco la ayuda.
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 23/08/2017 01:41:09
Hola, no pude actualizar, te envió adjuntado como va quedando, sigo intentando.
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 23/08/2017 23:21:13
en la funcion del model me queda esto,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function regSector($dataMod)
{
	$resultado = false;
	global $db;
 
	$safesqlParametros = array($dataMod);
	var_dump($safesqlParametros);
 
	echo "///////";
 
 
 
	$safesqlQuery = " UPDATE  sector SET  sec_nombre= '".$dataMod['nombre']."',  sec_descripcion='".$dataMod['descripcion']."'  WHERE id_sector = '%s'";
	var_dump($safesqlQuery);
	$safesql = new SafeSQL_MySQL($db->dbConn);
	$query = $safesql ->query($safesqlQuery, $safesqlParametros);
	$resultado = $db->UPDATE($query);
	echo "///////";
	var_dump($query);
	return $resultado;
}
hago tres var_dump y me muestra esto:
el primer var_dump lo separe para verlo mejor, aparentemente no muestra el id, por eso pone el nombre en lugar de id
1
2
3
4
5
6
7
8
9
10
array(1){
 [0]=> array(2) {
  ["nombre"]=> string(2) "A1"
  ["descripcion"]=> string(3) "fds"
 }
}
////////
string(85) " UPDATE sector SET sec_nombre= 'A1', sec_descripcion='fds' WHERE id_sector = '%s'"
///////
string(85) " UPDATE sector SET sec_nombre= 'A1', sec_descripcion='fds' WHERE id_sector = 'A1'"
Lo que veo es que no me reconoce el id, esta mal, en id_sector tiene que mostrar por ejemplo 268
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 [abZeroX]
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por [abZeroX] (157 intervenciones) el 25/08/2017 03:05:08
Hola de nuevo, el problemas es que nunca le asignaste el id_sector, es decir que en la linea 16:
1
$query = $safesql ->query($safesqlQuery, $safesqlParametros);
, cuando haces esto el segundo parámetro del método query debe ser un array con los valores correspondientes, que se asignaran de forma respectiva con los marcadores determinados en la consulta como en el caso de un string '%s'.
Le estas pásando un array, pero con solo 2 párametros y donde en la query solo uno es un placeholder y los otros dos los estas asignado directamente. Por lo que este unico marcador tomara el primer valor del array $safesqlParametros el cual se corresponde con nombre del sector.

Lo que deberias hacer es agregar al array $safesqlParametros el id_sector como ultimo valor y la query armarla utilizando placeholders. Algo asi podria servir:

1
2
3
4
5
6
7
8
9
// parámetros
$safesqlParametros = array('A1', 'fds', 268);
 
// query
$safesqlQuery = "UPDATE  sector SET  sec_nombre= '%s',  sec_descripcion='%s'  WHERE id_sector = %i";
$safesql = new SafeSQL_MySQL($db->dbConn);
$query = $safesql ->query($safesqlQuery, $safesqlParametros);
$resultado = $db->UPDATE($query);
return $resultado;


Prueba con esto y nos comentas.
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 25/08/2017 03:33:03
bien ahi modifico perfecto, pero como reemplazo esto:

1
$safesqlParametros = array('A4', 'sdf', 268);

ahi yo tenia un array como pense que era $dataMod y no funciono.
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 25/08/2017 03:39:09
a que te referis con placeholders?
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 25/08/2017 03:54:09
quedaria algo asi, aunque no esta terminado
en parametros
1
$safesqlParametros = array($dataMod["sector"],$dataMod["nombre"],$dataMod["descripcion"]);

y en la funcion del model
1
2
3
4
5
6
7
8
9
10
function actualizarSector()
{
	$dataMod["sector"] = $_REQUEST["sector"]; //agregue este
	$dataMod["nombre"] = $_REQUEST["nombre"];
	$dataMod["descripcion"] = $_REQUEST["descripcion"];
 
	$sector = new Sector_Model();
	$resultado = $sector->regSector($dataMod);
	if ($resultado) return $this->listadoSectores();
}

agregue una linea, la que esta comentada, pero no me los toma aun
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: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php-mvc-update

Publicado por mac (35 intervenciones) el 26/08/2017 23:25:26
Muchas gracias, recien logre actualizar bien, ahi paso como me quedo, te agradezco la ayuda. ya voy a mejorar la validacion, pero doy por terminado este tema, saludos.
1
$safesqlParametros = array($dataMod["nombre"],$dataMod["descripcion"],$dataMod["idSector"]);
y la funcion del model
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function actualizarSector()
		{
			if (inspeccionaSQL($_REQUEST["idSector"]))
				echo ("0");
			if (inspeccionaSQL($_REQUEST["nombre"]))
				echo ("0");
			if (inspeccionaSQL($_REQUEST["descripcion"]))
				echo ("0");
 
 
			$dataMod["idSector"] = $_REQUEST["idSector"];
			$dataMod["nombre"] = $_REQUEST["nombre"];
			$dataMod["descripcion"] = $_REQUEST["descripcion"];
 
			$sector = new Sector_Model();
			$resultado = $sector->regSector($dataMod);
			if ($resultado) return $this->listadoSectores();
		}
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