https://foro.gambas-es.org/viewtopic.php?f=18&t=4160
-----------------------------------
jsbsan
Miercoles, 01 Octobre 2014, 11:53

PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Pues estoy pensando en hacer una pagina web para llevar los marcadores "online" de juegos.
Me explico:
cada vez que terminamos una partida, se "sube" al servidor los datos de la partida, y luego se lee el resultado que muesta la página, que son los 10 mejores registros de puntuación.
 
El programa en gambas3, se encargaria de crear una url,  abrir la  pagina web y leer los resultados
Por ejemplo, en gambas3, se crearia algo parecido a esto:
http:\\www.mimarcador1942.com\resultados.php?jugador=pepito&pais=españa&puntuacion=1020&fecha=10/12/2014

En php, haria la parte de lectura de la url y la inserción del dato en la tabla correspondiente.

Una vez introducido el dato, quiero mostar los 10 mejores resultados (puntuaciones mayores). Seria una sentencia parecida a esta:
[strike]SELECT * FROM DATOS ORDER BY PUNTUACION DESC  LIMIT 0, 10; [/strike]
SELECT top 10  * FROM DATOS ORDER BY PUNTUACION DESC;


[b]Problema que se plantea:[/b]
Pero a medida que la gente juege y se suban los resultados, la base de datos se ira llenando de datos,[u] pero solo me interesan los 10 con mayor puntuación[/u] ¿como puedo borrar los resultados que no me interesen?

¿como lo hariais?

[b]Nota:[/b]
Se me acaba de ocurrir una cosa: 
Justo antes de insertar el dato leido, el programa en php, puede comprobar si la puntuacion es superior al minimo que tiene en los 10 registros, y si es asi, lo inserta y borraria el resultado nº 11 antes de cerrar la conexion a la base de datos


-----------------------------------
shordi
Miercoles, 01 Octobre 2014, 12:32

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Esa es una vieja técnica: Los Registros "Reciclables"

Es muy simple: al borrar, no borres, limpia todos los campos y asígnale al registro una clave imposible (que empieze por x o lo que sea.
Antes de insertar algo busca la claves imposibles (registros cuya clave empieze por x) y si existe reutiliza ese registro. Si no, añade uno nuevo.
De vez en cuando elimina a pedal los reciclables y así no crece nunca demasiado.

Saludos


-----------------------------------
jguardon
Miercoles, 01 Octobre 2014, 12:46

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Se me ocurre algo así (ojo que no lo he probado...):


[code linenumbers=false syntax=sql]DELETE FROM Datos WHERE Datos.campo NOT IN (SELECT top 10 * FROM DATOS ORDER BY PUNTUACION DESC);

-- o tambien -

DELETE FROM Datos WHERE  NOT EXIST (SELECT top 10 * FROM DATOS ORDER BY PUNTUACION DESC);[/code]


También puedes añadir un campo más a tu tabla y llenarlo con algo sólo los registros que devuelve tu consulta inicial TOP 10. Entonces ya puedes eliminar el resto sin peligro:

[code linenumbers=false syntax=sql]DELETE FROM Datos WHERE Datos.Top = ''; /* o NULL, depende de la config del campo */[/code]

Saludos


-----------------------------------
jsbsan
Miercoles, 01 Octobre 2014, 14:28

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Bueno, pues aporto la solución que he encontrado, y en principio, funciona, aunque no es tan óptima como las vuestras:

- Cuando hace el listado de las 10 puntuaciones más altas, se queda con el valor de la mínima puntuación 
- Luego hace una consulta de borrado, borrando los registros que tengan una puntuación menor que la minima.

El defecto que tiene es que si hay puntuaciones iguales al mínimo, no las borra.  :cry: 

http://pastebin.com/embed_js.php?i=UNXDjLDk

(mi código de php no es muy bueno ya que es un corte y recorte y reuso de otros códigos)

Gracias a los dos por contestar

Saludos


-----------------------------------
jguardon
Miercoles, 01 Octobre 2014, 17:05

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Ese código no puede funcionar con tantas "\" barras invertidas de escape. ¿Lo estás usando así o es un problema del pastebin?

Prueba nuestro propio pastebin: http://paste.gambas-es.org

(Es verdad, era una primicia y no la había anunciado todavía)


Saludos


-----------------------------------
shordi
Miercoles, 01 Octobre 2014, 18:52

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
¿Cualo es pastebin? No entiendo el concepto así, a primera vista... :(  :(


-----------------------------------
jsbsan
Miercoles, 01 Octobre 2014, 18:54

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
jguardon:

[quote]Ese código no puede funcionar con tantas "\" barras invertidas de escape. [/quote]
Pues no se porque aparecen, en el codigo orinal no estaban...
[quote]
Prueba nuestro propio pastebin:
[/quote]
Vale, lo acabo de añadir
Aqui lo podeis ver: http://paste.gambas-es.org/view/bee65b42

Por cierto, lo he añadido 2 veces, y no se como borrarlo.. :roll:


-----------------------------------
jsbsan
Miercoles, 01 Octobre 2014, 19:00

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Shordi:

[quote]pastebin? No entiendo el concepto así, a primera vista... [/quote]
Los "pastebin" (porque hay varios) son unas páginas web donde puedes subir  un código (o parte de este), y ellos te dan un enlace para insertar en tu blog o donde quieras, donde se mostrará el codigo coloreado (si le has indicado el lenguaje con el que esta hecho).

Yo el que he usado es este: http://pastebin.com/

Te tienes que dar de alta en el sitio, y tienes dos modalidades: 
la gratis: donde puedes subir los códigos, pero luego no puedes modificarlo (y no se si tienen un limite de espacio, supongo que si)
la de pago: donde te dan mas servicios.

Saludos


-----------------------------------
shordi
Miercoles, 01 Octobre 2014, 19:15

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Ok, gracias.


-----------------------------------
jguardon
Miercoles, 01 Octobre 2014, 23:14

Re: PhP Y Mysql: Borrado De Registros "sobrantes" De Una Tabla
-----------------------------------
Usad el nuestro, a ver si con los anuncios ingresamos un céntimo para la Comunidad

http://paste.gambas-es.org


Por cierto, Julio, los códigos no se pueden borrar a menos que pongas un tiempo de vida.

Saludos


