Foros del Web » Programando para Internet » PHP »

como mostrar un registro en primer lugar

Estas en el tema de como mostrar un registro en primer lugar en el foro de PHP en Foros del Web. Hola, no encuentro la logica para poder empezar hacer mi codigo, os cuento lo que quiero hacer haber si me podeis orientar. Se trata de ...
  #1 (permalink)  
Antiguo 25/04/2012, 09:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
como mostrar un registro en primer lugar

Hola, no encuentro la logica para poder empezar hacer mi codigo, os cuento lo que quiero hacer haber si me podeis orientar.

Se trata de de una tabla en mi bd donde muestro los registros en pantalla ordenados desc, hasta aqui todo normal, el problema lo tengo cuando quiero dar la opcion de colocar uno de los registros en el primer puesto, creo que con consultas sql esto no es posible, entonces solo me queda php, pero no se la forma correcta de hacerlo, si alguien me pudiera comentar como debo hacerlo se lo agradeceria.

saludos.
  #2 (permalink)  
Antiguo 25/04/2012, 11:13
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

como que quiers colocar un registro en el primer puesto??? puedes explicarlo un poco mas???
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #3 (permalink)  
Antiguo 25/04/2012, 12:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

Hola p414, intento explicarme mejor, tengo en mi base de datos una tabla con tres campos por ejemplo un campo nombre , otro edad y el otro id, entonces muestro en pantalla todos los registros de mi tabla osea el nombre, edad y el id, eso si lo muestro de forma ascendiente (aunque esto ultimo da igual), el problema lo tengo ahora, que no se como hacer que pueda dar la opcion al usuario de colocar en primer lugar el registro que quiera, osea que si tengo en pantalla algo como esto:

id ----- nombre------edad
1-------andres------23años
2-------ruben------21años
3-------sonia------25años
4-------ruth------18años
5-------ana------20años

quiero dar la opcion al usuario que por ejemplo el id 4 con nombre ruth y edad 18 años, lo pueda poner en el primer lugar quedando el id 2 en tercer lugar y el 3 en cuarto lugar, no se si me explique bien, espero que se me entienda y me puedan decir la manera correcta de hacerlo, un saludo.
  #4 (permalink)  
Antiguo 25/04/2012, 12:14
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

ahm...y porque mejor no ocupas otro campo (puedes llamarlo "clave") el cual es el que el usuario puede modificarlos, te recomiendo lo hagas de esta forma, porque si en un futuro estos datos interactuan con otras tablas, tendras que actualizar TODAS las otras tablas con las cuales tiene relacion ...

saludos
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!

Última edición por p414; 25/04/2012 a las 12:17 Razón: error de dedo
  #5 (permalink)  
Antiguo 25/04/2012, 12:24
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

p414 gracias por seguir ayudandome, pero no me queda claro como dices de hacerlo, si puedes explicarte un poco mas, saludos.
  #6 (permalink)  
Antiguo 25/04/2012, 12:29
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

id -----clave---- nombre------edad
1-------0425----andres------23años
2-------0428----ruben------21años
3-------0578----sonia------25años
4-------0632----ruth------18años
5-------4120----ana------20años

Lo que te comento es que agregues un campo más, y este campo es donde el usuario puedee interacutar, te lo recomiendo poqrue imagina que esta tabla es de Clientes y estos clientes han realizado antes alguna compra, ahora si tu cambias el ID de sonia, que sucede con el historial de compra de sonia que tenia antes de que se hiciera el cambio???? dodne quedan los datos que le indican lo que ha comprado???

en cambio si dejas que ellos "juegen" con el campo clave y todas tus ordenaciones son basadas en este campo, no tendrás problemas si ellos quieren ponerse el numero 10000000 al final de cuentas el id nuuuuunca cambia se mantiene siempre el mismo y con esto logras una integridad de los datos

saludos
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #7 (permalink)  
Antiguo 25/04/2012, 13:46
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

Hola p414, lo de añadir un campo a mi tabla para tener controlado la posicion, lo entendi ya que el id no quiero tocarlo (por lo que me comentastes) pero no entiendo como dices de hacerlo por ejemplo a que te refieres que por ejemplo si el campo sonia tiene que pasar a la primera posicion actualizar el campo clave al numero 0001, algo asin dices, pero si es asin que pasaria con los demas, esque no entiendo bien como tengo que hacerlo, mil gracias por tu ayuda y un saludo.
  #8 (permalink)  
Antiguo 25/04/2012, 15:35
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

tu lo que quieres es cambiar el campo "clave" cierto? cuando cambies el campo, debes verificar que no exista previamente, en caso de que exista cual es la accion a tomar????

sino existe ese valor puedes agregarlo sin problema, pero... en caso de que exista... que procede????
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #9 (permalink)  
Antiguo 25/04/2012, 15:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

yo lo que pretendo es ordenar los registros en este caso con un campo clave como dijistes o cualquier otro nombre, pero lo que pretendo es a peticion del usuario colocar el registro que elija en el primer puesto osea algo como actualizar el campo clave, pero de esta forma tendria que actualizar todos los campos para que lleven un orden, esque realmente no se como decias que lo hiciera, bueno cualquier sujerencia se agradece, saludos.
  #10 (permalink)  
Antiguo 25/04/2012, 15:55
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

ahhh okokokokoko perfecto, entonces es más sencillo de lo que estaba imaginando... así como lo tienes actualmente listo, solo tienes que agregar un "ORDER BY nombreCampo TipoOrdenamiento" a tu consulta cuando recojes los datos de la BD y con eso los estarias ordenando con forme a tu campo "clave"

epero que a eso te refieras, saludos
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #11 (permalink)  
Antiguo 25/04/2012, 16:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

si a eso me refiero pero no veo la solucion todavia, si tengo el campo clave el problema lo tengo cuando quiero actualizar el registro que quiera colocar en el primer lugar poniendo el ejemplo de antes si tengo algo asin:

id -----clave---- nombre------edad
1-------0001----andres------23años
2-------0428----ruben------21años
3-------0578----sonia------25años
4-------0632----ruth------18años
5-------4120----ana------20años

ahora bien, imaginate que el campop id4 osea clave 0632 que estaria en la 4ª posicion lo quiero poner en la primera posicion, osea que segun comentabas o entendi actualizo el campo clave de ese registro y le pongo el 0001 eso me aria que pasara a la primera posicion pero se repetirian los numero en el campo clave, realmente te repito que no se como te refieres que lo haga, alguna aclaracion o sujerencia, saludos.
  #12 (permalink)  
Antiguo 25/04/2012, 16:17
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como mostrar un registro en primer lugar

creo que lo que quieres es hacer como un panel de administrador. yo esto lo hago con ajax
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-Type" content="application/xhtml; charset=utf-8" />
<title></title>
<style type="text/css">
span {
background-color: red;
color: yellow;
cursor: pointer;
}
</style>

<script type="text/javascript">
Object.prototype.subir = function() {

if (this.previousElementSibling === null) {
alert('no es posible subir este nodo');
return false;

} else {

var n = document.getElementById('nodos');
//this.attributes.posact.value = this.previousElementSibling.attributes.posact.valu e;
//this.previousElementSibling.attributes.posact.valu e = parseInt(this.attributes.posact.value)+1;

this.setAttribute('posact', this.previousElementSibling.getAttribute('posact') );
this.previousElementSibling.setAttribute('posact', parseInt(this.getAttribute('posact'))+1);

n.insertBefore(this, this.previousElementSibling);

//alert('posicion inicial --> ' + this.getAttribute('posini') + ' posición actual --> ' + this.getAttribute('posact') +'\nposicion inicial --> ' + this.nextElementSibling.getAttribute('posini') + ' posición actual --> ' + this.nextElementSibling.getAttribute('posact'));

return "param[]=" + this.getAttribute('posact') + "&param[]=" + this.getAttribute('posini') + "&param[]=" + this.nextElementSibling.getAttribute('posact') + "&param[]=" + this.nextElementSibling.getAttribute('posini');

}
}




Object.prototype.bajar = function() {

if (this.nextElementSibling === null) {
alert('no es posible bajar este nodo');
return false;

} else {

var n = document.getElementById('nodos');
//this.attributes.posact.value = this.nextElementSibling.attributes.posact.value;
//this.nextElementSibling.attributes.posact.value = parseInt(this.attributes.posact.value)-1;

this.setAttribute('posact', this.nextElementSibling.getAttribute('posact'));
this.nextElementSibling.setAttribute('posact', parseInt(this.getAttribute('posact'))-1)

n.insertBefore(this.nextElementSibling, this);

//alert('posicion inicial --> ' + this.getAttribute('posini') + ' posición actual --> ' + this.getAttribute('posact') +'\nposicion inicial --> ' + this.previousElementSibling.getAttribute('posini') + ' posición actual --> ' + this.previousElementSibling.getAttribute('posact') );

return "param[]=" + this.getAttribute('posact') + "&param[]=" + this.getAttribute('posini') + "&param[]=" + this.previousElementSibling.getAttribute('posact') + "&param[]=" + this.previousElementSibling.getAttribute('posini') ;

}
}



function fnc(metodo){
var data = (function(){return metodo})();
if(data == false) return;

ajax = new XMLHttpRequest();
ajax.open('POST', 'NODOS_MOVER.php', false);
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(data);
return;
}
</script>

</head>
<body>
<div id="nodos">
<?php

$sql = mysql_query("SELECT * FROM ordenarregistros ORDER BY posicionActual asc") or die(mysql_error());

if(mysql_num_rows($sql)>0){
while($registros = mysql_fetch_assoc($sql)){
?>
<p posact="<?php echo $registros['posicionActual']?>" posini="<?php echo $registros['id']?>">
<?php echo $registros['cuerpo']?> <span onclick="return fnc(this.parentNode.subir())">Subir</span> - <span onclick="return fnc(this.parentNode.bajar())">Bajar</span>
</p>


<?php
}
}
mysql_free_result($sql);
mysql_close($conexion);
?>

</body>
</html>
Cita:
<?php
$datos = array($_POST["param"]);

$sql = mysql_query("UPDATE ordenarregistros SET posicionActual = '" .$datos[0][0]. "' WHERE id = '" .$datos[0][1]. "'");
$sql = mysql_query("UPDATE ordenarregistros SET posicionActual = '" .$datos[0][2]. "' WHERE id = '" .$datos[0][3]. "'");

mysql_close($conexion);
?>
estructura de la tabla
Cita:
CREATE TABLE IF NOT EXISTS `ordenarregistros` (
`id` int(11) NOT NULL auto_increment,
`posicionActual` int(11) NOT NULL,
`cuerpo` text collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
)
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #13 (permalink)  
Antiguo 25/04/2012, 16:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

Hola IsaBelM, no es exactamente un panel de administrador es solamente un boton a cada registro o un enlace para subirlo al primer puesto, de todas formas ahora estoy muy saturado para entender tu codigo, gracias por tu colaboracion y me lo mirare con calma, un saludo.
  #14 (permalink)  
Antiguo 25/04/2012, 16:51
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

ahhhh ok, ya lo comprendi, pero me viene a la mente algunas dudas, por ejemplo el usuario "sonia" escoje la clave "son2012" y lo guarda, ahi estamos bien, ahora viene "ruben" y escoje como "clave" "sonia2012", no sería mejor informarle a "ruben" que esa "clave" ya está registrada???? algo asi te refieres????

pd. si no te contesto rápido es que me fui al depa, porque ya casi salgo de la oficina

saludos
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #15 (permalink)  
Antiguo 25/04/2012, 17:10
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: como mostrar un registro en primer lugar

Preguntas:
¿ cada usuario podra ordenar los registros a su antojo ?
¿ Estas modificaciones de orden, deben recordarce en una tabla ?
__________________
Mono programando!
twitter.com/eguimariano
  #16 (permalink)  
Antiguo 26/04/2012, 03:23
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

Hola SirDuque, cada usuario podra selecionar el orden a su antojo y creo que seria mejor que las modificaciones se guardaran en una tabla, aunque no estoy convencido, cualquier sujerencia se agradece, aunque creo que adaptare el codigo de IsaBelM, a mis necesidades que es lo que necesito mas o menos, un saludo.
  #17 (permalink)  
Antiguo 26/04/2012, 05:24
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: como mostrar un registro en primer lugar

Se me ocurre lo siguiente, quedara a tu criterio.

1ª Antes que nada, hay un aporte sobre el tema, hay que buscarlo.

------

Lista de Amigos o Usuarios

Mi usuario tendra que tener una columna mas llamada por ejemplo (prioridad/preferidos/favoritos)

en esta guardar los ID de los Amigos/Usuarios separados por coma ",".

