Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Por que marca este error ??

Estas en el tema de Por que marca este error ?? en el foro de Bases de Datos General en Foros del Web. hola foro alguien sabe por que marca este error, Código PHP: <? $cont = 0 ; while ( $row = mysql_fetch_row ( $resx )){  ?> <tr><td> ...
  #1 (permalink)  
Antiguo 17/08/2004, 10:50
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta Por que marca este error ??

hola foro alguien sabe por que marca este error,

Código PHP:

<?
$cont
=0;
while (
$row=mysql_fetch_row($resx)){ 
?>
<tr><td><? $row[0]; echo $row[1];?>
<?
$hora_lunes
=mysql_result($res_lunes,$cont++,0);

mysql_result($res_martes,$cont++,0); //este es de otra consulta
}

Warningmysql_result(): Unable to jump to row 1 on MySQL result index 13 in c:archivos de programaeasyphp1-7wwwabacusabacus_administraadministradordirectoreshorarioasignar_horareporte_programa_hora.php on line 117
  #2 (permalink)  
Antiguo 17/08/2004, 12:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
El error textualmente te dice que no hay más resultados o el registro que pretendes ir con mysql_result()

No sé realmente para que usas mysql_result() bajo un bucle .. pero creo que en lugar de liarte con "mysql_result()" ..lo que creo que te hace falta es tal vez una sentencia SQL más compleja de las que estás usando para obtener los datos de esas N tablas que parece que intervienen en tu proceso.

Un saludo,
  #3 (permalink)  
Antiguo 18/08/2004, 08:34
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 8 meses
Puntos: 0
Cita:
Iniciado por Cluster
..lo que creo que te hace falta es tal vez una sentencia SQL más compleja de las que estás usando para obtener los datos de esas N tablas que parece que intervienen en tu proceso.
si cluster lo que quiero hacer es acomodar un calendario que en cada dia tiene sus horas en la tabla guardo el dia y sus horas pero al momento de querer acomodarlas es lo que no encuentro una sentecia mysql que me pueda ayudar ya que si ejecuto whiles anidados no me acomoda coorectamente las filas.(<tr><td>)

he intentado mysql_result, pero cuando no tiene datos me arroja ese error,


quiero que me acomode algo asi, en caso de que por ejemplo el martes la hora empieze a las 11:00 el puntero se coloque apartir de alli, claro las horas son generadas dinamicamente por el usuario(Que el da anterirmente de alta para cada dia de la semana).


________________________
lunes: martes: miercoles:
________________________
9:00 &nbsp 9:00
10:00 &nbsp 10:00
11:00 11:00 &nbsp
12:00 12:00 &nbsp
13:00 13:00 13:00



ejemplo de acomodo.

cual sentencia me serviria para hacer un tipo acomodo asi

por sus respuestas gracias

Última edición por The_omars; 18/08/2004 a las 08:36
  #4 (permalink)  
Antiguo 18/08/2004, 08:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En tal caso .. tendrías que usar:

Código PHP:
if (mysql_num_rows($res_xxx) >0){
msyql_result(....);

Es decir .. preguntar antes de ejecutar tu "result" o mysql_fetch_xxx() si hay resultados . sino, no ejecutas el mysql_result() o los "fetch".

Un saludo,
  #5 (permalink)  
Antiguo 18/08/2004, 09:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pero .. pensandolo bien .. lo que estás haciendo no creo que sea la mejor forma.

Deberías poder agrupar tus registros bajo esas fechas (GROUP BY ...) pero que se obtenga el dia de la semana de la fecha dada para hacer la agrupación y así obtener los días y horarios de ese día de la semana (y semana).

No sé como gestionas tu BD y esas fechas .. si lo indicas seguro que alguna solución mejor se podrá ver (y sobre todo partiendo por el foro de "Base de datos" para la sentencia SQL adecuada) y luego al foro PHP para ver como representarla en "columnas" para insertar el <tr> .. <td> de tus tablas en el punto que corresponda.

Un saludo,
  #6 (permalink)  
Antiguo 18/08/2004, 11:16
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 8 meses
Puntos: 0
OK...

guardo en la tabla de horas:

id_horario //llave de la tabla
id_hora // identificador de la hora
dia, // dia


asi tengo diseñada la base de datos......

omiti otros campos que no tienen mucho que ver puse los que si

id_horario
id_hora
dia
id_grupos
id_escuela



al dia lo identifico por numeros por ejemplo
lunes=1
martes=2
miercoles=3....... etc.

esta es la consulta que realizo

Código PHP:

$consx
="select hg.id_horario,h.hora,hg.id_grado_grupo,hg.dia from horario h,horario_grupo hg where hg.id_horario=h.id_horario and hg.id_grado_grupo='$id_grado_grupo' and h.id_escuela='$escuela'  order by h.hora";
$resx=mysql_query($consx,$conex) or die ("No se pudo realizar la consulta"); 

Última edición por The_omars; 18/08/2004 a las 11:21
  #7 (permalink)  
Antiguo 18/08/2004, 16:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ok, pues ahora las mejores respuestas que las podrán dar en el foro de "Base de datos".

Un saludo,
  #8 (permalink)  
Antiguo 19/08/2004, 02:27
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 21 años, 3 meses
Puntos: 2
Buenas, creo que la sentencia que usas es totalmente correcta para obtener lo que quieres, sólo he quitado lo que no necesitas pues ya lo tienes cuando construyes la sentencia (no mostrar datos necesarios mejora el rendimiento)
Código:
select h.hora, hg.dia
from horario h,horario_grupo hg 
where hg.id_horario=h.id_horario and 
      hg.id_grado_grupo='$id_grado_grupo' and 
      h.id_escuela='$escuela'  
order by h.hora, hg.dia
Este sentencia te mostrará los datos así (por ejemplo)
9:00 1
9:00 3
10:00 1
10:00 3
11:00 1
11:00 2
12:00 1
12:00 2
13:00 1
13:00 2
13:00 3

Ahora ya es cuestión de programación el mostrarlos en una tabla como la que quieres hacer:
________________________
lunes: martes: miercoles:
________________________
9:00 9:00
10:00 10:00
11:00 11:00
12:00 12:00
13:00 13:00 13:00

Para ello sólo necesitas un resultado, que es el que te da la sentencia sql anterior, pero por algoritmo tendrás que hacer los huecos.
Me explico, las horas te dan las filas y los días de la semana las columnas. Si para una hora tienes un salto del día 1 al dia 3, lo unico que tienes que hacer es insertar un <td>&nbsp;</td> por cada día de la semana que te falte.

Un ejemplo rápido y sin probarlo sería este: (aunque esto sería para el foro de php)
Código PHP:
$hora=0;  // última hora tratada, como no empezamos lo ponemos a 0
$dia=1;     // último dia tratado, como no empezamos lo ponemos a lunes (1)
$resultado=mysql_query("select h.hora hora, hg.dia dia from horario h,horario_grupo hg where hg.id_horario=h.id_horario and hg.id_grado_grupo='$id_grado_grupo' and h.id_escuela='$escuela' order by h.hora, hg.dia");
while (
$fila=mysql_fetch_array($resultado)
{
    if (
$hora != $fila['hora'])  // Cambia la hora
    
{
        
// antes de hacer el cambio de fila, se pueden hacer las celdas de cierre de fila en el caso de que 
        // la fila anterior no acabara en el último día de la semana. Lo dejo sin hacer.
        
           
if ($hora != 0) echo "</tr>" // para las horas siguientes a la primera se cierra la fila
           
echo "<tr>"// Cambio de hora implica cambio de fila

           
$hora $fila["hora"]; // Última hora tratada pasa a ser la actual
           
$dia 1// el último día tratado hay que reiniciarlo
    
}

    while (
$dia $row['dia])
    {
       echo "<td></td>";  // mostramos un dia vacío
       $dia++;            // pasamos al siguiente día
    }
    echo "<td>$fila['
hora]</td>"; // muestra la hora en un dia

Un saludo.
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 23:17.