Foros del Web » Programando para Internet » PHP »

Almacenar registros (sql) en variables con while o for

Estas en el tema de Almacenar registros (sql) en variables con while o for en el foro de PHP en Foros del Web. Bueno, esta es mi primer consulta porque ya no se que hacer, busqué por todos lados y no le encuentro la vuelta. Si bien tiene ...
  #1 (permalink)  
Antiguo 15/10/2009, 12:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 32
Antigüedad: 14 años, 6 meses
Puntos: 2
Almacenar registros (sql) en variables con while o for

Bueno, esta es mi primer consulta porque ya no se que hacer, busqué por todos lados y no le encuentro la vuelta. Si bien tiene relación con sql el problema que tengo es PHP meparece. Paso a explicar:

INTRODUCCIÓN: Tengo una base de datos sql para turnos con 5 tablas, una por cada profesional (carlitos, juan etc). Cada tabla tiene los campos id, zona, disponibilidad, dia, hora..etc. Cada tabla tiene 510 registros porque se divide cada 10 minutos de lunes a sábado. Lo que hice es una grilla por profesional en donde están todos los días y todos los horarios. Cada "celda" de esa grilla tiene una lista HTML en donde se elige entre "disponible" "no disponible" etc. Es decir lunes de 8:00 a 8:10 disponible y asi todos los dias y horarios. Todas las listas están dentro de un formulario que se envía completo a actualizar la base de datos.

PROBLEMA: lo que quería hacer era que en cada lista html (que son 510), el valor SELECTED sea el que está en ese momento en la base de datos. Eso lo hice así:

Código PHP:
<?php 
          $consulta 
"SELECT disponibilidad, id FROM juancito WHERE ID='1' ";
          
$resultado mysql_query($consulta);
          
$id1 mysql_fetch_assoc($resultado);
          
?>
          <select name="1" id="lista" >
          <option   <?php if ($id1["disponibilidad"]=="NO DISPONIBLE") {echo "SELECTED";}; ?>>NO DISPONIBLE</option>
          <option  id="dispo"  <?php if ($id1["disponibilidad"]=="DISPONIBLE") {echo "SELECTED";}; ?>>DISPONIBLE</option>
          <option    <?php if ($id1["disponibilidad"]=="TEMPORALMENTE DISPONIBLE") {echo "SELECTED";}; ?>>TEMPORALMENTE DISPONIBLE</option>
          <option    <?php if ($id1["disponibilidad"]=="TEMPORALMENTE NO DISPONIBLE") {echo "SELECTED";}; ?>>TEMPORALMENTE NO DISPONIBLE</option>
        </select>
esto funciona, pero tengo que repetirlo 510 veces. Lo que quería hacer es un bucle que de una sola consulta del tipo:

Código PHP:
<?php 
$consulta 
"SELECT disponibilidad FROM juancito ORDER BY `id` ASC ";
          
$resultado mysql_query($consulta); ?>
me guardara en $id1 el valor de 'disponibilidad' de la primer fila, en $id2 el de la segunda y asi... además, quería que cada $id de las listas html sea de la forma $id$i donde cada $i se incremente con $i++. De manera que las listas html me queden todas iguales, y cada vez que usa el $i el próximo suma una unidad. Y automáticamente trae el valor que tiene la variable correspondiente almacenada en el bucle.

en concreto: yo tengo
Código PHP:
<select name="$id$i" id="lista" >
          <option   <?php if ($id$i["disponibilidad"]=="NO DISPONIBLE") {echo "SELECTED";}; ?>>NO DISPONIBLE</option>
          <option  id="dispo"  <?php if ($id$i["disponibilidad"]=="DISPONIBLE") {echo "SELECTED";}; ?>>DISPONIBLE</option>
          <option    <?php if ($id$i["disponibilidad"]=="TEMPORALMENTE DISPONIBLE") {echo "SELECTED";}; ?>>TEMPORALMENTE DISPONIBLE</option>
          <option    <?php if ($id$i"disponibilidad"]=="TEMPORALMENTE NO DISPONIBLE") {echo "SELECTED";}; ?>>TEMPORALMENTE NO DISPONIBLE</option>
        </select>
y quiero hacer una consulta de manera que me guarde los valores de cada registro en $id1, $id2...$idn.

necesito algo así:

Código PHP:
<?php 
$consulta 
"SELECT disponibilidad FROM juancito ORDER BY `id` ASC ";
          
$resultado mysql_query($consulta);
          while (
$row mysql_fetch_assoc($resultado)){
echo 
$row['disponibilidad'];}


?>

que en lugar de echo me almacene los valores, osea cada $row['disponibilidad'] de cada registro se almacene en $id1 para la fila 1 $id2 par la fila 2 y así. ¿es posible esto o me metí en un quilombo?
Probé hacer algo como $i = 1++; $i =$row['disponibilidad']; y cosas por el estilo dentro del bucle pero no va. Probé hacer variables variables pero no se actualizan, Si alguien me puede ayudar estaría muy agradecido. Saludos.
  #2 (permalink)  
