Foros del Web » Programando para Internet » PHP »

Tablas en Php

Estas en el tema de Tablas en Php en el foro de PHP en Foros del Web. Hola,miren,tengo una tabla que se llama usuarios,ahí van los datos de los usuarios cuando se registran y los dejan,el problema es que...cómo puedo hacer yo,para ...
  #1 (permalink)  
Antiguo 24/05/2005, 14:04
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Tablas en Php

Hola,miren,tengo una tabla que se llama usuarios,ahí van los datos de los usuarios cuando se registran y los dejan,el problema es que...cómo puedo hacer yo,para qué,les explico...
Quiero que los usuarios elijan un nombre para su equipo,y ese dato del nombre vaya a una tabla que se llame "equipos",en esa tabla quiero que se incorporen todos los datos del equipo,se entiende más o menos eso?
Bueno,pero más allá de eso,mi punto es,que necesitaría que en otras tablas,por ejemplo,en una tabla que se llame "Jugadores",ahí quiero que vayan:un nombre,id,apellido,edad,y 8 HABILIDADES (quiero que cada jugador tenga 8 habilidades,se entiende?) Bueno,ahora les quiero contar,qué quisiera que los datos de los jugadores se repartan al azar,se entiende? quiero que se reparta el nombre,el apellido,la edad,y (esto es lo más importante) quiero que cada habilidad,se reparta al azar "niveles",osea, quiero que existan más o menos, 20 niveles,que se repartan en los jugadores y con cada habilidad...no se si me explico bien...


La cosa es que cada jugador tenga en las habilidades,un nivel al azar,una edad al azar(por ejemplo,que tenga 20 años uno,y el otro que tenga 34) y el nombre y el apellido tambien al azar,como (Juan Lopez) se entiende?

Cómo se puede hacer para que todo vaya randomizandose...pero otro punto que tendría que aclarar,es que en los "niveles" va en forma ascendente a la importancia,(ej:el 2 tiene más valor que el 1,pero el 3 tiene más que el 2,y haci sucesivamente hasta el 20,que es el nivel con más importancia,o más valor)...

Sé que no es cosa fácil,pero necesitaría que esos datos de jugadores,osea cada jugador vaya para cada equipo,osea,quiero que 20 jugadores de esa tabla,se vayan a 1 equipo...y de esa forma,el equipo tiene esos jugadores que los puede hacer jugar en un partido contra,otro equipo,y ahí,depende de los niveles que tenga en cada habilidad cada jugador,que gane el que tenga mejor equipo...se entiende?

Me pueden ayudar a hacerllo? muchísimas gracias,y disculpen las molestias...
  #2 (permalink)  
