JavaScript y Mysql

Imagen de edalg
0 puntos

No se ande poner el tema i lo pongo aca.. perdonen!.

 

Miren , tengo que hacer un juego de hundir la flota con dos pc's.

El juego lo tengo que hacer con Javascript.

 

El problema esta al a hora de pasar variables a la BD para que el otro usuario peude ver por ejemplo mi tiro.

 

Como sabeis, Javascript esta orientado a cliente, lo que no se es pasarlo a servidor (PHP). Se que con Ajax se puede hacer pero no puedo o no se. Hay alguna forma diferente a JS para pasar variables a php o que lo envie a Mysql directamente?.

AYUDA!!!

Si alguien quiere en privado, enviarme correo a ****************

Saludos!

Imagen de yuyul
+1
0
-1

Buenas edalg,

a ver si te puedo echar una mano, si vas a utilizar una base de datos para guardar información o lo que sea, necesitaras php (o en su defecto asp) para poder trabajar con ellas.

 Si no, no haria falta necesariamente el uso de php.

 Como has de hacer el juego?? Te han dado alguna especificacion???

 

Un saludo. 

+1
0
-1
Imagen de edalg
+1
0
-1

Pués el juego esta todo en javascript, confunciones i tal.

Primero lo tuvimos que hacer para jugar contra l ordenador pero ahora nos piden que podamos jugar contra otro PC.

Lo que nos han dich oes usando Mysql. Claro la idea es ir subiendo por ejemplo el disparo a la base de datos i el contrincante haciendo un refresco (consultadon la BD) puede ver a donde le disparo. 

Ejemplo: se envia las variables "x" i "y" claro estas estan en javascript, la idea es pasarlas a una BD.

Lo que no se es comorrrrr!!!!! no lo consigo. 

+1
0
-1
Imagen de yuyul
+1
0
-1

Has mirado alguna página de programación??? Bueno mejor alguna de desarrollo web. Seguro que encuentras algun ejemplo para aclararte un poco.

 Sino te puedo aconsejar alguna que otra.

+1
0
-1
Imagen de edalg
+1
0
-1

Lei alguna que otra forma, pero como dige es todo ajax i no me acaba de convercer, alguna de las pruebas que hacia, al refrescar me empezaba el juego de "zero".

 

Lo que pasa que por cada variable que quiero meter el la BD, tengo que usar una funcion diferente de Ajax, weno, funcion diferente no, la tengo que hacer dos veces para variables diferentes.

Per ejemplo, para subir, "x" tenfria una funcion ajax, i para subir "y" otra diferente.

Si sabes alguna que lo explique bien o algo parecido me harias un favor.

 

Saludos! 

+1
0
-1
Imagen de slap
+1
0
-1

Lo más sencillo es pasar las variables por medio de la url. De la forma:

http://elsitio.com/disparo.php?var1=valor1&var2=valor2&...

La página disparo.php recoge esas variables en la variable global $GET y las procesa.

slap

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de edalg
+1
0
-1

Sim, peroooooooooooooooooo

Como hago el GET con javascript?, debo hacer un objeto ajax o que?.

Sino no se hacer un GET con JS.

Al pasar las var's, a disparo.php, como le digo a disparo que las procese?. He de poner en la pagina  un include("disparo.php")?.

 

Saludos

PD: me hago un cahondeo mental de relacion entre archivos. 

+1
0
-1
Imagen de yuyul
+1
0
-1

Aquí te paso una url para que veas como se pasan parametros y como recogerlos con php.

 Paso de variables

 También tienes como trabajar con mysql y php, para insertar registros y tal.

A ver si esto te sirve. 

+1
0
-1
Imagen de edalg
+1
0
-1

Si quieres que te diga la verdad no me sirvio de mucho. Habla de PHP i ASP los dos son lenguajes "servidor".

El problema es pasar de una variable en JS a otra de PHP para asi subirla a una Base de Datos.

 El problema también viene pq esas variables estan dentro de una funcion JS.

 

Por si alguien se inspita, les adjunto direccion para ver el codigo en JavaScript.... podeis jugar. 

 

enlace JUEGO

 

Hay el archivo principal index.php  i  hundir_flota.js  que es donde esta el juego

Haver la funcion ,  "disparo_tablero(x,y)" la idea es q x i y se enviaran a una Base de Datos.

+1
0
-1
Imagen de yuyul
+1
0
-1

Pues para trabajar con base de datos necesitas php o asp, no??? Porque desde javascript no puedes atacar a una base de datos.

+1
0
-1
Imagen de slap
+1
0
-1

Si quieres que te diga la verdad no me sirvio de mucho. Habla de PHP i ASP los dos son lenguajes "servidor".

El problema es pasar de una variable en JS a otra de PHP para asi subirla a una Base de Datos.

A ver si nos aclaramos...

No te sirvió porque son lenguajes de servidor, pero a la vez indicas que lo que quieres es pasar una variable de JS a PHP.

Precisamente para pasar variables de JS a PHP se usa el método de paso de variables por url (entre otros).

Lo que debe hacer tu código JS:

Recoger las coordenadas "x" e "y" del disparo y pasarlas a la página que procesará esos datos en la url. Por ejemplo así:

window.location='disparo.php?x='+x+'&y='+y;

Lo que debe hacer tu código PHP (disparo.php):

Recoger las variables que le llegan en la URL y grabarlas en la base de datos. Más o menos así:

$x=$_GET['x'];
$y=$_GET['y'];

$sql="INSERT INTO disparo VALUES($x,$y);";

// resto de instrucciones para grabar en la base de datos:

Lo que debes hacer tú:

Leer un poco sobre PHP: Manual PHP

Y SQL: Tutorial SQL

slap

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de edalg
+1
0
-1

Ahora he ido provando y no funciona. les pongo trozo codigos.

 

 //dentro de el archivo hundir_flota.js 