A la hora de listar:
Primero listo los ID ( los cuales estan en un arreglo tras un explode(",",$row['favoritos']).
Y despues listo todos los usuarios restantes que no esten en el campo favoritos.

De esta manera, no es necesario guardar TODOS los ID en el campo favoritos y no expandimos notablemente el peso de la tabla.
__________________
Mono programando!
twitter.com/eguimariano
  #18 (permalink)  
Antiguo 26/04/2012, 06:28
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

Hola SirDuque, bueno en primer lugar gracias por tu colaboracion, la verdad que me estoy haciendo un lio, quizas me estoy explicando mal, realmente lo que quiero es tener una lista de nombres(trabajadores) donde cada uno tiene unas tareas y un horario, osea que el que este en primer puesto tiene un horario y un trabajo, osea que necesito subir al primer puesto a cualquiera de la lista e incluso hacer que se suba cada cierto tiempo, por ejemplo cada 8 horas vuelva a subir el registro que quiera, segun el ejemplo de la tabla yo habia pensado poner algo asin:

tabla
id -----orden---- nombre
1-------0005----andres
2-------0004----ruben
3-------0003----sonia
4-------0002----ruth
5-------0001----ana

mostraria en pantalla esto:

andres
ruben
sonia
ruth
ana


osea que mostraria en pantalla los registros con orden de mayor a menor, asin si por ejemplo quiero subir al primer puesto al id 3 (sonia), solo tendria que actualizar el campo orden inclementandole 1 referente al primer registro, osea el campo orden cambiaria a 0006, y asin sucesivamente, quedaria algo asin:


id -----orden---- nombre
3-------0006----sonia
1-------0005----andres
2-------0004----ruben
4-------0002----ruth
5-------0001----ana

mostraria en pantalla esto:

sonia
andres
ruben
ruth
ana

Creo que de esta forma ya podria valer, pero quedaria poder subir los registro cada cierto tiempo, osea cada vez que hay un cambio de turno cada 4 o 8 horas subir un registro o dos o los que sean, no se si me explique bien pero de esta forma me sirve, si me podeis orientar a como hacerlo, un saludo.
  #19 (permalink)  
Antiguo 26/04/2012, 06:41
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: como mostrar un registro en primer lugar

OK!
busque y encontre un aporte, el fin de este es mover el orden de Imagenes, si lo lees vas a poder adaptarlo a tus necesidades, su objetivo es tu mismo fin.

http://www.forosdelweb.com/f18/modif...aporte-954707/
__________________
Mono programando!
twitter.com/eguimariano
  #20 (permalink)  
Antiguo 26/04/2012, 07:03
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

SirDuque la verdad que ese post esta muy bien, pero lo que yo necesito es mucho mas simple, ya que solo tengo que subir al primer puesto un registro, no alternandolo para arriba y para abajo, en fin lo que no tengo aun claro es como puedo hacer que suba un registro en concreto cada cierto tiempo , alguna sugerencia e idea? saludos
  #21 (permalink)  
Antiguo 27/04/2012, 13:03
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

ahhh creo que ya comprendí lo que queires hacer...

y tu ya lo dijiste, solo tienes que incrementar uno al ultimo y listo
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #22 (permalink)  
Antiguo 27/04/2012, 13:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

Cita:
Iniciado por p414 Ver Mensaje
ahhh creo que ya comprendí lo que queires hacer...

y tu ya lo dijiste, solo tienes que incrementar uno al ultimo y listo
Si eso seria para ordenarlos sin tocar el id, pero como puedo hacer que suba un registro cada cierto tiempo e incluso estos periodos de tiempo los pueda poner desde la web.
  #23 (permalink)  
Antiguo 15/05/2012, 09:13
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: como mostrar un registro en primer lugar

creando un archivito de ejecución programada
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #24 (permalink)  
Antiguo 15/05/2012, 15:52
 
Fecha de Ingreso: abril-2011
Mensajes: 33
Antigüedad: 13 años
Puntos: 7
Respuesta: como mostrar un registro en primer lugar

buenas y porque en el campo orden no es DateTime? es decir si quieres poner un cliente a primera posicion, updatea el campo Order pero con la fehca hora actual, con

y despues muestras la select por orden de Order Desc

No se si me explicado, con DateTime se solventa el poblema que no sabes que valor poner para que esten por delante de todo
__________________
www.webserveis.com
  #25 (permalink)  
Antiguo 15/05/2012, 16:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: como mostrar un registro en primer lugar

Hola neuronic, es asin como lo hice al final, gracias.

Saludos.

Etiquetas: lugar, primer, registro, sql, tabla
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:22.