-
Contador contenido
3 -
Ingreso
-
Última visita
-
Días ganados
1
Mensajes publicados por Sëths
-
-
Mira mi ultimo post, te puede servir para lo que quieres hacer
Debes iniciar sesión para ver el contenido del enlace en esta publicación. -
Podrías crear un web-service que indicando unos parametros mediante get a una url te devuelva una estructura json y ya ahí tu coges los datos que quieras... lo mismo para añadir parametros a la base de datos.
-
Muchas gracias SeMa por tu aporte!
Ahora mismo lo edito. -
[Guía] Como hacer querys correctamente en PHP con mysqli
Hoy os vengo a enseñar como hacer query en php correctamente para sacar información de vuestro servidor de Metin2. (Esta guía la actualizaré dependiendo de las dudas que tengáis y lo que queras hacer). Lo siento por cualquier errata que pueda cometer en mi ortografía pero este es mi primer post en el Foro.
Indice- Archivo de configuración
- Numerar filas
- Mostrar filas
- Filtros
- Sumar valores de una columna
Archivo de configuración
Lo primero que vamos a hacer, es crear un archivo de configuración donde vamos a tener los datos de acceso a nuestro servidor (config.inc.php). En el, vamos a introducir el siguiente código y editaremos los valores de acceso.
config.inc.php >
<?php $_CONNECTION = array ( 'dbhost' => 'x.x.x.x', //Host del servidor (Ej. 192.168.1.100) 'dbuser' => 'user', //Usuario de la base de datos 'dbpass' => 'pass' //Contraseña de la base de datos ); //Ahora la conexión de a la base de datos: $conect = new mysqli($_CONNECTION['dbhost'],$_CONNECTION['dbuser'],$_CONNECTION['dbpass']); ?>
Ahora que ya tenemos nuestro archivo de configuración, vamos a crear una query.
Numerar filas
Vamos a crear una query para contar el numero de cuentas creadas en nuestro servidor. Como sabemos, las cuentas están ubicadas en account.account en nuestra base de datos. Para ello, vamos a introducirnos en el archivo php donde queramos que aparezca dicha información. Como ejemplo, en mi caso, vamos a ir a index.php, y vamos a introducir en siguiente código.
index.php >
<?php //incluimos nuestro archivo de configuración (excepto si ya lo hemos incluido) require 'config.inc.php'; //Ahora vamos a crear la query y la vamos a almacenar en una variable. $cuentas = $conect->query("SELECT id FROM account.account") $num = $cuentas->num_rows; //Ahora nuestra variable '$num' contiene el número de cuentas que hay en nuestro servidor echo 'Hay un total de '.$num.' cuentas creadas'; $cuentas->close(); ?>
Esta sería la forma de contar el numero de filas, si por ejemplo queremos contar el número de items que hay en circulación en el juego, seria así: "SELECT id FROM player.item".
Mostrar filas
Ahora digamos que queremos mostrar todos los nombres de los jugadores en una tabla junto a su nivel. Para ello vamos a ubicarnos en el archivo php donde queramos mostrar dicha tabla.
index.php ><?php //incluimos nuestro archivo de configuración (excepto si ya lo hemos incluido) require 'config.inc.php'; //Ahora vamos a crear la query y la vamos a almacenar en una variable. echo '<table>'; $personajes = $conect->query("SELECT name,level FROM player.player"); if($personajes->num_rows){ while($row = $personajes->fetch_array(MYSQLI_ASSOC)){ echo '<tr>'; echo '<td>'.$row["name"].'</th>'; echo '<td>'.$row["level"].'</th>'; echo '</tr>'; } }else{ echo 'No hay ningún valor'; } echo '</table>'; $personajes->close(); ?>
Filtros
Ahora que ya sabemos contar y numerar los datos, vamos a aplicar filtros a las querys para hacerlas más interesantes. Por ejemplo vamos a coger la query de mostrar filas y vamos a poner un filtro que diga que los muestre en orden según el nivel. Para ello lo editaremos añadiendo 'ORDER BY level'. Debe quedar algo así.$personajes = $conect->query("SELECT name,level FROM player.player ORDER BY level");
Si ejecutamos esta query, nos daremos cuenta que los ordena, pero de menor a mayor. Si queremos que los ordene de mayor a menor, añadiremos 'DESC' al final.
$personajes = $conect->query("SELECT name,level FROM player.player ORDER BY level DESC");
Si tenemos muchos usuarios puede demorarse mucho la query, entonces digamos que solo queremos que muestre los 10 primeros según el nivel. Para ello añadiremos lo siguiente al final 'LIMIT 10'
$personajes = $conect->query("SELECT name,level FROM player.player ORDER BY level DESC LIMIT 10");
En la siguiente tesitura nos ocurre que solo queremos mostrar los personajes mayores del nivel 50, dejando los filtros anteriores. Para eso, solo necesitamos añadir lo siguiente 'WHERE level > 50' y nos debería quedar algo así
$personajes = $conect->query("SELECT name,level FROM player.player WHERE level > 50 ORDER BY level DESC LIMIT 10");
Ahora queremos añadir otro filtro que solo muestre los personajes que no lleven más de 1 semana sin loguearse al juego. Para ello utilizaremos la función de DATE_SUB(). Vamos a añadir el siguiente código a la query 'DATE_SUB(NOW(), INTERVAL 1 WEEK) < last_play' (Podemos modificar el intervalo sustituyendo 'WEEK' por lo que queramos. Ej: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR) Nos tiene que quedar de esta forma
$personajes = $conect->query("SELECT name,level FROM player.player WHERE level > 50 AND DATE_SUB(NOW(), INTERVAL 1 WEEK) < last_play ORDER BY level DESC LIMIT 10");
Sumar valores de una columna
Para poder sumar valores de una columna en concreto, como por ejemplo: Queremos saber el yang en total que hay en nuestro servidor. Para ello, necesitaremos usar la función SUM().<?php //incluimos nuestro archivo de configuración (excepto si ya lo hemos incluido) require 'config.inc.php'; //Ahora vamos a crear la query y la vamos a almacenar en una variable. $yang=$conect->query("SELECT SUM(gold) AS gold FROM player.player"); $yang=$yang->fetch_array(MYSQLI_ASSOC); $yang=$yang["gold"]; //Ahora nuestra variable '$yang' contiene el número de yang global que hay en nuestro servidor echo 'Hay un total de '.$yang.' de yang'; ?>
Esto nos sirve también para sumar, por ejemplo, el número total de minutos jugados en nuestro servidor.
Y este sería el final de la guía. Ya sabéis que este es mi primer post y estoy abierto a sugerencias y dudas que pongáis en los comentarios.
Un saludo y hasta la próxima!
Una ayuda con mi página web, gente con conocimientos en php
en Desarrollo Web
Publicado
Ya me he dado cuenta xD sorry