Antiguo 15/10/2009, 12:48
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Almacenar registros (sql) en variables con while o for

¿No debería ser algo así?
Código PHP:
<?php
$opciones 
= array("NO DISPONIBLE","DISPONIBLE","TEMPORALMENTE DISPONIBLE","TEMPORALMENTE NO DISPONIBLE");

$consulta mysql_query("SELECT disponibilidad, id FROM juancito ORDER BY id");
while(
$r mysql_fetch_array($consulta))
{
    echo 
'<select name="'.$r['id'].'" id="lista" >';    
    foreach(
$opciones as $i=>$v)
    {
        if(
$v == $r['disponibilidad'])
        {
            
/* La opción debe estar selecionada */            
            
echo '<option value="'.$r['disponibilidad'].'" selected>'.$r['disponibilidad'].'</option>';
        }
        else
        {
            
/* Opión sin seleccionar */
            
echo '<option value="'.$r['disponibilidad'].'">'.$r['disponibilidad'].'</option>';
        }
    }
    echo 
'</select>';
}
?>
Solo es una idea.
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #3 (permalink)  
Antiguo 15/10/2009, 13:51
 
Fecha de Ingreso: octubre-2009
Mensajes: 32
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Almacenar registros (sql) en variables con while o for

gracias hieloverde. Es todo un cambio de paradigma. Funciona bien, a excepción de que las opciones son todas la misma. La que trae de la base de datos. Es decir, son cuatro opciones iguales. Yo no sé si es mas kilombo arreglar eso que hacer otra cosa. Pensaba en otra variante, que no sé como hacerla. Hacer tambièn un bucle pero de toda la consulta:
Código PHP:
<?php 
$consulta 
"SELECT disponibilidad FROM romina_recchia WHERE id=$i ";
          
$resultado mysql_query($consulta);
          
$row mysql_fetch_assoc($resultado);
          
$id$i $row["disponibilidad"];


?>
poner todo eso en un for donde $i vaya cambiando a 2, 3, etc. pero no funciona así. No sé que falla.
  #4 (permalink)  
Antiguo 15/10/2009, 16:22
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Almacenar registros (sql) en variables con while o for

Cita:
Iniciado por ca23sere Ver Mensaje
gracias hieloverde. Es todo un cambio de paradigma. Funciona bien, a excepción de que las opciones son todas la misma. La que trae de la base de datos. Es decir, son cuatro opciones iguales. Yo no sé si es mas kilombo arreglar eso que hacer otra cosa. Pensaba en otra variante, que no sé como hacerla. Hacer tambièn un bucle pero de toda la consulta:
Que tal ca23sere,

Claro que salen todas iguales, había que hacer un pequeño cambio:

Código PHP:
<?php
$opciones 
= array("NO DISPONIBLE","DISPONIBLE","TEMPORALMENTE DISPONIBLE","TEMPORALMENTE NO DISPONIBLE");

$consulta mysql_query("SELECT disponibilidad, id FROM juancito ORDER BY id");
while(
$r mysql_fetch_array($consulta))
{
    echo 
'<select name="'.$r['id'].'" id="lista" >';    
    foreach(
$opciones as $i=>$v)
    {
        if(
$v == $r['disponibilidad'])
        {
            
/* La opción debe estar selecionada */            
            
echo '<option value="'.$r['disponibilidad'].'" selected>'.$r['disponibilidad'].'</option>';
        }
        else
        {
            
/* Opión sin seleccionar */
            
echo '<option value="'.$v.'">'.$v.'</option>';
        }
    }
    echo 
'</select>';
}
?>
Esta línea: echo '<option value="'.$v.'">'.$v.'</option>';
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #5 (permalink)  
Antiguo 15/10/2009, 16:34
 
Fecha de Ingreso: octubre-2009
Mensajes: 32
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Almacenar registros (sql) en variables con while o for

Gracias hieloverde!!: Ahí funciona perfecto.

Al mismo tiempo llegue a otra solución que es esta:

<?php
$id = array();
for($i=1; $i<=508; ++$i) {
$consulta = "SELECT disponibilidad FROM romina_recchia WHERE id=$i";
$resultado = mysql_query($consulta);
$ip = mysql_fetch_assoc($resultado);
$id[$i] = $ip;
}
$l = 1;
echo $id[$l++]['disponibilidad'];
echo $id[$l]['disponibilidad'];


?>

sin los echo. en lugar de de hacer una variable por cada dato. hice un array que lo lleno con los datos.

De cualquier manera, muchísimas gracias. Ahora hay dos soluciones. 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 01:37.