Foros del Web » Programando para Internet » PHP »

sentencia update en php no me actualiza datos

Estas en el tema de sentencia update en php no me actualiza datos en el foro de PHP en Foros del Web. Hola amigos, Soy nuevo en el foro y aprovecho para presentarme, me llamo Sergio y soy progrmador web desde hace poco. Bien, mi problema es ...
  #1 (permalink)  
Antiguo 22/05/2012, 05:34
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
sentencia update en php no me actualiza datos

Hola amigos,

Soy nuevo en el foro y aprovecho para presentarme, me llamo Sergio y soy progrmador web desde hace poco. Bien, mi problema es que tengo un formulario en el cual quiero modificar datos de una tabla de mysql y utilizo esta orden y no me funciona:
Código:
$sql= mysql_query("UPDATE parte SET fecha='".$anno."-".$mes."-".$dia." 00:00:00', fecha_fin='".$anno_fin."-".$mes_fin."-".$dia_fin." 00:00:00',
nom_cliente='".$cliente."', direccion='".$direccion."', dni='".$dni."', telefono='".$telefono."', localidad='".$localidad."', 
provincia='".$provincia."', cp='".$cp."', estado='".$estado."', problema='".$problema."', tecnico='".$tecnico."', observaciones='".$observaciones."', 
importe='".$importe."' WHERE id='".$id."';");
ven algun fallo en esta orden? porque yo no paro de darle vueltas. Gracias de antemano
  #2 (permalink)  
Antiguo 22/05/2012, 05:52
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: sentencia update en php no me actualiza datos

No le veo ningún fallo, pero que error te esta dando ? utiliza mysql_error para que determines el error.

Saludos.
  #3 (permalink)  
Antiguo 22/05/2012, 08:23
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: sentencia update en php no me actualiza datos

El caso es que no me da ningun error sino que no actualiza los datos, tiene que ser un fallo tonto seguro pero por más vueltas que le doy no se que hacerle.
  #4 (permalink)  
Antiguo 22/05/2012, 08:25
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: sentencia update en php no me actualiza datos

Si no genera ningun error y no actualiza ningun registro lo mas probable es que no esta llegando el ID a la sentencia sql... prueba imprimiendo la sentencia a ver que tal aparece:

Código PHP:
Ver original
  1. $sql = "UPDATE parte SET fecha='".$anno."-".$mes."-".$dia." 00:00:00', fecha_fin='".$anno_fin."-".$mes_fin."-".$dia_fin." 00:00:00',
  2. nom_cliente='".$cliente."', direccion='".$direccion."', dni='".$dni."', telefono='".$telefono."', localidad='".$localidad."',
  3. provincia='".$provincia."', cp='".$cp."', estado='".$estado."', problema='".$problema."', tecnico='".$tecnico."', observaciones='".$observaciones."',
  4. importe='".$importe."' WHERE id='".$id."';";
  5. echo $sql;
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #5 (permalink)  
Antiguo 23/05/2012, 01:02
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: sentencia update en php no me actualiza datos

no muestra nada, posiblemente sea que la variable id no tenga ningun valor, ese valor lo paso a traves del formulario por un campo oculto, he pensado hacerlo por una sesion, que idea me dais?
  #6 (permalink)  
Antiguo 23/05/2012, 01:30
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: sentencia update en php no me actualiza datos

os pongo todo el codigo, porque la variable si que tiene el valoir del id, a ver que pensais...

Cita:
<?php

$hostname_partes_internet = "localhost";
$database_partes_internet = "partes_bd";
$username_partes_internet = "root";
$password_partes_internet = "root";
mysql_pconnect($hostname_partes_internet, $username_partes_internet, $password_partes_internet) ;

mysql_select_db("partes_bd");

$id_part=$_POST['id_parte'];

$cliente=$_POST['cliente'];

$dia=$_POST['dia'];
$mes=$_POST['mes'];
$anno=$_POST['anno'];

$dia_fin=$_POST['dia_fin'];
$mes_fin=$_POST['mes_fin'];
$anno_fin=$_POST['anno_fin'];

$direccion=$_POST['direccion'];


$provincia=$_POST['provincia'];
$localidad=$_POST['localidad'];
$cp=$_POST['cp'];
$dni=$_POST['dni'];

$telefono=$_POST['telefono'];
$estado=$_POST['estado'];

$problema=$_POST['problema'];
$tecnico=$_POST['tecnico'];
$observaciones=$_POST['observaciones'];
$importe=$_POST['importe'];



$sql= mysql_query("UPDATE parte SET fecha='".$anno."-".$mes."-".$dia." 00:00:00', fecha_fin='".$anno_fin."-".$mes_fin."-".$dia_fin." 00:00:00',
nom_cliente='".$cliente."', direccion='".$direccion."', dni='".$dni."', telefono='".$telefono."', localidad='".$localidad."',
provincia='".$provincia."', cp='".$cp."', estado='".$estado."', problema='".$problema."', tecnico='".$tecnico."', observaciones='".$observaciones."',
importe='".$importe."' WHERE id='".$id_part."';");



if ($sql) {
include ('./subida.php');
}
else {
include ('./nosubida.php');
}
?>
  #7 (permalink)  
Antiguo 23/05/2012, 09:44
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: sentencia update en php no me actualiza datos

Ya descartaste que el ID no pasa... fijate bien en el atributo name del formulario

<input type="hiden" name="id_parte"

lo otro que debes hacer es fijarte en el atributo VALUE para mirar si este tiene algun valor, mira el codigo de tu formulario CON EL NAVEGADOR y busca el input hidden y mira si tiene value="algo" si no tiene nada el problema esta en el formulario...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #8 (permalink)  
Antiguo 24/05/2012, 01:10
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: sentencia update en php no me actualiza datos

hice un echo $id_part y si me coge el valor, es decir, que $id_part contiene el valor que le paso a traves del formulario y tambien he mirado que todas las variables contienen su valor, estoy algo desesperado y seguramente sea una tontería.
  #9 (permalink)  
Antiguo 24/05/2012, 07:07
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: sentencia update en php no me actualiza datos

Utiliza el parametro OR DIE para ver si MySql genera algun error:
Código PHP:
Ver original
  1. $sql= mysql_query("UPDATE parte SET fecha='".$anno."-".$mes."-".$dia." 00:00:00', fecha_fin='".$anno_fin."-".$mes_fin."-".$dia_fin." 00:00:00',
  2. nom_cliente='".$cliente."', direccion='".$direccion."', dni='".$dni."', telefono='".$telefono."', localidad='".$localidad."',
  3. provincia='".$provincia."', cp='".$cp."', estado='".$estado."', problema='".$problema."', tecnico='".$tecnico."', observaciones='".$observaciones."',
  4. importe='".$importe."' WHERE id='".$id_part."';") OR DIE (mysql_error());
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #10 (permalink)  
Antiguo 24/05/2012, 09:34
Avatar de jlcm_2000  
Fecha de Ingreso: diciembre-2006
Mensajes: 21
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: sentencia update en php no me actualiza datos

Estas GUARDANDO al AIRE tu coneccion, todo esta bien solo te falto guardar la coneccion y meterla como parametro al momento de ejecutar la consulta. Te paso la correccion:

Código:
 $hostname_partes_internet = "localhost";
 $database_partes_internet = "consulta";
 $username_partes_internet = "root";
 $password_partes_internet = "12345";
 $con = (mysql_connect($hostname_partes_internet, $username_partes_internet, $password_partes_internet)) or die(mysql_error()); 
 mysql_select_db("consulta",$con) or die(mysql_error());
Código:
$sql= mysql_query("UPDATE parte SET fecha='".$anno."-".$mes."-".$dia." 00:00:00', fecha_fin='".$anno_fin."-".$mes_fin."-".$dia_fin." 00:00:00',
 nom_cliente='".$cliente."', direccion='".$direccion."', dni='".$dni."', telefono='".$telefono."', localidad='".$localidad."', 
 provincia='".$provincia."', cp='".$cp."', estado='".$estado."', problema='".$problema."', tecnico='".$tecnico."', observaciones='".$observaciones."', 
 importe='".$importe."' WHERE id='".$id_part."'", $con);
Observa como cree una variable llamada $con para guardar la coneccion y luego la utilice como parametro al ejecutar el UPDATE. Por cierto tambien remplace mysql_pconnect por mysql_connect. Este codigo lo probe y no tiene ningun fallo, saludos...

Última edición por jlcm_2000; 24/05/2012 a las 09:58
  #11 (permalink)  
Antiguo 24/05/2012, 10:05
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: sentencia update en php no me actualiza datos

Cita:
Tu coneccion la estas GUARDANDO al AIRE, todo esta bien solo te falto guardar la coneccion y meterla como parametro al momento de ejecutar la consulta. Te paso la correccion:
Lo siguiente es solo para ACLARAR... la funcion mysql_query de PHP solo tiene un parametro que es OBLIGATORIO, que es el primero (que es la sintaxis SQL) el segundo parametro es OPCIONAL el cual es la conexion a MySql... cuando este parametro no se especifica, la ultima conexion establecida es asumida. Por tal motivo el hecho de que uno tenga:

mysql_connect();
mysql_query($sql);

Debera funcionar perfectamente ya que la conexion fue abierta en la linea anterior, entonces esta sera tomada sin necesidad de especificarse como segundo parametro de la funcion mysql_query
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #12 (permalink)  
Antiguo 24/05/2012, 10:11
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: sentencia update en php no me actualiza datos

Voy a pedir disculpa si se produce una desviación del tema pero me gustaría hacer una pequeña corrección a jlcm_2000,

mysql_connect esta función abre una conexión al servidor y te retorna el identificador de la conexión
La razón por la que es preferible almacenarlo en una variables es entre muchas si tienes mas de una conexión aun servidor de base de datos.

con el link que te retorna puedes especificar a cual de los servidores va dirigida tu consulta.


Código PHP:
Ver original
  1. $link1 = mysql_connect();
  2. $link2 = mysql_connect();
  3.  
  4. $row1 = mysql_query(..., $link1) // query para el svr 1
  5. $row2 = mysql_query(..., $link2) // query para el svr 2
  6.  
  7. mysql_close($link1);
  8. mysql_close($link2);

Si solo estas usando conexión con un servidor entonces no estaria mal que hicieras

Código PHP:
Ver original
  1. $row1 = mysql_query(...) // el query automaticamente busca el ultimo enlace establecido con el svr
  2. mysql_close(); // el close automaticamente busca el ultimo enlace y lo cierra.

mysql_pconnect crea una conexión persistente con el servidor el echo que el este utilizando una de las dos no creo que sea el problema de ser asi ya hubiera generado un error con mysql_error()

Retornando al tema creo que stigma_one debes de hacer una prueba simulando los datos que deberías recibir del formulario y luego asegurándote que el where id que le estas pasando exista en la tabla.
Utiliza or die (mysql_error) como te comenta jotaincubus.

Saludos.
  #13 (permalink)  
Antiguo 24/05/2012, 10:52
Avatar de jlcm_2000  
Fecha de Ingreso: diciembre-2006
Mensajes: 21
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: sentencia update en php no me actualiza datos

ok, me disculpo por no revisar primero la documentacion de estas funciones, a veces asumo como verdadero mi forma cotidiana de aplicarlas y sobre todo cuando nunca me fallan, generalmente uso una clase de coneccion la cual les comparto ya que me da mas confianza su manejo que de forma estructurada:

Código:
<?php
	class ConeccionDB
	{  		
		private $conexion;  
		private $total_consultas;
 
		public function ConeccionDB()
		{  
			if(!isset($this->conexion))
			{  
				$this->conexion = (mysql_connect("localhost:3307","root","12345")) or die(mysql_error());  
				mysql_select_db("nombre_base_datos",$this->conexion) or die(mysql_error());  
			}  
		}  
 
		public function consulta($consulta)
		{		
			$this->total_consultas++;  
			$resultado = mysql_query($consulta,$this->conexion);  
			if(!$resultado)
			{			
				echo 'MySQL Error: ' . mysql_error();  
				exit;  
			}  
			return $resultado;   
		}  
 
		public function fetch_array($consulta)
		{   
			return mysql_fetch_array($consulta);  
		}  
		
		public function num_rows($consulta)
		{   
			return mysql_num_rows($consulta);  
		}  
 
		public function getTotalConsultas()
		{  
			return $this->total_consultas;  
		}  
	}
?>
Y para realizar alguna consulta:

Código:
$con = new ConeccionDB();  
$sql = "SELECT campo FROM mitabla WHERE id=123";
$consulta = $con->consulta($sql);  
if($con->num_rows($consulta)>0)
{  
 while($resultados = $con->fetch_array($consulta))
 {  
  echo "ID: ".$resultados['id']."<br />";  
 }  
}
Con esta clase tambien me funciona tu consulta UPDATE como la tienes, si a ti te marca error definitivamente es algo con tu base de datos...

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:54.