Foros del Web » Programando para Internet » PHP »

sacar datos id

Estas en el tema de sacar datos id en el foro de PHP en Foros del Web. Amigos como podria sacar un datos del resultado posterior y anterior, ejemplo hago un select de noticias noticia 1 campo=orden=66 noticia 2 campo=orden=3 aqui necesitos ...
  #1 (permalink)  
Antiguo 26/04/2005, 00:06
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
sacar datos id

Amigos como podria sacar un datos del resultado posterior y anterior, ejemplo


hago un select de noticias


noticia 1 campo=orden=66

noticia 2 campo=orden=3 aqui necesitos que me muestre el orden de la noticia que tiene arriba y el campo orden de la noticia de abajo.

noticia 3 campo=orden=502

no se si me explique es que es algo complicado de explicar :S

alguien me puede ayudar por favor ando un poco desesperao

Gracias
__________________
Si la vida te da la espalda tocale el culo
  #2 (permalink)  
Antiguo 26/04/2005, 02:41
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... si es complicado explicar hazlo claro y detenidamente... tomate tu tiempo....

... personalmente no entiendo lo que mencionas... hablas de un select que supongo se refiere a una consulta SQL... pero ¿un triple igualación?? campo=orden=algo?? 'campo' es el nombre de tu campo? .. orden es un dato?..

... Tratando de adivinar un poco... Yo hago un consulta de un solo resultado y quiero obtener ciertos campos de los registros que están por encima y debajo de mi resultado original... en ese caso simplemente consulto los tres datos condicionando como límites esos datos que están antes y después... así mi dato original estará enmedio y también será recuperdo...

Ejemplo
Código:
SELECT campos FROM tabla WHERE campo<='limite_superior' AND campo>='limite_inferior'
donde 'campos' podrán ser todos (*) ó se podrán enlistar solo los que vayamos a ocupar... y 'los_límites' tendrán que ser construidos desde PHP... dependerá obvio del tipo de dato que se maneje.

Espero haya sabido entenderte... si fue así la consulta es referente a Base de Datos y tiene su propio foro...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 26/04/2005, 03:54
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
Querido amigo gracias por tu interes, no. La cuestion imagina un admin donde puedes agrgar noticias y mediante dos flechitas puedas situar la posiciones de las noticias si la quieres pa riba o para abajo. eso es lo que quiero hacer que pueda subir o bajar las noticias de posicion enotnces. e puesto dos flechitas donde lo enlazo asi:

mover.php?de=<? echo $datos['orden'] ?>&a=................

el la tabla hay un campo de orden donde contiene una copia de la id, mediante ese campo "orden" organizo las noticias, bien e pensado en para subir o bajar solo tengo que hacer un update al campo orden. sustituyendo el numero de la noticia la cual subo o bajo... no se si me estoy explicando bien.

el problema que tengo es como cargo el valor de la variable de mi url $a=

ha tenia que valer el valor del numero que tiene de lante esa noticia pero como lo averiguo?

me explique mejor ?

salu2
__________________
Si la vida te da la espalda tocale el culo
  #4 (permalink)  
Antiguo 26/04/2005, 05:38
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por freedatos
(...) eso es lo que quiero hacer que pueda subir o bajar las noticias de posicion (...)
... oook, cosa distinta.. hacer algo para que al mostrar registros pueda uno posicionar cierto dato en específico en cierta posición específica... ilustración:
Código:
Originalmente                  Modificado
    noticia1                       noticia1
    noticia2                       noticia4  << rehubicado
    noticia3                       noticia2
    noticia4                       noticia3
Cita:
(...) bien e pensado en para subir o bajar solo tengo que hacer un update al campo orden. sustituyendo el numero de la noticia la cual subo o bajo... (...)
Bueno... posibilidades hay muchas, los límites están de tu parte... creo entender que lo que tienes pensado ahora es simplemente sustituir un valor actual... pero le veo dos incovenientes... que al tener solo un enlace de "arriba" y "abajo" directamente solo se podrá subir/bajar una sola posición por click, haciendolo poco óptimo a la hora de que una nueva hubicación esté "a una distancia considerable": tendría que hacer muchos clicks y recargar-consultar-actualizar-volver a presentar por cada uno de ellos???... .... Lo que yo haria... (solo como comentario) es una combinación de checkbox y un combobox... dónde yo selecciono con el check mi noticia a mover y en combobox mostraria la nueva posición a donde quiero ponerla... los valores de las opciones estarían directamente relacionadas con la posición en que se visualizan actualment... utilizaría un campo de posición que variara en 10 unidades (osease que fuese de 10 en 10) ¿para qué??... al estar relacionados los valores en el combo puedo tomarlos con confianza y sumarles/restarles una unidad... como la "distancia original" era de 10 unidades, tengo suficiente "espacio" para hacer mis cambios sin problemas... Ilustración:
Código:
Ordenados por campo numérrico "posición":
Originalmente                  Modificado
    10                                10
    20                                11  << rehubicado, antes 40
    30                                20
    40                                30
