Foros del Web » Programando para Internet » PHP »

consulta sql para mostrar datos en un list box

Estas en el tema de consulta sql para mostrar datos en un list box en el foro de PHP en Foros del Web. hola amigos del foro espero puedan ayudarme con la siguiente consulta: resulta que tengo 4 tablas: rtecnico ----------- id_rtecnico id_matriz descripcion rcliente ------------ id_rcliente id_matriz ...
  #1 (permalink)  
Antiguo 17/08/2006, 12:28
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta consulta sql para mostrar datos en un list box

hola amigos del foro espero puedan ayudarme con la siguiente consulta: resulta que tengo 4 tablas:

rtecnico
-----------
id_rtecnico
id_matriz
descripcion

rcliente
------------
id_rcliente
id_matriz
descripcion

matriz
------------
id_matriz
descripcion
id_proyecto

trecnico_rcliente
------------------
id
id_rtecnico
id_rcliente
id_matriz

Resulta que tengo una pagina donde utilizo dos listbox para mostrar
la descripción de los rcliente que no estan en la tabla
rtecnico_rcliente y otro para mostrar la descripcion de los rtecnico
que no estan en la tabla rtecnico_rcliente.

he hecho la siguiente consulta para hacer lo anterior:

Código PHP:
<select name="id_rtecnico" size="1" class="Estilo2" id="id_rtecnico">
<option value="0">- Seleccione HOW -</option>
                               <?
$link
=conectarse();
$consul=mysql_query("select DISTINCT t.id_rtecnico, t.descripcion from rtecnico t, rtecnico_rcliente rr where rr.id_rtecnico!=t.id_rtecnico and rr.id_matriz=$id_matriz",$link);
if(
mysql_num_rows($consul)!=0)
{
while(
$fil=mysql_fetch_array($consul))
{
if (
strlen($fil[1])>50) {
$aux substr($fil[1],0,50);
echo 
'<option value="'.$fil[0].'">'.$aux."...";'</option>';

else {
echo 
'<option value="'.$fil[0].'">'.$fil[1].'</option>';
}
}
}            
                   
?>
        </select>
lo que pasa es que muestra todos los datos que hay en la BD es decir no me esta filtrando nada lo cual provoca que me muestre datos que no son

agradezco sus aportes
  #2 (permalink)  
Antiguo 17/08/2006, 13:04
 
Fecha de Ingreso: octubre-2005
Mensajes: 85
Antigüedad: 12 años, 1 mes
Puntos: 0
Uhmm la verdad amigo creo que el problema esta en tu sentencia sql, haver lo que yo entendi es que tu quieres colocar en ese select a todos los tecnicos que no esten en tu tabla rtecnico_rcliente. Bueno si es asi te propongo esta solucion. Tu sentencia sql seria asi:

$sql = "select rr.id_rtecnico,t.id_rtecnico,t.descripcion from rtecnico t
left join rtecnico_rcliente rr
where rr.id_rtecnico is null";

con esta sentencia te devuelve todos los tecnicos que no estan en la otra tabla
  #3 (permalink)  
Antiguo 17/08/2006, 14:02
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 3 meses
Puntos: 0
gracias por tu aporte, si es así lo que quiero pero he probado en mysql y la consulta genera un error de sintaxis, así que no he podido solucionar el problema si puedes ayudarme te agradezco.

chao.

pd. soy una chica
  #4 (permalink)  
Antiguo 22/08/2006, 11:21
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 3 meses
Puntos: 0
hola foreros, he estado trabajando en la función y he llegado a la siguiente solución:

Código PHP:
<select name="id_rcliente" size="1" class="Estilo2" id="id_rcliente">
<option value="0">- Seleccione WHAT -</option>
    <?
        $link 
conectarse();
        
$consulta mysql_query("Select * From rcliente where id_matriz=$id_matriz Order By id_rcliente "$link);
        
        while ( 
$fila mysql_fetch_array ($consulta) )
            {
            
$id_a_buscar $fila ["id_rcliente"];
            
$busca_registro mysql_query ("Select * From rtecnico_rcliente Where id_rcliente = '$id_a_buscar'"$link);
            
$registro_encontrado mysql_num_rows ($busca_registro);
            
            if ( 
$registro_encontrado == 
                {
                if ( 
strlen ($fila["descripcion"]) > 50 
                    {
                    
$aux substr ($fila["descripcion"],0,50);
                    echo 
'<option value="'.$fila["id_rcliente"].'">'.$aux."...";'</option>';
                    } 
                    else 
                    {
                    echo 
'<option value="'.$fila["id_rcliente"].'">'.$fila["descripcion"].'</option>';
                    }
                }
            }
    
?>
</select>
resulta que este código muestra en el list la descripcion de los id_rcliente y id_rtecnico que no estan en la tabla rcliente_rtecnico, y esto funciona bien, pero necesito que luego de seleccionar en el primer select y el segundo select me deje hacer un registro de los que selecciono y bajar estos códigos a la tabla rtecnico_rcliente, y me lo hace pero solo para la primera vez es decir primer rcliente con primer rtecnico y registra, pero cuando voy a hacer el registro del primer rcliente con el segundo rtecnico ya no me muestra el primer rcliente pues este ya aparece en la tabla rtecnico_rcliente y esto es lo que se esta validando en la función, lo que requiero es que me los muestre y además me los deje ingresar, es decir me deje hacer las combinaciones pues cada what debe estar cruzado con cada how, la tabla rtecnico_rcliente quedaria de la siguiente manera:

id id_rcliente id_rtecnico id_matriz valor
---------------------------------------------------------
1 1 1 45 3
2 1 2 45 9
3 1 3 45 3
4 2 1 45 9
5 2 2 45 3
6 2 3 45 9
7 3 1 45 3
8 3 2 45 9
9 3 3 45 3

y asi sicecivamente por cada what y cada how que aparezca en las listas.
agradezco sus aportes

otra cosita es si alguno de ustedes no sabe de un programa para trabajr reportes en mysql y php

chao
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 06:13.