• Lunes 23 de Diciembre de 2024, 05:22

Autor Tema:  Extraer Datos Fila Exacta Del Resultado De Select  (Leído 1596 veces)

freeride

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Extraer Datos Fila Exacta Del Resultado De Select
« en: Viernes 1 de Septiembre de 2006, 19:00 »
0
Intentaré explicarme lo mejor que pueda, y antes de nada saludar a la gente por ser éste mi primer mensaje.

Necesito extraer el valor de dos campos del resultado de una sentencia SELECT.

Explico paso a paso:

Dentro de mi tabla tengo un campo donde clasifico los datos con un número. Dependiendo del número de este campo el registro pertenece a una clase de contenido diferente.

Cuando realizo el Select, me interesa escoger todos los resgistros que sean del mismo tipo, y además todos sus campos, por si acaso.

Código: Text
  1. $sql = "SELECT *
  2.         FROM bd.contenidos
  3.         WHERE conten_id_tipo = $tipo
  4.         ORDER BY id_contenidos DESC";
  5. $res = mysql_query($sql) or die(mysql_error());
  6.  

Como veis, he escogido ordenarlos según un identificador (id_contenidos) que, en esta selección de datos, NO es correlativo.

Bien, el problema que tengo es que, una vez seleccionador todos los que son del mismo tipo, sabiendo el valor de id_contenidos que me interesa (un contenido exactamente a petición del usuario), no se como obtener el valor que guardo de id_contenidos justo para el registro anterior y el posterior a el id_contenidos que tengo (los número guardados en id_contenidos no son correlativos, pero están ordenados).

Dicho de otra manera, dependiendo de qué tipo de contenido se trate, quiero que en mi página web aparezcan dos enlaces, uno para el contenido anterior y otro para el posterior. Pero no me sirve algo como $id_contenidos = $id_contenidos++ por que sería de otro tipo, y no del mismo tipo que el contenido que estoy viendo...

Espero haberme explicado, y estoy seguro que es muy sencillo, pero es que estoy bloqueado....

Muchas gracias.

Informix

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Extraer Datos Fila Exacta Del Resultado De Select
« Respuesta #1 en: Viernes 1 de Septiembre de 2006, 20:50 »
0
Hola lo que veo es que quieres hacer una paginacion cierto ???

puedes usar el paginator
Informix

"Ganar no es algo momentáneo, es algo permanente. Uno no gana de vez en cuando, uno no hace las cosas bien a veces, uno hace las cosas bien siempre" .

Vince Lombardi


freeride

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Extraer Datos Fila Exacta Del Resultado De Select
« Respuesta #2 en: Sábado 2 de Septiembre de 2006, 16:37 »
0
Gracias Informix por contestar.

Bien, si y no....me explico. No deja de ser una paginación puesto que al final lo que quiero don dos enlaces que me lleven cada uno al contenido anterior y al contenido siguiente...por tanto es como una paginación, pero el listado de contenidos a paginar sería de uno y lo que mostraría sería todo el contenido y no una porción, cosa útil cuando deseas mostar varios contenidos en una página, digamos...10.... ;-)

Así pues paginator supongo que sería útil, pero es demasiado código para lo que quiero hacer, y como estoy empezando se me hace difícil seguir todo el código para encontrar la aguja en el pajar.... o sea, la manera de hacerlo.

Intentaré simplificar el problema.

Una vez hecha la selección de todos los datos necesito saber en qué fila se encuentra el contenido que quiero mostrar, identificado por el valor que hay en el campo id_contenidos. No se si hay alguna función que te de este resultado...yo no la he encontrado. existe mysql_data:seek, pero el segundo parámetro que pide es la fila y extrictament no busca un dato, sino que coloca el puntero en la fila....y eso es excatamente lo que necesito saber...

En toería, metiendo todo el resultado de mi SELECT en un array puedo posicionar el puntero del array en el dato que quiero, despues bastaría con "un pasito pa'lante María, un pasito pa'trás", o sea, mover el puntero una fila hacía atrás y dos hacía adelantepara saber cuales son los regustros anterior y posterior al que tengo que mostrar....pero tengo problemas al mater el resultado de la consulta en un array...no lo consigo hacer, y eso que en teoría está chupado...

Código: Text
  1.  
  2. while ($row = mysql_fetch_array($res)) {
  3.   $matriz_tipo[] = $row;
  4. }
  5.  
  6.  

Con esto en teoría estaría resulto....debería haber introducido cada fila del resultado en la matriz.....pero a la hora de la verdad...no obtengo el que quiero....el resultado usando print_r:

  • =>0; [1]=>1.......y esto no es .... debería ser algo así como
  • => 502; [1] => 457 ......

freeride

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Extraer Datos Fila Exacta Del Resultado De Select
« Respuesta #3 en: Sábado 2 de Septiembre de 2006, 22:14 »
0
Solución al enigma....ya lo encontré. Por si a alguien le soluciona la vida os pego el código.

Código: Text
  1. function navega_paginas($id_conten){
  2.  
  3. //Extrae tipo de contenido
  4.   $sql_tipo = "SELECT conten_id_tipo
  5.       FROM sdb.contenidos
  6.       WHERE id_contenidos = $id_conten";
  7.   $res_tipo = mysql_query($sql_tipo) or die(mysql_error());
  8.   $tipo = mysql_result($res_tipo,0);
  9.  
  10. //Extracción de todos los registros que son del mismo tipo, ordenados por antiguedad decreciente
  11.   $sql = "SELECT id_contenidos
  12.       FROM db.contenidos
  13.       WHERE conten_id_tipo = $tipo
  14.       ORDER BY id_contenidos DESC";
  15.   $res = mysql_query($sql) or die(mysql_error());
  16.  
  17.   while ($row = mysql_fetch_array($res)) {
  18.     echo $row["id_contenidos"]."-";  /echo de control
  19.     $matriz_tipo[] = $row["id_contenidos"];
  20.   }
  21.  
  22.   reset ($matriz_tipo);
  23.   $conten_actual = current($matriz_tipo);
  24.   echo "<br>".$conten_actual;  /echo de control
  25.   echo "<br>".$id_conten."<br>"."<br>";  /echo de control
  26.  
  27.   while ($conten_actual != $id_conten) {
  28.     echo current($matriz_tipo).'<br />';  /echo de control
  29.     next($matriz_tipo);
  30.     $conten_actual = current($matriz_tipo);
  31.   }
  32.  
  33.   echo current($matriz_tipo).'<br />';  /echo de control
  34.  
  35.   if (prev($matriz_tipo)) {
  36.     $contenido_siguiente = current($matriz_tipo);
  37.     next ($matriz_tipo);
  38.     $contenido_anterior = next($matriz_tipo);
  39.   } else {
  40.     reset ($matriz_tipo);
  41.     $contenido_anterior = next($matriz_tipo);
  42.   }
  43.  
  44.   echo "pagina siguiente =".$contenido_siguiente;
  45.   echo "pagina anterior =".$contenido_anterior;
  46.  
  47.  
  48. }//function
  49.  
  50.