Foros del Web » Programando para Internet » PHP »

lio con los bucles

Estas en el tema de lio con los bucles en el foro de PHP en Foros del Web. Hola chicos. Tengo aqui un puzle con while y no puedo resolver. Código PHP: //seleccionamos todas las categorias de usuarios que tenemos $todas_categorias = mysql_query ( "Select * from tipo_user " );         // seleccionamos todos usarios $Users = mysql_query ...
  #1 (permalink)  
Antiguo 16/04/2007, 05:11
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
lio con los bucles

Hola chicos.
Tengo aqui un puzle con while y no puedo resolver.

Código PHP:
//seleccionamos todas las categorias de usuarios que tenemos
$todas_categorias=mysql_query("Select * from tipo_user ");        


// seleccionamos todos usarios
$Users=mysql_query("Select * from registro_usuarios ");


while(
$ArUser=mysql_fetch_array($Users)){
$categoria=$ArUser['tipo_user'];
//mostramos nombre y apellidos de usuario
echo ("<tr><Td>".$ArUser['nombre']."&nbsp;".$ArUser['apellidos']."</td><td><select name='category'>");
       
       
//mostramos categorias de usuarios existentes
       
while($categorias=mysql_fetch_array($todas_categorias)) { 
       echo(
"<option value='".$categorias['id_user']."' "); 
       if(
$categorias['id_user']==$categoria){echo "selected";}
       echo(
">".$categorias['tipo_user']."</option>");
       }
       
echo(
"</select><input type='hidden' name='id_user' value='".$ArUser['id_user']."' ></td></tr>");

Tengo una lista de usuarios en una tabla y lista de categorias de usuarios en otra tabla

me salen los nombres de usuarios de forma correcta pero en la lista select donde tienen que aparecer categorias para seleccionar solo sale lista de options para priemer usuario y para el resto de usuarios el select sale vacio.
No encuento donde esta el error.

Gracias a todos chicos.
  #2 (permalink)  
Antiguo 16/04/2007, 08:04
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: lio con los bucles

Hola Viktoria, prueba colocando la consulta sql de las categorias dentro del while.

Código PHP:
// seleccionamos todos usarios 
$Users=mysql_query("Select * from registro_usuarios "); 


while(
$ArUser=mysql_fetch_array($Users)){ 
$categoria=$ArUser['tipo_user']; 
//mostramos nombre y apellidos de usuario 
echo ("<tr><Td>".$ArUser['nombre']."&nbsp;".$ArUser['apellidos']."</td><td><select name='category'>"); 
      
//seleccionamos todas las categorias de usuarios que tenemos 
     
$todas_categorias=mysql_query("Select * from tipo_user ");       
       
//mostramos categorias de usuarios existentes 
       
while($categorias=mysql_fetch_array($todas_categorias)) {  
       echo(
"<option value='".$categorias['id_user']."' ");  
       if(
$categorias['id_user']==$categoria){echo "selected";} 
       echo(
">".$categorias['tipo_user']."</option>"); 
       } 
        
echo(
"</select><input type='hidden' name='id_user' value='".$ArUser['id_user']."' ></td></tr>"); 

Saludos.
__________________

  #3 (permalink)  
Antiguo 16/04/2007, 09:09
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: lio con los bucles

como complemento de lo que dice gerson, tratare de explicar el código (este es el que tiene el error)
Código PHP:
#consultas, Aqui no nada que explicar
//seleccionamos todas las categorias de usuarios que tenemos
$todas_categorias=mysql_query("Select * from tipo_user ");        
// seleccionamos todos usarios
$Users=mysql_query("Select * from registro_usuarios ");

##Este while le dice a php algo similar a esto
##mientras se forma el arreglo ejecuta lo que este en llaves {}
while($ArUser=mysql_fetch_array($Users)){
##comienza, y esto se hará cada vez que se inserte un registro al arreglo
$categoria=$ArUser['tipo_user'];
//mostramos nombre y apellidos de usuario
echo ("<tr><Td>".$ArUser['nombre']."&nbsp;".$ArUser['apellidos']."</td><td><select name='category'>");
##algo similar ocurre con este while, al igual que el primero se ejecutará
##mientras se forma el arreglo y esto sucedera solamente cuando pase
##por el primer registro, ya que cuando el primer while cambie de registro
##y llegue al segundo simplemente no lo hara porque el arreglo
##ya esta formado en la primera vuelta y por eso te salen los demas vacios
##con la solucion que te da gerson debe de funcionar.
       //mostramos categorias de usuarios existentes
       
while($categorias=mysql_fetch_array($todas_categorias)) { 
       echo(
"<option value='".$categorias['id_user']."' "); 
       if(
$categorias['id_user']==$categoria){echo "selected";}
       echo(
">".$categorias['tipo_user']."</option>");
       }
       
echo(
"</select><input type='hidden' name='id_user' value='".$ArUser['id_user']."' ></td></tr>");

solo quería que sepas el porque del error y de el porque solo cambiando una linea de lugar debe de funcionar.
suerte y saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #4 (permalink)  
Antiguo 16/04/2007, 11:16
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: lio con los bucles

Muchissimas gracias chicos, ya me estaba liando probando con todos los bucles existentes en php.
No pase consulta SQL dentro del bucle pensando que como tiene que devolver los mismos valores no hacia falta.
En fin, aprendiendo avanzamos
gracias de nuevo
  #5 (permalink)  
Antiguo 16/04/2007, 14:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: lio con los bucles

Analizando el ejemplo y haciendo pruebas me surge una pregunta
SI quiero pasar valores del primer bucle al segundo bucle
asi

Código PHP:
// seleccionamos todos usarios
$Users=mysql_query("Select * from registro_usuarios ");


for (
$i=1$ArUser=mysql_fetch_array($Users); $i++){
$categoria=$ArUser['tipo_user'];
echo (
"<tr><Td bgcolor='white' style='padding-left:1em'>".$ArUser['nombre']."&nbsp;".$ArUser['apellidos']."</td><td  style='padding-right:1em'><select name='bla' class='formas1' onchange='red()' >");
     
       
$todas_categorias=mysql_query("Select * from tipo_user ");
        while(
$categorias=mysql_fetch_array($todas_categorias)) { 
       
  
//------------------------
//aqui intento pasar valor $ArUser['id_user'] del primer bucle 

      
echo("<option value='".$ArUser['id_user']."/".$categorias['id_user']."' "); 

//----------------------------------
       
if($categorias['id_user']==$categoria){echo "selected";}
       echo(
">".$categorias['tipo_user']."</option>");
       }
    
echo(
"</select></td></form></tr>");
$i++;

no me pasa el valor del $ArUser['id_user'] del primer bucle al segundo, pero yo tengo que pasar esa variable como parte de value del option.
No es que no me pasa sino que siempre me pasa el mismo valor que es primer que genera el bucle for
Y lo extrano es que pasa el valor $categoria=$ArUser['tipo_user']; al segundo bucle de forma correcta y la variable $categoria=$ArUser['id_user'] no.

Gracias chicos por auyda.
Si alguien me puede echar una mano.

Última edición por viktoria; 16/04/2007 a las 14:13
  #6 (permalink)  
Antiguo 16/04/2007, 14:18
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: lio con los bucles

Intento checkear los valores de <option> con la funcion de JavaSCript
<script language="javascript">
<!--
function red(){

var variable3 = document.cambiar_categoria.bla.options[document.cambiar_categoria.bla.selectedIndex].value;
alert(variable3);
}


-->
</script>

Pero me da siempre el mismo valor del primer valor que pasa el bucle for
  #7 (permalink)  
Antiguo 16/04/2007, 14:44
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: lio con los bucles

viktoria, bueno aqui modifique un poco tu codigo para poder usar el javascript ademas para que puedas usar el id_user
Código PHP:
// seleccionamos todos usarios
$Users=mysql_query("Select * from registro_usuarios ");
$i=0
while ($ArUser=mysql_fetch_array($Users)){
    
$categoria=$ArUser['tipo_user'];
    
$id_user $ArUser['id_user'];
    echo (
"<tr><Td bgcolor='white' style='padding-left:1em'>".$ArUser['nombre']."&nbsp;".$ArUser['apellidos']."</td><td  style='padding-right:1em'><select name='bla[]' id='bla[$i]' class='formas1' onchange='red($i)' >");     
    
$todas_categorias=mysql_query("Select * from tipo_user ");
    while(
$categorias=mysql_fetch_array($todas_categorias)) { 
        
//------------------------
        //aqui intento pasar valor $ArUser['id_user'] del primer bucle 
        
echo("<option value='".$id_user."/".$categorias['id_user']."' "); 
        
//----------------------------------
        
if($categorias['id_user']==$categoria){echo "selected";}
               echo(
">".$categorias['tipo_user']."</option>");
           }
    echo(
"</select></td></form></tr>");
    
$i++;

Ahora en tu funcion de javascript puse esto:
Código HTML:
function red(nro){

var variable3 = document.getElementById('bla['+ nro +']').value;
alert(variable3);
}
Bueno no lo probe, pero si hay falla hazmelo saber

Saludos
__________________

  #8 (permalink)  
Antiguo 17/04/2007, 04:07
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: lio con los bucles

Gracias gerson!
Funciona perfectamente esto.
No conocia de nada el consepto de uso getElementById en JAvaSCript
Uno siempre piensa que sabe mucho hasta que realmente vea que no sabe nada
Tomando notas ...
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 13:43.