Incluso así podría tener las opciones de "siempre al principio" y/o "siempre al final" ... ... podría mover varias noticias de una sola vez, manejar los datos por POST y no dejarlos visibles... .... entre otras cosas... pero bueno, como dije, eso depende de uno....

Dejándonos de leseras.. y contestanto concretamente a tu pregunta:
Cita:
el problema que tengo es como cargo el valor de la variable de mi url
Te refieres a recogerla???... usa $_GET['variable']
... Y respecto a tomar los valores de un registro superior/inferior... ... bueno, no veo la complicación... dicho campo ya lo consultas tengo entendido... solo hay que ver cómo imprimirlo en su lugar correcto (tus enlaces?)... y como dices que manejas la id... quizá y hasta puedas arreglarlo con un echo $row['id']+1 (-1)... y así harian referencia a el id(orden) próximo ó anterior... ... ó incluso puedes simplemente imprimir el id "actual" y en tu script donde actualizarias recojer éste y ahí hacer la operación.. ó hacer una consulta como la que sugerí anteriormente y así con certeza obtendrías los id's proximo/anterior... ... igual lo dije: las posibilidades son muchas...

Ojalá te haya ayudado en algo ... Quizá si muestras el código que manejas específicando los errores y variantes que haz intentado, podamos ayudarte mejor...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 26/04/2005, 10:58
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
ya pero la cuestion es que no es la id es el campo orden que al meter una noticia nueva a dicho campo le meto el mismo registro que la id. pero la id no la toco por entonces esto...