function disparo_tablero(y,x) {

window.location='envia_disparo.php?x='+x+'&y='+y;
//ENVIA_DISPARO

<?php
require('config.php');
//Recogemos los disparo nuevos

$x_Midisparo=$_GET['x'];
$y_Midisparo=$_GET['y'];


//ENVIA A LA BASE DE DATOS
$sql="UPDATE hundir_flota SET x_mi_disparo='$x_Midisparo' WHERE id='1'";
mysql_query($sql,$conn)or die("problemes");


?>

Como podeis ver o pensar hay un problema,  esto solo lo va hacer al principio. He probado de poner un Boton que recargue la pagina "envia_disparo.php", pero como es logico al recargar se recarga tambien el juego.

Por cierto, he puesto un include("envia_disparo.php") en el index.php, ese es el promblema que al actulizar se actulice todo, pero esq si no hago include,  envio_disparo no hace lo que tiene que hacer (o eso me parece) 

+1
0
-1
Imagen de yuyul
+1
0
-1

Lo que tendrias que ir haciendo, es reconstruir el tablero de juego en cada ataque del jugador o cada x segundos, para recibir el ataque del contrincante.

No te vale solo con recibir la x y la y, sino tendrias que traerte todas las x e y de la partida y rehacer el tablero.

 

Una pregunta, esto para que lo haces??  

+1
0
-1
Imagen de edalg
+1
0
-1

Por cierto, antes culpa mia con lo que he puesto.

lo que hace window.location es cargar la pagina de envia_disparo.php i sale del juego... cosa que hace que solo pueda hacer un dispro. Haciento esto si que sube variable a la BD pero solo me deja el primer disparo ya que sale del jugo i carga envia_disparo.

Es diecir hace un rediccionamiento, eso no interesa.

 

Esta meirdecilla de practica es una practica final de la universidad.... me juego el titulo que ella.... XD 

+1
0
-1
Imagen de edalg
+1
0
-1

Bueno!!! al final he conseguido algo!!!

 

Lo he echo con Ajax! 

1 creo objeto Ajax

2 creo una funcion que haga el GET 

Donde URL, la he definido como la URL de envia_disparo  i vars, son las variable sa enviar.

Ahora viene cuando lo tengo que recoger.... XD... creo que es mas facil, bueno he leido alguna forma para pasar de php a jS i es facil.

 

function enviaDatos(method,vars)
{
if (method == "GET")
{
oAjax.open(method, URL+"?"+vars, true);
vars = "";
}
else
{
oAjax.open(method, URL, true);
oAjax.setRequestHeader("Method", "POST "+URL+" HTTP/1.1");
oAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
oAjax.onreadystatechange = recibeDatos;
oAjax.send(null);
}

 Les mantendre informados.

Si alguien tiene alguna idea mejor que mejor! 

+1
0
-1
Imagen de slap
+1
0
-1

¡Cierto!. La página debe comprobar cada x segundos si hay respuesta del contrario.

Suponiendo que la página principal se llame hf.php, ésta página incluirá el código JS para pintar el tablero y recoger tu disparo.

El ciclo sería algo así:

(1)hf.php(¿hay respuesta en la BD?) ->(si)->(2), (no)->(1)
(2)hf.php(lee respuesta de BD) -> hf.php(pinta tablero, recoge tu disparo) ->
hf.php(graba disparo en BD) ->(1)

slap

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de edalg
+1
0
-1

Que pasa amiguetes!.

 

Pues ayer consegui tanto enviar los disparos a la BD como cogerlos.

Pa cogerlos igual que enviar, con ajax a saco.  con la misma funcion ajax pero sin pasar parametros i que me devuelva lo que a cogido en la BD.

Es logico pero todo esto no savie que se podia hacer asi en ajax.

Por cierto tb he trabajado un poco lo del bucle para que vaya comprovando. Si hay algo nuevo, el problema es que puede pasar si el contrincante tarda mucho rato en disparar...... xd. El bucle como sabeis creca EXPONENCIALMENTE, he tenido la idea de usar la funcion SLEEP(X) para que lo comprube cada 3 segundos.... asi nos estalviamos muicho.

 

Cuando tenga bastante codigo os lo paso.

 

Saludos!

 

Por cierto me he encontrado el problema para enpezar a jugar. Claro cada jugador tiene su ID en la BD. Me han comentado que como ID puedo poner la cookie generada.

Sabeis una forma facil para coger la cookie i guardarla a una variable?. Con php mismo.

 

Gracias! 

+1
0
-1
Imagen de yuyul
+1
0
-1

Bueno me alegro que ya vaya funcionando,  .

 El tema de la espera, pues lo mejor que haces es con sleep, lo que puedes hacer es que si en x comprobaciones no hace ningun movimiento, dar al otro jugador como ganador o algo así.

 Yo no he tocado nada de ajax, he leido cosas por ahi, pero aun no me he puesto. Ya se a quien preguntar cuando tenga algun problemilla, .

 Lo de recoger las cookies, creo que primero deberias crear una, miratelo en la web que te dijimos que lo explica de coña. Y sino quizas puedas utilizar una variable de sessión, cogiendo la ip o algo de cada jugador.

Estara guai verlo cuando lo tengas terminado, ya pasaras la url para echar unas partidillas, jejeje. 

+1
0
-1
Imagen de edalg
+1
0
-1

Sim

Tienes razon con lo dela IP i variabels de sseion pero puede haver un problema... supongo que al coger la IP me va a coger la IP local, es decir es muy probable que dos usuarios tengan por ejemplo la IP: 192.168.1.2.

 Nunca he trabajado con cookies no me molan.... pero weno la idea es haber si se puede pillar la ip  publica a internet.

 

+1
0
-1
Imagen de yuyul
+1
0
-1

Yo eso lo he echo, pero en ASP y me cogia la ip publica no la privada. Así que en principio no tendrias ningún problema, a no ser que dos usuarios en dos pc's diferentes pero que salgan por el mismo router, quieran jugar que entonces hay si que daria problemas.

 Otra solucion utilizar un random, y la ip. 

+1
0
-1
Imagen de edalg
+1
0
-1

<? $ip =$_SERVER[REMOTE_ADDR];

$aleatorio= $ip+rand(1,1000) ?>

Esta es mi idea. 

+1
0
-1
Imagen de edalg
+1
0
-1

Todo solucionado.

 

Ya he conseguido que entren en juego los jugadores que se retan!! ahora lo dificil! que se envien bien los tiros i cuando uno tire le envie el resultado al otro.

 

JOEEEEEEEEEEEEEE 

+1
0
-1
Imagen de kelp
+1
0
-1

A la sección adecuada, y te edito el mail. te animo a que te leas las normas del foro.

 


Equipo de moderadores del Foro
Normas

Mi Blog: Aceitunas sin hueso

 

+1
0
-1

Las tres cosas más peligrosas del mundo son: un programador con un soldador, un ingeniero de hardware con un parche de software y un usuario con una idea

Imagen de betao
+1
0
-1

Utiliza un applet con JDBC o RMI.

+1
0
-1