Foros del Web » Programando para Internet » PHP »

consulta con datos de una consulta previa

Estas en el tema de consulta con datos de una consulta previa en el foro de PHP en Foros del Web. Amigasos necesito de su ayuda tengo la siguiente consulta Código PHP: $cod  =  $_POST [ 'cod' ];              mysql_query ( "set names utf8" );                      $consulta  =  ...
  #1 (permalink)  
Antiguo 11/06/2013, 15:25
 
Fecha de Ingreso: enero-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 1
consulta con datos de una consulta previa

Amigasos necesito de su ayuda

tengo la siguiente consulta

Código PHP:
$cod $_POST['cod'];
            
mysql_query("set names utf8");
                    
$consulta mysql_query("SELECT * FROM iccmpc WHERE clave = '$cod'");
            
$rows=mysql_fetch_array($consulta);
      
header("location:iccmpc.php?cod=$cod&nombre=".$rows['nombre']."&rut=".$rows['rut']."&pos=".$rows['pos']."&nom=");
    }
                        } 

la tabla tiene las siguientes colunas
id - cod - nombre - rut - pos

me complica explicar lo que necesito .. pero tratare de ser lo mas claro posible

si pueden ver en el header la ultima variable que quiero enviar es nom para obtener este nombre deveria realizar el siguiente procedimiento

la consulta
Código PHP:
$consulta mysql_query("SELECT * FROM iccmpc WHERE clave = '$cod'"); 
me deveria entregar el valor de
Código PHP:
pos=".$rows['pos']. 
y con este valor deveria buscar en la columna id el valor y cuando lo pille entregar el nombre correspondiente de la fila a la variable nom
  #2 (permalink)  
Antiguo 11/06/2013, 16:47
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años, 7 meses
Puntos: 17
Respuesta: consulta con datos de una consulta previa

No se si te he entendido muy bien, pero creo que lo que quieres es hacer otra consulta, algo así:

Código PHP:
Ver original
  1. $consulta2 = mysql_query("SELECT * FROM iccmpc WHERE pos= '$rows['pos']'");
  2. $rows2=mysql_fetch_array($consulta2);

Y ahora ya puedes pasar el valor de nom con:

Código PHP:
Ver original
  1. nom=".$rows2['nom'].

No se si es esto lo que estás pidiendo, si no tendrás que explicarlo un poco mas claro!

Saludos.
  #3 (permalink)  
Antiguo 11/06/2013, 17:01
Avatar de rocha7778  
Fecha de Ingreso: mayo-2013
Ubicación: Cartagena Colombia
Mensajes: 79
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: consulta con datos de una consulta previa

yo estoy algo enredado, pero te aconsejo por norma de ingeniera de software que no hagas consulta de la forma:

Cita:
select * from tabla
,
esta forma de consulta es muy ineficiente dado que te trae todos los valores de las tablas, cargando en memoria muchos valores que inclusive no necesitas.

suponte que tu tabla tiene 20 columnas , algo exagerado pero solo usas 2 en la consulta, estas trayendo mas datos y por lo tanto utilizas mas memoria.

Por otro lado no se si la consulta la haces lo mas simple posible y no tienes en cuenta, aspectos de seguridad como filtrar los datos, antes de incluirlos en la consulta.



Por ultimo, plantea mejor la pregunta esta algo enredada.
  #4 (permalink)  
Antiguo 11/06/2013, 21:14
 
Fecha de Ingreso: enero-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: consulta con datos de una consulta previa

Cita:
Iniciado por Lobito14 Ver Mensaje
No se si te he entendido muy bien, pero creo que lo que quieres es hacer otra consulta, algo así:

Código PHP:
Ver original
  1. $consulta2 = mysql_query("SELECT * FROM iccmpc WHERE pos= '$rows['pos']'");
  2. $rows2=mysql_fetch_array($consulta2);

Y ahora ya puedes pasar el valor de nom con:

Código PHP:
Ver original
  1. nom=".$rows2['nom'].

No se si es esto lo que estás pidiendo, si no tendrás que explicarlo un poco mas claro!

Saludos.
esto lo intente pero no mefunciono.. vamos a ver con tu codigo .. y es justo lo que quiero .. o pruebo y te cuento
  #5 (permalink)  
Antiguo 11/06/2013, 21:31
 
Fecha de Ingreso: enero-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: consulta con datos de una consulta previa

Cita:
Iniciado por KAKOROSAS Ver Mensaje
esto lo intente pero no mefunciono.. vamos a ver con tu codigo .. y es justo lo que quiero .. o pruebo y te cuento
lo deje asi y me funciono

