Foros del Web » Programando para Internet » PHP »

Intercalar registros en una consulta...

Estas en el tema de Intercalar registros en una consulta... en el foro de PHP en Foros del Web. A ver si me sé explicar... Hago una consulta a la base de datos y le digo que me muetre los resultados ordenados por el ...
  #1 (permalink)  
Antiguo 29/11/2007, 13:47
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Intercalar registros en una consulta...

A ver si me sé explicar...

Hago una consulta a la base de datos y le digo que me muetre los resultados ordenados por el campo 'id' descendentemente. Pero sin perder el roden establecido, quiero intercalar en el tercer lugar de la lista de resultados un registro determinado, de manera que el resultado sea algo así:

1->156
2->155
3->22
4->154
5->153
6->152
7->....

Hay alguna manera de conseguir esto?...

Gracias.
__________________
dominioslibres.info
  #2 (permalink)  
Antiguo 29/11/2007, 14:46
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Intercalar registros en una consulta...

¿Has revisado el manual de PHP a ver si hay alguna función que haga eso? Si no lo has hecho, mira las funciones de los arrays. No estoy seguro de que exista, pero es posible.

Sino, la alternativa es hacerlo "a pelo", es decir:


Código PHP:

$Numero_a_insertar 
22// o cualquier otro
$Posicion_a_insertar 3// o cualquier otra
$array llenar_array(); // Suponemos que esta función llena el array con los datos ordenados.

for ($i=0;$i<=count($array);$i++) {

     
$valor = array[$i]; // Guardamos el valor actual

     
if ($i >=$Posicion_a_insertar) {

         if (
$i ==$Posicion_a_insertar) {
               
$array[$i] = $Numero_a_insertar;
         } else {
              
$array[$i] = $Nuevo_valor;
        }

     
$Nuevo_valor $Valor;


Más o menos podría ser así, no he comprobado que funcione, y seguramente fallaría si la posición es la primera, la última o es más grande que el array, pero es un comienzo para ir por donde van los tiros.

Aunque supongo que PHP tendrá alguna función que simplifique más las cosas...
  #3 (permalink)  
Antiguo 29/11/2007, 16:36
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: Intercalar registros en una consulta...

Demasiado complicado para mis conocimientos. Pensé que sería más sencillo.

No se me ocurre nada.

Gracias de todos modos por el intento.
__________________
dominioslibres.info
  #4 (permalink)  
Antiguo 29/11/2007, 16:38
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Intercalar registros en una consulta...

Puede ser más fácil...

Código PHP:
<?php
$array 
= array(156155154153152);
$primero array_shift($array);
$segundo array_shift($array);
array_unshift($array22);
array_unshift($array$primero);
array_unshift($array$segundo);
print_r($array);
?>
  #5 (permalink)  
Antiguo 29/11/2007, 16:56
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: Intercalar registros en una consulta...

Eso es más sencillo, pero si el array fuera extenso y decidiera intercalar, por ejemplo, un resultado en décimo lugar y otro en cuarto lugar, sería muy tedioso. Además en el ejemplo anterior si fuera el 156 el que quisiera intercalar en tercer lugar, me saldría repetido en dos posiciones, en primer lugar y en tercer lugar.
__________________
dominioslibres.info
  #6 (permalink)  
Antiguo 29/11/2007, 18:15
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Intercalar registros en una consulta...

Pero entonces qué es lo que querés?
Igualmente se me ocurre que con array_slice vas a poder hacer todo eso más fácil
  #7 (permalink)  
Antiguo 30/11/2007, 07:23
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: Intercalar registros en una consulta...

Esto es lo que quiero:

$ar1 = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k');
$ar2 = array('2', '4', '7', '10');


Y el resultado sea:

Array
(
[0] => a
[1] => 2
[2] => b
[3] => 4
[4] => c
[5] => d
[6] => 7
[7] => e
[8] => f
[9] => 10
[10] => g
[11] => h
[12] => i
[13] => j
[14] => k

)
__________________
dominioslibres.info
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 12:26.