Autor Tema: [DUDA] Inventario en mysql  (Leído 1536 veces)

Desconectado Snead

  • PHPer@ Fijo
  • ***
  • Mensajes: 128
  • Karma: 2
  • Snead [Security;n'Design]
    • Ver Perfil
    • Diseño web
[DUDA] Inventario en mysql
« en: 06 de Diciembre de 2007, 16:46:30 pm »
Buenas phperos!

En la ruleta que seguramente han visto que he hecho, puedes tener y comprar objetos qe te serviran durante el juego. Pero yo para saber si el usuario tiene el objeto o no, pongo columnas en la tabla. Por ejemplo:

medalla 
plata
placa_donador 
si
objeto_X 
no

y asi voy sabiendo si tiene o no un objeto y si tiene de qe tipo es.
Pero quisiera que con solo una columna que se llame INVENTARIO ya esten todos los objetos, separados por comas. Se hacerlo, pero luego nose como hacer para agregar un objeto, cambiar un objeto o eliminar un objeto o tambien darle poderes a ese objeto.
Supongo que seria con explode() y con count(). Pero nose como usar. Gracias por su tiempo!

Snead :)

<? Snead (Security;n'Design); ?>

Comunidad PHPeros

[DUDA] Inventario en mysql
« en: 06 de Diciembre de 2007, 16:46:30 pm »

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: [DUDA] Inventario en mysql
« Respuesta #1 en: 06 de Diciembre de 2007, 17:19:37 pm »
Bueno me parece que te complicas mucho, yo te dire un ejemplo, que puede funcionar y te librara de muchas tareas, consiste en señalar los objetos por numeros.
Imaginamos que tenemos 6 objetos, esto señalaria que tiene los 6 objetos:
111111
Imaginemos que tiene el 1 y 2 objeto, el 3 no, y el resto si.
110111

Simplemente poniendo numeros a tu inventario te ahorras mucho esfuerza cambiando objetos, agregandolos y eliminandolos.
Por ejemplo, quieres agregar el objeto numero 3? Le sumas 10000 a ese campo, y ya lo tienes agregado.

Para comprobar si existe un objeto guardamos lo que nos devuelve la bd en la variable $invt por ejemplo.
Para comprobar si existe el objeto 3 seria asi:

if($invt{4} == 1) {
echo 
"Existe";
} else {
echo 
"No existe";
}


Como ves te ahorras mucho trabajo, y caracteres en la BD.

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Snead

  • PHPer@ Fijo
  • ***
  • Mensajes: 128
  • Karma: 2
  • Snead [Security;n'Design]
    • Ver Perfil
    • Diseño web
Re: [DUDA] Inventario en mysql
« Respuesta #2 en: 06 de Diciembre de 2007, 18:06:58 pm »
en $invt{4}
4 es el numero de ubicacion? osea si tenemos 11111 el 4 seria el qe esta en negrita?
que es $invt? que vendria a ser esa variable en el codigo?

<? Snead (Security;n'Design); ?>

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: [DUDA] Inventario en mysql
« Respuesta #3 en: 06 de Diciembre de 2007, 19:32:58 pm »
$invt contendria lo que extraes de la base de datos mediante un mysql_fetch_array o lo que sea, en este ejemplo extraemos 111111.
$invt{4} contendria el TERCER caracter (El caracter primero es el 0)

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Snead

  • PHPer@ Fijo
  • ***
  • Mensajes: 128
  • Karma: 2
  • Snead [Security;n'Design]
    • Ver Perfil
    • Diseño web
Re: [DUDA] Inventario en mysql
« Respuesta #4 en: 06 de Diciembre de 2007, 20:59:18 pm »
Entonces para qe sea el tercero tiene qe ser 2, no 4. o no?

Mira si tengo 11111, lo miramos vertical
1  -> en tabla 0
1  -> en tabla 1
1  -> en tabla 2  (ES EL TERCERO)
1  -> en tabla 3
1  -> en tabla 4


Otra duda. Puede ser asi?

<?
$invt=$fila[inventario];
if(
$invt{2}==1)
{
//TIENE OBJETO 3
}
else
{
//NO TIENE OBJETO 3
}
?>

????????????

Saludos =)
« Última modificación: 06 de Diciembre de 2007, 21:08:16 pm por Snead »

<? Snead (Security;n'Design); ?>

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: [DUDA] Inventario en mysql
« Respuesta #5 en: 06 de Diciembre de 2007, 21:18:51 pm »
Para que selecciones el 3 caracter tienes que escribir 2, tienes razón, error mio.
0 -> 1 caracter
1 -> 2 caracter
2 -> 3 caracter
3 -> 4 caracter
Y asi hasta el que quieras.

Si, creo que tu codigo puede funcionar asi bien.
Saludos
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Snead

  • PHPer@ Fijo
  • ***
  • Mensajes: 128
  • Karma: 2
  • Snead [Security;n'Design]
    • Ver Perfil
    • Diseño web
Re: [DUDA] Inventario en mysql
« Respuesta #6 en: 06 de Diciembre de 2007, 21:23:32 pm »
Muchisimas gracias, ya estoy actualizando la ruleta ahora mismo ;)

KARMA +!

MODIFICADO:

Otra duda, si yo al comprar objeto nuevo puedo poner asi?

if($objeto=="oro")
{
	

if(
$row[creditos]>$valor_oro)
{
$objetos="3$row[inventario]{1}" // para que qede 31 si tiene el objeto 2, o para que qede 30 si no lo tiene
mysql_query("UPDATE usuarios  SET creditos = &#39;$resta_oro&#39; WHERE usuario=&#39;$usuario&#39;");
mysql_query("UPDATE usuarios  SET inventario = &#39;$objetos&#39; WHERE usuario=&#39;$usuario&#39;");
}
}
« Última modificación: 06 de Diciembre de 2007, 21:32:17 pm por Snead »

<? Snead (Security;n'Design); ?>

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: [DUDA] Inventario en mysql
« Respuesta #7 en: 06 de Diciembre de 2007, 23:13:31 pm »
No entiendo muy bien para que necesitas eso de 30 o 31.
Suponiendo que tienes 6 objetos (111111 seria que tienes todos)
Si por ejemplo quieres eliminar el objeto numero 3 de su inventario, le restas 100 y quedaria asi: 111011
Al restarle 100, $objeto (o como sea) {3} seria 0, y significaria que no lo tiene.

Saludos
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Snead

  • PHPer@ Fijo
  • ***
  • Mensajes: 128
  • Karma: 2
  • Snead [Security;n'Design]
    • Ver Perfil
    • Diseño web
Re: [DUDA] Inventario en mysql
« Respuesta #8 en: 06 de Diciembre de 2007, 23:56:25 pm »
no lo habia pensado de ese modo, pero yo para las medallas no solo tomo si lo tiene o no lo tiene (1,0), yo tomo asi: si es 0 no tiene medalla, si es 1 medalla de bronce, si es 2 medalla de plata y si es 3 medalla de oro
. entonces no podria hacer lo que decis para comprar un objeto nuevo y dejar intacto el otro objeto
« Última modificación: 06 de Diciembre de 2007, 23:58:54 pm por Snead »

<? Snead (Security;n'Design); ?>

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: [DUDA] Inventario en mysql
« Respuesta #9 en: 07 de Diciembre de 2007, 09:21:54 am »
En ese caso, en lugar de tener 2 estados (1, 0) puede tener 4 estados sin ningun problema (0, 1, 2, 3)
Si le sumas 300 tendra la medalla de oro, si despues le restas 100 pasara a tener la medalla de plata, y si ahora le restas 200 pasara a no tener ninguna medalla.
Es lo bueno de este sistema, es muy flexible, y puede tener hasta 9 estados con cada objeto.

Saludos
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Snead

  • PHPer@ Fijo
  • ***
  • Mensajes: 128
  • Karma: 2
  • Snead [Security;n'Design]
    • Ver Perfil
    • Diseño web
Re: [DUDA] Inventario en mysql
« Respuesta #10 en: 07 de Diciembre de 2007, 16:37:26 pm »
Gracias TLX me ha servido mucho! www.laruelta.ar.gs (Lo pongo porq ya está expuesto en Diseños) :P
Pasate una vuelta TLX para ver como qedó ahora :P

<? Snead (Security;n'Design); ?>