Código PHP:
$cod $_POST['cod'];
            
mysql_query("set names utf8");
                    
$consulta mysql_query("SELECT * FROM iccmpc WHERE clave = '$cod'");
            
$rows=mysql_fetch_array($consulta);
            
$consulta2 mysql_query("SELECT * FROM iccmpc WHERE id = ".$rows['pos']."");
            
$rows2=mysql_fetch_array($consulta2);
            if(
$rows['id']==$rows['pos'])
            {
 
header("location:iccmpc.php?cod=$cod&nombre=".$rows['nombre']."&rut=".$rows['rut']."&pos=".($rows['pos']+1)."&nom=".$rows2['nombre']."");}
else{
      
header("location:iccmpc.php?cod=$cod&nombre=".$rows['nombre']."&rut=".$rows['rut']."&pos=".$rows['pos']."&nom=".$rows2['nombre']."");
    }
            }} 
sin tu ayuda aun estaria dando vueltas gracias
  #6 (permalink)  
Antiguo 12/06/2013, 02:19
 
Fecha de Ingreso: julio-2005
Mensajes: 304
Antigüedad: 19 años, 4 meses
Puntos: 4
Respuesta: consulta con datos de una consulta previa

Pides unos datos y después en tu código hay mucho más que pueden confundir y no verse claro lo que buscas, por que según entiendo lo que necesitas es lo siguiente:

Código MySQL:
Ver original
  1. $consulta = mysql_query("SELECT * FROM iccmpc WHERE clave = '$cod' AND id = pos");

Pero viendo el PHP que expones se me hace dificil entender que buscas realmente.
__________________
http://www.lynxstyle.net

En la vida como en el ajedrez, hay un reloj que marca el tiempo de cada movimiento, si lo consumes pierde (MJJG)
  #7 (permalink)  
Antiguo 12/06/2013, 08:32
 
Fecha de Ingreso: enero-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: consulta con datos de una consulta previa

XD se me complica explicar especificamente lo que necesito hacer....
haber lgo mas practico.....

lo que estoy tratando de hacer es lo siguiente

imaginate que hay 100 personas y cada una deve responder de las 99 restantes

una matriz de 100 x 100

en las columnas de la bd esta:
ID(va desde el 1 a 100)
POS(todos comienzan en 1)
el ID cumple la funcion de identificador de la persona y POS es la posicion en la cual esta la ultima respuesta es decir si el amigo responde hasta el 30 y vuelve a entrar a contestar, comience desde el 30

pero ademas necesito utilizar POS para comparar con ID y si son iguales hacer POS+1, esto devido a que si son iguales estaria respondiendo sobre el mismo en la matriz

para ingresar al log utilizo un log simple con una clave

es por eso que cuando ingreso esa clave necesito buscar la fila de la persona y obtener su POS y cuando tengo su POS compararlo con su ID y si son Iguales Coloco en el header POS+1(de esta manera evito responder sobre uno mismo) o si no envio el POS actual ,

con el php siguiente puedo cargar los datos de la persona que se esta respondiendo (aki de igual manera deveria realizar el mismo procedimiento para aumentar POS )
  #8 (permalink)  
Antiguo 12/06/2013, 08:40
 
Fecha de Ingreso: enero-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: consulta con datos de una consulta previa

Amigos me di cuenta de algo ......

si bien este codigo cumple su funcion ya que es solo entregar datos al siguiente php y verificar que POS no sea igual que ID y si lo es aumentar POS+1

necesito que en el caso de tener que aumentar POS+1 busque el ID = POS+1 y entrege el nombre correspondiente de ese ID

aahhhhh trato de explicarlo lo mas claro posible .. pero es muy dificil




Código PHP:
$cod $_POST['cod'];
            
mysql_query("set names utf8");
                    
$consulta mysql_query("SELECT * FROM iccmpc WHERE clave = '$cod'");
            
$rows=mysql_fetch_array($consulta);
            
$consulta2 mysql_query("SELECT * FROM iccmpc WHERE id = ".$rows['pos']."");
            
$rows2=mysql_fetch_array($consulta2);
            if(
$rows['id']==$rows['pos'])
            {
 
header("location:iccmpc.php?cod=$cod&nombre=".$rows['nombre']."&rut=".$rows['rut']."&pos=".($rows['pos']+1)."&nom=".$rows2['nombre']."");}
else{
      
header("location:iccmpc.php?cod=$cod&nombre=".$rows['nombre']."&rut=".$rows['rut']."&pos=".$rows['pos']."&nom=".$rows2['nombre']."");
    }
            }} 
  #9 (permalink)  