Código PHP:
$row['id']+(-1
tambien podria ir con el campo `orden`

mi pregunta es...

asi:
Código PHP:
$row['id']+(-1
me daria el numero que hay delante

asi:
Código PHP:
$row['id']-(+1
el de atras ?

gracias por tu ayuda.
__________________
Si la vida te da la espalda tocale el culo
  #6 (permalink)  
Antiguo 26/04/2005, 11:14
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Claro.. claro.. solo me referia a la "id" porque el valor es equivalente, no porque tengas que cambiar ese dato... y lo del paréntesis era sugeriendo la alternativa...
Código PHP:
//consultamos el campo órden actual
$siguiente$row['orden']+1// teóricamente igual al órden siguiente
$anterior$row['orden']-1// en teoria equivalente al orden anterior 
Digo en teoria porque no lo podrás asegurar...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 26/04/2005, 11:59
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
pero asi simple memente me resta o me suma uno pero no me da el valor real de lo que vale `orden` imagina:

como el campo id es autoincrement y`el campo orden es una copia de la id. si se borra un producto ya no es correlativo. 1 2 3 4 si borramos el registro 3 seria: 1 2 4 y como tu me dices simple mente hacemos que si estamos en la orden 3 -1 nos daria 2

no me da el dato real de lo que vale orden. me explico ?

entonces... como lo hacemos ? jam1138

salu2
__________________
Si la vida te da la espalda tocale el culo
  #8 (permalink)  
Antiguo 27/04/2005, 05:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
En efecto.. y ya lo habia planteado... por eso he manejado otras alternativas ... pero sigamos si no te laten...

Mira.. he mirado el link en donde hicieron la misma pregunta que estamos manejando acá... y si es solo eso lo que quieres (solo un botón subir/bajar un sitio por ves)... te planteo otra posibilidad... pasar una acción por URL y la id del "objeto" actual... la acción podrá ser "subir" ó "bajar" .. y podrás crear una función en tu script donde recibes para consultar el "orden" de tu registro anterior ó posterior según la acción indicada... y simplemente cambiarlos!... simplemente intercambiarías el orden de dos registros involucrados... mira te dejo la idea estructurada:
Código:
- Llamamos a la función pasandole la acción a realizar y la "id" del objeto al que se le dió click.
- Consultamos en la BD el registro anterior/posterior del dato que recibimos
- Guardamos el resultado "orden" de la consulta en una variable
- Actualizamos el registro consultado dos pasos atrás con el "orden" del objeto actual
- Actualizamos el objeto con el orden de la variable
>> Resultado? ordenes intercambiados...
Perdona que no maneje código.. estoy de salida... espero esta idea sí te guste ... y te sirva para lo que sea...

Respecto a los registros guardados... en realidad no importaría si hubiese "ordenes" saltadas... al intercambiar esos datos no puede haber "ordenes" vacios.. que es lo importante.. osease, no te variará el órden si tienes:
Código:
1
2 
4 << el 3 fue borrado... no me afecta
5
... Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 27/04/2005, 22:26
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 5 meses
Puntos: 21
podrian poner un ejemplo

la verdad aun no entendi muy bien , disculpen amigos
__________________
gerardo
  #10 (permalink)  
Antiguo 28/04/2005, 01:25
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
jam1138 no entendi esta idea :( podrias escribir el codigo ?
salu2
__________________
Si la vida te da la espalda tocale el culo
  #11 (permalink)  
Antiguo 28/04/2005, 10:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo usaría Javascript para el efecto "visual" de mover de orden esos registros.

Un ejemplo en javascript:
http://javascript.internet.com/forms...ion-order.html

El objetivo es .. vía javascript obtener el listado ordenado de esos registros y re-escribir (Update) esos campos "orden" con el nuevo que tengan ..

En el ejemplo javascript .. se trataría de generar ese Select:
Código PHP:
// javascript .. etc...
while (....){
<option value="<? echo $row['id_registro']  ?>"><? echo $row['titulo_noticia'?></option>
}
// resto de javascript .. etc...
* Omití partes de sintax del código .. ¿se entiende la idea?

En PHP .. realmente no sé que vamos a recibir (no lo he probado) .. pero haciendo un:
Código PHP:
echo "<pre>";
print_r($_REQUEST);
echo 
"</pre>"
ahí veremos que estructura tienen los datos .. en consecuencia teorícamente deberíamos "numerar" ese campo ORDEN secuencialmente tipo:

Código PHP:
$contador=0;
foreach ( 
recorrer la lista de "ID's" que se obtengan del select html) {
   
$sql="UPDATE tabla SET ORDEN='$contador' WHERE id_registro='$id_registro'";
   
mysql_query($sql) or die(mysql_error());
   
$contador++;

Este método es discutible .. como se observa se "reindexa" completamente el orden de todos los registros ante un cambio de orden ..

Un saludo,
  #12 (permalink)  
Antiguo 28/04/2005, 13:17
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
el problema esta en como sacamos el valor de orden del que tienes delante y el que hay detras del registro que quieres mover cluster....
__________________
Si la vida te da la espalda tocale el culo
  #13 (permalink)  
Antiguo 28/04/2005, 21:12
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por freedatos
el problema esta en como sacamos el valor de orden del que tienes delante y el que hay detras del registro que quieres mover cluster....
SELECT campo FROM tabla WHERE campo>'valor_actual' ORDER BY campo LIMIT 0,1

Consultamos los campos "siguientes" y recuperamos solo el próximo siguente.. solo cambia en > por < para el anterior siguiente...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 29/04/2005 a las 16:26
  #14 (permalink)  
Antiguo 29/04/2005, 01:33
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
si estamos en el registro 2 como tu dices me diria el dato del registro 1 ?

1
2
3
__________________
Si la vida te da la espalda tocale el culo
  #15 (permalink)  
Antiguo 29/04/2005, 01:52
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
Bien asi me saca el que tengo arriba y el que tengo abajo ?

$dasi=mysql_query("SELECT orden FROM productos WHERE orden<'$ta' LIMIT 0,1");

lo puse asi pero no funciona bien no me saca el dato real del registro que tengo abajo-
__________________
Si la vida te da la espalda tocale el culo
  #16 (permalink)  
Antiguo 29/04/2005, 16:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Ojó!!! si estás diciendo que el "ORDEN" (real) te lo da un campo "orden" ... lo correcto es que los ordenes por ese campo "orden"... me marié .

Edité la sentencia anterior... no ví que no lo tenia.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #17 (permalink)  
Antiguo 30/04/2005, 06:06
 
Fecha de Ingreso: abril-2003
Mensajes: 583
Antigüedad: 14 años, 7 meses
Puntos: 5
la cuestion es que para el que tengo delante :
$dasi=mysql_query("SELECT orden FROM productos WHERE orden>'$ta' LIMIT 0,1");

asi me lo da...

pero al que tengo por abajo:

$dasi=mysql_query("SELECT orden FROM productos WHERE orden<'$ta' LIMIT 0,1");

asi no me lo da :( como pueda sacar el dato de abajo?
__________________
Si la vida te da la espalda tocale el culo
  #18 (permalink)  
Antiguo 30/04/2005, 06:27
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
No leiste mi post?? sugerí los ordenaras.. (ORDER BY)...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #19 (permalink)  
Antiguo 16/05/2005, 02:41
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 640
Antigüedad: 14 años, 2 meses
Puntos: 2
Hoooola, me uno al post ;)

Jam, he usado el Select que has sugerido, la cuestión es que cuando intento mover el `orden`=12 a la posición 11 me coge como valor menor de 12 el 1!!!

ésta es mu tabla:
Código PHP:
CREATE TABLE `luisinho05` (
  `
idsmallint(7NOT NULL auto_increment,
  `
ordensmallint(6NOT NULL default '0',
  `
titulovarchar(100NOT NULL default '',
  `
contenidomediumtext NOT NULL,
  `
imagenvarchar(100NOT NULL default '',
  `
pie_fototext NOT NULL,
  `
lecturassmallint(6NOT NULL default '1',
  `
comentariossmallint(6NOT NULL default '0',
  
PRIMARY KEY  (`id`)
TYPE=MyISAM AUTO_INCREMENT=13 
y este mi código:
Código PHP:
case "moverUp":    
    
$orden_ant="SELECT `orden` FROM $tabla WHERE `orden`<'$num' ORDER BY `orden` LIMIT 0,1";
    
$sql_ant=mysql_query($orden_ant);
    
$orden_ant=mysql_fetch_row($sql_ant);

    
    
$reg_ant=mysql_query("UPDATE `$tabla` SET `orden`='1000' WHERE `orden`='$orden_ant[0]' LIMIT 1");
    
    
$reg_mov==mysql_query("UPDATE `$tabla` SET `orden`='$orden_ant[0]' WHERE `orden`='$num' LIMIT 1");
    
    
$reg_ant_new==mysql_query("UPDATE `$tabla` SET `orden`='$num' WHERE `orden`='1000' LIMIT 1");
    
    break;

qué me está fallando?? porqué no me compara correctamente el "<" si es un campo numérico??Cuando lo he creado, no he conseguido ponerlo como "auto_increment"... no se puede??

Muchas gracias!!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour

Última edición por X3mdesign; 16/05/2005 a las 02:52
  #20 (permalink)  
Antiguo 18/05/2005, 04:15
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 640
Antigüedad: 14 años, 2 meses
Puntos: 2
claro... el problema era que no estaba ordenado de forma "descendente"... vaya día que tuve.. no dí pié con bola...
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #21 (permalink)  
Antiguo 19/05/2005, 01:38
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... perdón por apenas ver este post.. pero que bueno que lo solucionaste .

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #22 (permalink)  
Antiguo 19/05/2005, 02:01
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 640
Antigüedad: 14 años, 2 meses
Puntos: 2
jeje, perdon?? que no vuelva a ocurrir jaja, gracias a tí jam1138, pero no por sólo este post, si no por todos en los que colaboras hacéis un buen desempeño

Saludos!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #23 (permalink)  
Antiguo 11/08/2005, 13:57
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 5 meses
Puntos: 21
Pregunta hola aun no me sale

miren tengo una tabla asi
tabla interno

campo id (es autonumerico)
campo texto (informacion que publico)
orden (es copia del id)

como puedo ordenar esos registros a como lo indican en este tema puede alguien publicar un ejemplo
__________________
gerardo
  #24 (permalink)  
Antiguo 11/08/2005, 14:12
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 5 meses
Puntos: 21
Encontre algo como dijo clustrer

http://www.nuff-respec.com/external/javascriptgui.html

pero en mi caso solo muestro los resgistros autorizados que pasara con los otro que no estan autorizados se re-indexaran
__________________
gerardo
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 04:35.