Foros del Web » Programando para Internet » PHP »

problema con update

Estas en el tema de problema con update en el foro de PHP en Foros del Web. Hola buenos días, soy nuevo en esto del myql/php y esoy implementando una intranet. Hay un momento en que sale un listado de categorias previamente ...
  #1 (permalink)  
Antiguo 25/11/2009, 06:44
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
problema con update

Hola buenos días, soy nuevo en esto del myql/php y esoy implementando una intranet. Hay un momento en que sale un listado de categorias previamente cogidas de otra tabla que se llama categorias. Pues bien, he hecho que se muestren en inputs para que se puedan modificar una vez hayas apretado al boton modificar.

Este boton modificar llama a un php en el que cojo primero el valor antiguo del campo categoria y loc argo en un array que se llama $categorias_old y despues ejecuto un update para que me cambie la categoria que se ha enviado por post, teniendo en cuenta el campo usuario y el campo categoria antiguo:

Código PHP:
$cat0 "select categoria from categorias where user='".$_POST['user']."'";
$consulta0 mysql_query($cat0,$con);
$contador 0;
while(
$rowmysql_fetch_array($consulta0)){
    
$categorias_old[$contador] = $row['categoria'];    
    
$contador++;
}

    
$categorias explode('_',$_POST['array']);
    for(
$i=0;$i<count($categorias_old);$i++){
        
$cat "UPDATE portfolio,categorias SET categoria='".$categorias[$i]."' WHERE user='".$_POST['user']."' AND categoria='".$categorias_old[$i]."'";
        
$consulta mysql_query($cat,$con);

    if(!
$consulta){
            
$mensaje .= "Ha ocurrido un error al actualizar la categoria ".$categorias[$i].". Tendra que volver a actualizar estas categorias.<br><br>";
            
$mensaje.= "<br><br>Esta es la cadena que ha fallado: ".$cat;
        }else{
            
$mensaje .= "La categoria ".$categorias_old[$i]." se ha modificado a ".$categorias[$i]." correctamente.<br><br>";
        }
    }
    
    echo 
$mensaje;

El problema es que no se que hago mal que no se cambia, me da error, no se puede hacer un update en el que el campo set sea el mismo que da la condicion, aunque sean distintos?

Gracias!

Última edición por piretrus; 25/11/2009 a las 06:53
  #2 (permalink)  
Antiguo 25/11/2009, 07:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema con update

Te recomiendo hacer uso de update inner join y no de la forma como lo haces.
Mira un post que trata el tema.

En próximos mensajes en este foro, no uses codigo php ni de ningún lenguaje de programación. Pon únicamente la sentencia SQL en la que requieras ayuda.

saludos piretrus
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/11/2009, 10:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Hola, piretrus.

Por favor, no coloque código de programación en la sección de bases de datos.
Véase: http://www.forosdelweb.com/f21/funci...-datos-413499/

Tema trasladado desde la sección de Mysql.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 25/11/2009, 13:47
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con update

He estado mirando lo del joinn y he realizado esta sentencia, pero me da error, que hago mal?

Tengo 2 tablas, portfolio y categorias, y estan relacionados por el nombre de categoria, quiero hacer un pdate de las categorias en ambas tablas teniendo en cuenta el usuario, que tambien es comun en ambas

UPDATE portfolio AS a inner join categorias AS b on a.categoria = b.categoria SET a.categoria='".$categorias[$i]."', b.categoria='".$categorias[$i]."' where user='".$_POST['user']."'

Muchas gracias!
  #5 (permalink)  
Antiguo 25/11/2009, 14:14
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema con update

Pero cual error?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 25/11/2009, 14:19
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con update

Me dice esto: Column 'user' in where clause is ambiguous
  #7 (permalink)  
Antiguo 25/11/2009, 14:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: problema con update

Ese error puede que se deba a que dentro de las dos tablas tenes el campo "user". Fijate de ponerlo de esta forma al hacer el updateo:

tabla.campo

Ej: portfolio.user

Espero que te sirva

Saludos!
  #8 (permalink)  
Antiguo 25/11/2009, 14:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema con update

Código php:
Ver original
  1. UPDATE portfolio AS a inner join categorias AS b on a.categoria = b.categoria SET a.categoria='".$categorias[$i]."', b.categoria='".$categorias[$i]."' where a.user='".$_POST['user']."'

así?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 25/11/2009, 14:56
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: problema con update

Mmm, igualmente no le tengo mucha confinza a updatear en una sola consulta dos tablas diferentes. Pero bueno. Lo que decia igualmente, mas sencillo es:

Código PHP:

"UPDATE portfolio,categorias SET portfolio.categoria='".$categorias[$i]."' WHERE portfolio.user='".$_POST['user']."' AND portfolio.categoria='".$categorias_old[$i]."'"
Suponiendo que se updatea el campo categoria que esta dentro de la tabla portfolio, se valida el campo user que esta dentro de portfolio y el campo categoria que esta dentro de la tabla portfolio (tambien).

No se si se entendio, cualquier cosita me avisan y lo explico un poco mejor, jeje
  #10 (permalink)  
Antiguo 25/11/2009, 15:02
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con update

Antes de nada muchas gracias...estoy con la cabeza que ehca humo, cuesta acostumbrarse al sql.

Con la sentencia que has pasado tu solo se updatearia en la tabla portfolio, faltaria en la tabla categorias -> faltaria el categorias.categoria ='".$categorias[$i]."', no?
  #11 (permalink)  
Antiguo 25/11/2009, 15:10
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con update

Ei muchas gracias!! repitiendo la sentencia dos veces pero la segunda con la otra tabla me lo hace bien :)

Pero no puede haber una forma de hacerlo solo en una llamada?
  #12 (permalink)  
Antiguo 26/11/2009, 08:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: problema con update

En esa misma consulta podes updatear a las dos tablas, tranquilamente. Nada mas que en vez de poner portfolio.categoria = "x" vas agregando los campos de categorias. Ej: categorias.titulo="nuevo titulo" y asi en la misma consulta.

Espero que te sirva!

Saludos!
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 16:02.