Antiguo 12/06/2013, 11:11
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años, 7 meses
Puntos: 17
Respuesta: consulta con datos de una consulta previa

Y ahí estás teniendo problema??

Pones $rows['pos']+1 y ya está no?

Saludos.
  #10 (permalink)  
Antiguo 12/06/2013, 14:30
 
Fecha de Ingreso: enero-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: consulta con datos de una consulta previa

Cita:
Iniciado por Lobito14 Ver Mensaje
Y ahí estás teniendo problema??

Pones $rows['pos']+1 y ya está no?

Saludos.
asi me resulto .. XD

Código PHP:
$cod $_POST['cod'];
            
mysql_query("set names utf8");
                    
$consulta mysql_query("SELECT * FROM iccmpc WHERE clave = '$cod'");
            
$rows=mysql_fetch_array($consulta);
            
$consulta1 mysql_query("SELECT * FROM iccmpc WHERE id = ".($rows['pos']+1)."");
            
$rows1=mysql_fetch_array($consulta1);
            
$consulta2 mysql_query("SELECT * FROM iccmpc WHERE id = ".$rows['pos']."");
            
$rows2=mysql_fetch_array($consulta2);
            if(
$rows['id']==$rows['pos'])
            {
 
header("location:iccmpc.php?cod=$cod&nombre=".$rows['nombre']."&rut=".$rows['rut']."&pos=".($rows['pos']+1)."&nom=".$rows1['nombre']."");}
else{
      
header("location:iccmpc.php?cod=$cod&nombre=".$rows['nombre']."&rut=".$rows['rut']."&pos=".$rows['pos']."&nom=".$rows2['nombre'].""); 
se que hay mucha basura.. pero ahora me dedicare a optimizar... pero necesito otra ayudita en el php que sigue
  #11 (permalink)  
Antiguo 13/06/2013, 09:07
 
Fecha de Ingreso: enero-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: consulta con datos de una consulta previa

los continuo molestando ... el anterior php pasaba a otro donde cargaba los datos de una persona en base a la variable POS (pos es la posicion de la ultima persona que se repondio y se compara con el ID)

es decir con la variable pos cargaba una foto su nombre y todo lo que necesitaba ya que pos indicaba el id de la persona


les recuerdo que las columnas de la tabla son asi
id nombre rut pos clave 1 2 3 4.... n

entonses la cosa es masmenos asi...

en el php tengo un grupo de botones llamado rpa1 donde devo seleccionar 1 y enviar...

al enviar el codigo php deve hacer lo siguiente

en la fila donde rut = rut

hacer un update en la columna que se llame igual de POS con rpa1
ejemplo = si POS esta en 5 , en la columna 5 colocar el valor de rpa1

ademas en la columna POS = POS+1
Ejemplo = si pos esta en 5 aumentarlo en 1 es decir que el update lo deje en 6

posterior a esto
devo repetir el procedimiento del php anterior donde si POST = ID pasar al siguiente POST "esto ya lo tengo"

lo trate de ahcer con un codigo que pille por ahi pero no me funciono .. necesito ayuda porfis .. muchas gracias

Código PHP:
function verificar($rut,$id,&$result)
    {
        
$sql "SELECT * FROM iccmpc WHERE rut = '$rut'";
        
$rec mysql_query($sql);
        
$count 0;
        while(
$row mysql_fetch_object($rec))
        {
            
$count++;
            
$result $row;
        }
        if(
$count == 1)
        {
            return 
1;
        }
        else
        {
            return 
0;
        }
    }
    
        if(isset(
$_POST['rut']))
            {if(
verificar_testl($_POST['rut'],$result) == 0)
            {
             
header("location:error.php");
            }
            else
            {
if(!isset(
$_POST['enviarx'] ))
{
    
$rut $_POST['rut'];
    
$id $_POST['id'];
    
$rpa1 $_POST['rpa1'];
    
$sql1 "UPDATE iccmpc SET "valor de POS"='$rpa1', pos="valor de POS"+1 WHERE rut='$rut'";
                
mysql_query($sql1);
              
                
mysql_query("set names utf8");
    
$rec mysql_query("SELECT * FROM iccmpc WHERE id = '$id'");
            
$rec1=mysql_fetch_array($rec);
            
     
header("location:prueba".$rec1['pos'].".php");}}} 

Etiquetas: mysql, previa, select, sql, tabla
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 11:15.