Antiguo 24/05/2005, 16:46
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 7 meses
Puntos: 1
Pues si me he enterado bien....puedes hacer esto.
Supongamos que tienes unos cuantos arrays con los datos a distribuir, por ejemplo:
nombres = {paco, pepe, david, fernando}
apellidos = {perez, martin, brown, gomez, gonzalez}
Es decir, por cada campo a randomizar como dices, un array con los posibles valores. Simplemente utiliza la función rand de php para escoger un índice en cada array:
Código PHP:
for(...) { // Una iteración por cada registro de la tabla
 
$nombre nombres[rand(0count(nombres)-1)];
 
$apellido apellidos[rand(0count(apellidos)-1)];
 
// Y el resto de campos

rand(min, max) genera un número aleatorio entre min y max (inclusive), así que queremos un número entre 0 y el tamaño de cada array menos uno.
__________________
Mi página personal: Julián Urbano
  #3 (permalink)  
Antiguo 24/05/2005, 18:35
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Muy bien,gracias...pero cómo hago para probarlo,osea,eso q vos pones lo pongo a continuación de la consulta a la base de datos,a qué tablas? es decir,cómo puse en mi primer mensaje,la cosa es que una tabla requiere de la otra,y haci...como hago para que el usuario elija un nombre del equipo...y haci,esos jugadores se repartan en ese equipo,y todo eso? me pueden dar una explicación compleja,va...si no es problema...

Gracias =,fue útil la informacion...pero tengo otra duda los nombres nombres = {paco, pepe, david, fernando}
apellidos = {perez, martin, brown, gomez, gonzalez}
todo eso...cómo lo pones? cómo una variable para luego insertar de a 1 nombre,en la tabla "jugadores",sé que es algo complejo,por eso escribo acá...please,ayudenme..
Pero fijense bien,en mi primer mensaje lo que puse...
  #4 (permalink)  
Antiguo 24/05/2005, 18:51
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 7 meses
Puntos: 1
Si te he entendido bien, quieres que el usuario cree un equipo con unos datos, creándose un registro nuevo en la tabla EQUIPOS. Y luego meter sus jugadores aleatoriamente en la tabla JUGADORES. Pues bien, una vez que tienes el registro creado en la tabla de equipos, identificado por un campo, pongamos que se llama ID, haces esto:
Código PHP:
$nombres = array("pepe""juan""paco""ruben"); // Estos serán los nombres posibles para los jugadores
$apellidos = array("gomez""gonzalez""garcia""martin"); // Estos los apellidos posibles
$edades = array(1820213034); // Estas son las edades
// Debes tener un array como los anteriores por cada campo randomizable, con todos los valores posibles
// Y ahora debes hacer un bucle de 20 iteraciones para meter 20 jugadores aleatorios en la tabla JUGADORES que pertenezcan al equipo ID
for($i 0$i 20$i++){
  
$nombre $nombres[rand(0count($nombres)-1)];
  
$apellido $apellidos[rand(0count($nombres)-1)];
  
$edad $edades[rand(0count($edades)-1)];
  
mysql_query("insert into jugadores values($id, $i, '$nombre', '$apellido', $edad");

El resto de campos serán los que quieras ponerle, pero con esto te harás una idea. He supuesto que la tabla jugadores es de esta forma:
Código:
create table jugadores(
  equipo int not null,
  jugador int not null,
  nombre varchar(50) not null,
  apellido varchar(50) not null,
  edad int not null,
  primary key(equipo, jugador)
)
De esta forma cada registro jugador estará identificado por el par (equipo, jugador), que son respectivamente el identificador del equipo y el número de jugador.
Espero lo entiendas ahora
__________________
Mi página personal: Julián Urbano
  #5 (permalink)  
Antiguo 24/05/2005, 20:16
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Gracias,fue todo muchísimo más claro todo eso...pero te hago unas preguntitas mas...ahora que entiendo como se reparte eso aleatoriamente,cómo hago para mandar a los 20 jugadores diferentes a 1 equipo sin especificar,osea,no quiero especificar el equipo ID,que directamente,sume los 20 jugadores a los equipos enlistados...
No se si me explique bien,tambien quiero saber...cómo hago para que la edad de los jugadores suba 1 año,cada 12 meses...pero que todos cumplan el mismo dia,se entiende? en un mismo dia,que suban todos 1 año...eso se hace manual,o directamente se puede hacer con un sistema?
Otra cosa que no me quedo del todo claro,

mysql_query("insert into jugadores values($id, $i, '$nombre', '$apellido', $edad");
}

aca dice insert into jugadores,pero el nombre del equipo no está dentro de la tabla jugadores,quiero que esté en otra tabla que se llame,equipos...porque en esa tabla,van los datos de (cómo le fue en la liga,cómo esta ahora,el fixture,mmm,etc etc) me explico?

Otra preguntita,suponganse que yo tengo el archivo jugadores.php ,cómo hago para que cuando entre un usuario,y vaya a la seccion jugadores(de su equipo) directamente le reflejen los jugadores de su equipo?
Gracias
  #6 (permalink)  
Antiguo 24/05/2005, 20:30
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 7 meses
Puntos: 1
Saldu, acabo de leer tu post y veo que preguntas muchas cosas. Lo siento pero aquí en España (no sé de donde eres tú) son las 4:36 de la noche ya y tengo que dormir Pero te prometo que mañana a primera hora te respondo sin falta
__________________
Mi página personal: Julián Urbano
  #7 (permalink)  
Antiguo 25/05/2005, 03:55
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 7 meses
Puntos: 1
Lo prometido es deuda Vayamos por partes:

Cita:
cómo hago para mandar a los 20 jugadores diferentes a 1 equipo sin especificar,osea,no quiero especificar el equipo ID,que directamente,sume los 20 jugadores a los equipos enlistados...
Bueno, simplemente tendrás que poner un bucle por encima del que te puse yo, en el que vayas iterando sobre cada equipo. Supongamos que los tienes en la tabla EQUIPOS y que puedes recorrerlos como sigue:
Código PHP:
// Primero los arrays con los valores posibles, igual que antes
$nombres = array("pepe""juan""paco""ruben"); // Estos serán los nombres posibles para los jugadores
$apellidos = array("gomez""gonzalez""garcia""martin"); // Estos los apellidos posibles
$edades = array(1820213034); // Estas son las edades
// Debes tener un array como los anteriores por cada campo randomizable, con todos los valores posibles 

$res mysql_query("select id from equipos"); // Seleccionamos todos los equipos
while($row mysql_fetch_array($res)){
  
$id $row['id']; // Supondré que así se identifica a un equipo
  // A partir de aquí simplemente el código que ya te puse
  
for($i 0$i 20$i++){ 
    
$nombre $nombres[rand(0count($nombres)-1)]; 
    
$apellido $apellidos[rand(0count($nombres)-1)]; 
    
$edad $edades[rand(0count($edades)-1)]; 
    
mysql_query("insert into jugadores values($id, $i, '$nombre', '$apellido', $edad"); 
  }

De esta forma pondrás 20 jugadores por cada equipo que tengas en la tabla EQUIPOS.
Cita:
tambien quiero saber...cómo hago para que la edad de los jugadores suba 1 año,cada 12 meses...pero que todos cumplan el mismo dia,se entiende? en un mismo dia,que suban todos 1 año...eso se hace manual,o directamente se puede hacer con un sistema?
Personalmente, creo que la mejor opción para esto es hacerlo de forma automática, pero cuando tú lo digas. Es decir, que el día que tú quieras (el del cumpleaños de todos ) ejecutes un script y él sólo lo hará, pero sólo cuando tú lo digas.
Código PHP:
mysql_query("update table jugadores set edad=edad+1"); 
Mete esto en un script que llames, por ejemplo, birthday.php. El día que tú quieras, pon en tu navegador http://www.tusitio.com/birthday.php y todos los jugadores cumplirán años. Mejor opción es que lo pongas en algún sitio de administración que tengas preparado tú por ahí, para asegurarte de que sólo tú puedes hacerlo. Si no, tampoco es mucha molestia quitarlo del servidor y ponerlo sólo cuando lo vayas a usar.
La opción de que lo haga automático, incluso sin precisar tu ayuda, opino que es peor para algo que sólo se hace una vez al año, pues habría que comprobarlo cada vez que se muestre una página, y eso a todas luces no es eficiente.
Cita:
Otra cosa que no me quedo del todo claro,

mysql_query("insert into jugadores values($id, $i, '$nombre', '$apellido', $edad");
}

aca dice insert into jugadores,pero el nombre del equipo no está dentro de la tabla jugadores,quiero que esté en otra tabla que se llame,equipos...porque en esa tabla,van los datos de (cómo le fue en la liga,cómo esta ahora,el fixture,mmm,etc etc) me explico?
Te explicas . No sé si has trabajado antes con bases de datos, pero lo que tienes en la tabla jugadores es una clave foránea (foreign key) sobre la tabla equipos. En resumidas cuentas, para referenciar desde jugadores a un registro de la tabla equipo, como es el caso, has de copiar en la tabla jugadores todos los campos que identifiquen a ese registro de equipos. Tanto si es un simple identificador como en este caso, como si son 4 campos, has de copiarlos todos.
En efecto, en tu tabla de equipos puedes tener todo eso que dices, pero en jugadores debes poder identificar unívocamente a un equipo, para hacer que ese jugador sea de un sólo equipo, y así es como se hace. En la tabla equipos olvidé ponerte lo de la clave foránea, en verdad sería así:
Código:
create table jugadores(
  equipo int not null,
  jugador int not null,
  nombre varchar(50) not null,
  apellido varchar(50) not null,
  edad int not null,
  primary key(equipo, jugador),
  foreign key (equipo) references equipos (id) on delete cascade on update cascade
)
Cita:
Otra preguntita,suponganse que yo tengo el archivo jugadores.php ,cómo hago para que cuando entre un usuario,y vaya a la seccion jugadores(de su equipo) directamente le reflejen los jugadores de su equipo?
Bueno, simplemente debes hacer una consulta sobre los jugadores de ese equipo, y mostrarlos uno por uno en un bucle. Pero el problema es cómo saber qué equipo pertenece a ese usuario, y si puede tener varios. Supondré que cada usuario podrá tener varios equipos.
En este caso lo mejor es que metas en la tabla equipos un campo que sea usuario, y que recoja el nombre del usuairo propietario de ese equipo. Entonces, deberás hacer esto:
Código PHP:
// Primero haremos una consulta de los equipos de ese usuario
$res1 mysql_query("select * from equipos where usuario='$usuario'");
// Esta variable $usuario es el nombre del usuario, que se podrá guardar por sesiones, por ejemplo
while($row1 mysql_fetch_array($res1)){
  echo 
"<h2>Equipo ".$row1['nombre']."</h2><br>" // Por ejemplo
  
$res2 mysql_query("select * from jugadores where id = ".$row1['id']);
  while(
$row2 mysql_fetch_array($res2)){
    echo 
"Jugador ".$row2['i'].": ".$row2['nombre']." ".$row2['apellido']." ".$row2['edad']." años<br>"// Mostrar los campos que se quiera
  
}

Esto se puede hacer de otra forma con una sóla consulta pero es más complicado. Así lo entenderás mejor. En cuanto a lo de las sesiones, es una forma de mantener ciertas variables en el servidor mientras dure la sesion de navegación de ese cliente. No sé si sabrás lo que son, pero puedes mirarlo aquí http://www.forosdelweb.com/showthrea...992#post238992 http://www.forosdelweb.com/showthrea...543#post321543 http://www.forosdelweb.com/showpost....&postcount=129
Y creo que eso es todo, suerte
__________________
Mi página personal: Julián Urbano

Última edición por caerolus; 25/05/2005 a las 04:01
  #8 (permalink)  
Antiguo 25/05/2005, 04:32
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 7 meses
Puntos: 1
Acabo de ver tu mensaje privado ahora. Mi e-mail y mi messenger los puedes ver por aquí a través de mi perfil. Menudo tostón te he soltado jeje, pero bueno, yo creo que te respondo a todo
__________________
Mi página personal: Julián Urbano
  #9 (permalink)  
Antiguo 25/05/2005, 09:08
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Gracias,me ha quedado todo mucho más claro,pero algo que me quedo,tambien, supongamos que el usuario entrena al jugador,para qué suba en 8 semanas...cómo hago para que suba en 8 semanas automaticamente?

Y luego,el tema de los cumpleaños,el archivo birthday.php nada más pongo esto:

mysql_query("update table jugadores set edad=edad+1");


Supongamos que para que nadie entre,lo pongo entre unos directorios,osea http://localhost/cumpleaños/paraquen...r/birthday.php y en ese archivo va estar el query ese solo? osea,no pongo un include con un archivo que se llame conexion.php para la conexcion a la base de datos?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:09.