Bienvenido(a) a Alcance Libre 05/09/2025, 23:37

Alcance Libre Foros

 Índice del foro > Todo acerca de Linux > Programación y desarrollo New Topic Post Reply
 Highscore Online con PHP MySQL pequeña duda
Tópico anterior Tópico siguiente
   
matusalen
 21/09/12 10:58 (Leído 1,632 veces)  

Nuevo

Estado: desconectado
Forum User

Identificado: 21/09/12
Mensajes: 1
Hola amigos,tengo este pequeño problema,puede que aqui me puedan ayudar.

Hize un juego,como muchos que hay por internet y este tiene un highscore.
En este caso,las puntuaciones de los jugadores se guardan,junto con el nombre.

Todo funciona bien,pero el problema es el siguiente,si un jugador pone su nombre,pongamos Mario y tiene 1280 puntos,si luego el vuelve a jugar y vuelve a poner Mario con 1400 puntos,lo que hace es añadir otra tabla a la base de datos,pero no lo actualiza,lo que consigue con esto es ver,por ejemplo en la lista de puntuaciones de juego,muchos tios que se llaman mario con distintas puntuaciones. Confused

Lo que me gustaria es que,si el jugador vuelve a poner el nombre Mario,se actualizaria solo la puntuacion de ese Mario sin insertar mas tablas a la base de datos.

Este es el php que uso para obtener las puntuaciones y enviarlas a MySQL:



PHP Formatted Code
<?php

$database = "base_datos"; //The database
$username = "nombre"; //username to connect
$password = "pasworld"; //password to connect
$host = "host_base_de_datos"; //host to connect to

function connect($d,$u,$p,$h) {
        mysql_connect($h,$u,$p);
        mysql_select_db($d);
}

connect($database,$username,$password,$host);

$name = $_GET["name"];
$score = $_GET["score"];
$code = $_GET["code"];
$game = $_GET["game"];

if($code == "key_game") {

        mysql_query("INSERT INTO highscores(ID_GAME,name,score)
        VALUES('"
.mysql_escape_string($game)."','".mysql_escape_string($name)."','".mysql_escape_string($score)."')");

}
else {
echo "Error no funciono!";
}

?>



Como se puede ver inserta los datos de ID_game, name y score a la base de datos.
¿como podria actualizar las puntuaciones si el nombre ya estaba en la base de datos?
saludos espero una respuesta amigos.
 
Profile Email
 Quote
Gildus
 22/09/12 11:17  

Nuevo

Estado: desconectado
Forum User

Identificado: 22/07/08
Mensajes: 8
Holas, Lo que harias es usar l SQL UPDATE y no el INSERT INTO. Algo como:
PHP Formatted Code
UPDATE highscores SET score='".mysql_escape_string($score)."' WHERE name='".mysql_escape_string($game)."'
Ahora si tienes el valor del ID_GAME seria mejor aun, porque asi te aseguras que no sea a otro name duplicado. Por ejemplo:
PHP Formatted Code
UPDATE highscores SET score='".mysql_escape_string($score)."' WHERE name='".mysql_escape_string($game)."'
 AND ID_GAME='$idGame'
El valor de $idGame seria el valor que faltaria. Saludos Gildus
 
Profile Email
 Quote
John J. Toro A.
 04/10/12 03:49  

Moderador

Estado: desconectado
Forum User

Identificado: 19/02/07
Mensajes: 119
Localización:Medellín - Colombia
Saludos,

Me confunde esta parte:
Quote by: matusalen

...

Lo que me gustaria es que,si el jugador vuelve a poner el nombre Mario,se actualizaria solo la puntuacion de ese Mario sin insertar mas tablas a la base de datos.

...



Supongo que seria "insertar mas registros"...

La idea es buscar el usuario, si existe lo actualiza sino lo adiciona.

Dependiendo la versión de MySQL, se puede emplear la sintaxis:

INSERT ON DUPLICATE KEY UPDATE


claro, con el nombre como clave o bien construir algo como:

SELECT si se obtuvieron resultados UPDATE de lo contrario INSERT


JohnToro
 
Profile Email
 Quote
Contenido generado en: 0.45 segundos New Topic Post Reply
 Todas las horas son CST. Hora actual 11:37 .
Tópico normal Tópico normal
Tópico Pegado Tópico Pegado
Tópico bloqueado Tópico bloqueado
Mensaje Nuevo Mensaje Nuevo
Tópico pegado con nuevo mensaje Tópico pegado con nuevo mensaje
Tópico bloqueado con nuevo mensaje Tópico bloqueado con nuevo mensaje
Ver mensajes anónimos 
Los usuarios anónimos pueden enviar 
Se permite HTML Filtrado 
Contenido censurado