entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

siempre se otorga el 1* valor de la tabla

buenas, anteriormente publique porque tenia un problema en el cual los jugadores podian manipular con firebug o inspeccionar elemento los valores de los productos a la venta en mi web (gran error mio) y podian incluso comprarlos por valor $0, por lo cual pase todos los productos a una base de datos mysql y junto a php me quedo algo asi

el problema que estoy teniendo es que a pesar de que seleccione comprar a otro skin siempre me da el primero de todos

algo importante: si quito el return; que esta en el primer codigo que puse (el unico en todo el codigo) me deja comprar otro diferente sin que sea el ID 3, pero al querer comprar otro una proxima vez siempre me da el ultimo que compre, supongamos que compro el ID 4, bueno, las proximas veces que compre siempre me dara el 4, solo me dejo comprar uno diferente una vez sol

que podria hacer ante este caso?
gracias

2 Respuestas

2votos

Leonardo-Tadei Puntos227320

Hola @MikeNicholas,

tu problema está en una incorrecta comprensión de cómo se envían datos entre un scripts... recordá que aunque se trate diempre del mismo archivo, como cada vez que se ejecuta, el script corre desde el principio hasta el final y se remueve de memoria, el próximo click iniciará la ejecución siempre desde cero.

En este caso, estás haciendo bien la generación de los formularios con los botones de compra. Lo que no estás haciendo es usar el valor recibido en el formulario para saber a qué skin se hace referencia.

Del formulario de compra, recibís por POST el valor de "IDItem", pero luego no lo estás usando. Vos tenés en el functions PHP:

$sql_select = mysql_query("SELECT * FROM web_skins");
        while($web_skins = mysql_fetch_array($sql_select))
          if( isset( $_POST['BotonComprarSkin'] ) )
            {
            if( $web_skins['Precio'] <= $player['moneda'] )
            {
....

es decir, lees de nuevo todos los skins, en vez de usar el valor recibido para obtener el correcto.

Lo que tendrías que hacer en el functions.php es algo como:

$id_skin = $_POST['IDItem'];
$sql_select = mysql_query("SELECT * FROM web_skins WHERE ID=$id_item"); // trae un solo valor, así que no hay que recorrer nada
        $web_skins = mysql_fetch_array($sql_select); // porque es solo uno, lo asigno directamente.
          if( isset( $_POST['BotonComprarSkin'] ) )
            {
            if( $web_skins['Precio'] <= $player['moneda'] )
            {
....

A vos te daba siempre el primero, porque el bucle se ejecuta solo una vez ya que se termina con el return.

Saludos cordiales!

0voto

MikeNicholas comentado

tras modificar un poco el codigo incluyendo lo que me propusiste salio como lo esperaba, no lograba hacer bien la logica para obtener ese resultado, gracias, saludos

2votos

cobasESP Puntos19650

Te puedo recomendar hacer una cosita, En vez de comprar la skin a traves de un input de tipo submit, hazlo a traves de un a href, ya que eso lo cargas de la base de datos y sabes la id, asi por ejemplo el boton te quedaria asi:

<h href="comprarskin.php?id=3" class="tuclase">Comprar</a>

Usando php al cargar la lista de las skins montarias el link del href

echo '<a href="comprarskin.php'.$id_skin.'" clase="tuclase">Comprar</a>';

Yo lo haria asi, ya que el formulario que tu montas solo lo usas para acceder al php que compra la skin. Aun asi, tambien puedes usar ajax y jQuery para pasar los datos al php mediante post, si no quieres usar get.

espero que te sirva

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta