Foros del Web » Programando para Internet » PHP »

UPDATE complicado

Estas en el tema de UPDATE complicado en el foro de PHP en Foros del Web. Hola a todos! tengo un problema con actualizar unos registros... hago una consulta a la base de datos pidiendo todos los registros q tengan el ...
  #1 (permalink)  
Antiguo 23/12/2009, 10:45
 
Fecha de Ingreso: diciembre-2009
Mensajes: 33
Antigüedad: 14 años, 4 meses
Puntos: 0
UPDATE complicado

Hola a todos!

tengo un problema con actualizar unos registros...

hago una consulta a la base de datos pidiendo todos los registros q tengan
el codigo q envio y q en el campo tipo sea igual a "principal"

Código PHP:
<?php $sql mysql_query("SELECT id_contacto FROM contacto WHERE codigo = '".$dw."' AND tipo = '".$principal."'",$link); ?>
generalmente solo debiera arrojar 1 registro... por q la idea es q solo exista 1 registro con el campo (tipo = principal) ... el resto (tipo = segundario)

ahora con una consulta muestro todos los registros con el codigo q recibo en una tabla...

nombre - tipo

daniel - principal
oscar - segundario
catalina - segundario

todos los campos con el nombre "segundario" los dejo con un link

la idea es que al hacer click en uno de esos link haga una consulta a la base ...
en donde busque q registro tiene (tipo = principal) y lo deje en (tipo = segundario) .. y luego actualizar el registro que presione dejandolo como (tipo = principal)


espero entiendan .. :S

lo q tengo.. pero no me funciona:

Código PHP:
<?php  // dw
session_start();
include(
'conec.php');

$dw $_SESSION['pass']; // pass de cliente
$cod $_GET['cod']; // id de contacto

$Principal "Principal";
$Segundario "Segundario";

// busco el id del registro q tenga tipo PRINCIPAL
$sql mysql_query("SELECT id_contacto FROM contacto WHERE pass = '".$dw."' AND tipo = '".$Principal."'",$link);

if(
mysql_num_rows($sql) > 0){
    
        
$rs mysql_fetch_assoc($sql); 
        
$codigo $rs['id_contacto']; // ID 
    
    // ACTUALIZO PRINCIPAL A SEGUNDARIO
    
$sql_cambia mysql_query("UPDATE contacto SET tipo = '".$Segundario."' WHERE id_contacto = '".$codigo."'",$link);
        
}

// luego con el id de contacto q envie del link de la pagina anterior ACTUALIZO a PRINCIPAL
$sql_actualiza =  mysql_query("UPDATE contacto SET tipo = '".$dato."' WHERE id_contacto = '".$cod."'",$link);  

?>
  #2 (permalink)  
Antiguo 23/12/2009, 12:13
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: UPDATE complicado

Primero buscas que exista algún contacto con tipo 'Principal' ( es tal cual asi? Mayúsculas y minúsculas? )

También veo que tienes 2 códigos de contacto. La variable $cod y $codigo... hacen referencia al mismo código? Así podríamos solo usar el que obtienes del $_GET.

Otra cosa que noté. Se supone que solo debe haber uno con tipo 'Principal', así que no es necesario actualizar usando el código de contacto, con buscar utilizando el tipo como referencia es suficiente.

De dónde sale la variable $dato de la 2da consulta Update?

Código PHP:
Ver original
  1. $dw=$_SESSION['pass']; // pass de cliente
  2. $cod = $_GET['cod'];// id de contacto
  3.  
  4. $sql = mysql_query("SELECT id_contacto FROM contacto WHERE pass = '".$dw."' AND tipo = 'Principal'",$link);
  5. if(mysql_num_rows($sql)[ > 0){
  6.     // ACTUALIZO PRINCIPAL A SEGUNDARIO
  7.     $sql_cambia =mysql_query("UPDATE contacto SET tipo = 'Segundario' WHERE tipo = 'Principal'",$link);
  8.          
  9. }
  10. $sql_actualiza= mysql_query("UPDATE contacto SET tipo = 'Principal' WHERE id_contacto = '".$cod."' AND tipo = 'Segundaro'",$link);

A ver si te funciona. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Última edición por spider_boy; 23/12/2009 a las 12:30
  #3 (permalink)  
Antiguo 23/12/2009, 12:22
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: UPDATE complicado

1) no es "segundario" es SECUNDARIO
2) Seleccionaste la base de datos con mysql_select_db()??
3) Para que haces 2 variables fijas asi??

$Principal = "Principal";
$Segundario = "Segundario";

Porque no escribis el valor en la consulta y listo?

4) Que hay en $dato??
__________________
HV Studio
Diseño y desarrollo web
  #4 (permalink)  
Antiguo 23/12/2009, 12:24
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 4 meses
Puntos: 12
Respuesta: UPDATE complicado

PONLE
mysql_query() or die (mysql_error());

te ayuda con los errores
  #5 (permalink)  
Antiguo 23/12/2009, 13:10
 
Fecha de Ingreso: diciembre-2009
Mensajes: 33
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: UPDATE complicado

Cita:
Iniciado por jackson666 Ver Mensaje
1) no es "segundario" es SECUNDARIO
2) Seleccionaste la base de datos con mysql_select_db()??
3) Para que haces 2 variables fijas asi??

$Principal = "Principal";
$Segundario = "Segundario";

Porque no escribis el valor en la consulta y listo?

4) Que hay en $dato??
1) en q afecta eso en mi codigo?
2) claro q la seleccione en mi archivo de coneccion
3) para llevar un mejor orden y q sea mas claro a la hora de revisar el codigo yo.. u otra persona.
4) para poder explicarlo aqui.. cambie el nombre de variables.. esa se me paso.. $dato = $Principal
  #6 (permalink)  
Antiguo 23/12/2009, 13:15
 
Fecha de Ingreso: diciembre-2009
Mensajes: 33
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: UPDATE complicado

Gracias a toos..

Vale spider_boy..

me iluminaste a reducir el codigo... y q hacia cosas innecesarias...
lo deje asi de simple:

$dw = $_SESSION['pass']; // pass de cliente
$cod = $_GET['cod']; // id de contacto

// busco el q sea principal.. y lo dejo en segundario...
$sql_cambia = mysql_query("UPDATE contactos SET observacion = '".Segundario."' WHERE pass = '".$dw."' AND observacion = '".Principal."'",$link);

// luego actualizo el registro del codigo q envie y lo dejo en principal
$sql_actualiza = mysql_query("UPDATE contactos SET observacion = '".Principal."' WHERE id_contacto = '".$cod."'",$link);


GRACIAS.
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 14:23.