Foros del Web » Programando para Internet » PHP »

Dudas sobre variables y consultas con la BD

Estas en el tema de Dudas sobre variables y consultas con la BD en el foro de PHP en Foros del Web. Saludos, tengo este formulario que me sirve para introducir grupos musicales en la base de datos: form_inserta_grupo.php @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código php: Ver original <?php   ...
  #1 (permalink)  
Antiguo 17/10/2008, 14:02
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
Dudas sobre variables y consultas con la BD

Saludos,

tengo este formulario que me sirve para introducir grupos musicales en la base de datos:

form_inserta_grupo.php
Código php:
Ver original
  1. <?php
  2.  
  3. include ("header.php");
  4. include ("conectar.php");
  5.  
  6. ?>
  7.  
  8. <form name="form" action="insertagrupos.php" method="post">
  9. Nombre del grupo:
  10. <input name="nombre" type="text" size="20" /><br/><br/>
  11. Origen:
  12. <input name="origen" type="text" size="20" /><br/><br/>
  13. Estilo:
  14. <input name="estilo" type="text" size="15" /><br/><br/>
  15. Periodo de actividad:
  16. <input name="periodo_actividad" type="text" size="30" /><br/><br/>
  17. Discografica(s):
  18. <input name="discograficas" type="text" size="50" /><br/><br/>
  19. Sitioweb:
  20. <input name="sitioweb" type="text" size="20" /><br/><br/>
  21. Miembros actuales:<br/>
  22. <textarea rows="4" cols="25" align="top" name="miembros_actuales" type="text" size="100"></textarea><br/><br/>
  23. Miembros antiguos:<br/>
  24. <textarea rows="4" cols="25" align="top" name="miembros_antiguos" type="text" size="100"></textarea><br/><br/>
  25. Albums:<br/>
  26. <textarea rows="4" cols="25" align="top" name="albums" type="text" size="100"></textarea><br/><br/>
  27. <input name="Enviar" type="submit" value="Enviar" />
  28. </form>
  29.  
  30. <?php
  31.  
  32. include ("footer.php");
  33.  
  34. ?>

Y luego esto para introducirlo en la base de datos:

insertagrupos.php
Código php:
Ver original
  1. <?php
  2.  
  3. include ("header.php");
  4. include ("conectar.php");
  5.  
  6.  
  7. //Por si el servidor tiene desactivados los register globals----
  8. $nombre=$_POST['nombre'];
  9. $origen=$_POST['origen'];
  10. $estilo=$_POST['estilo'];
  11. $periodo_actividad=$_POST['periodo_actividad'];
  12. $discograficas=$_POST['discograficas'];
  13. $sitioweb=$_POST['sitioweb'];
  14. $miembros_actuales=$_POST['miembros_actuales'];
  15. $miembros_antiguos=$_POST['miembros_antiguos'];
  16. $albums=$_POST['albums'];
  17. //--------------------------------------------------------------
  18.  
  19.  
  20. $db="musicdai";
  21. mysql_select_db($db,$conectar);
  22.  
  23. $result = mysql_query("insert into grupos (nombre, origen, estilo, periodo_actividad, discograficas, sitioweb, miembros_actuales, miembros_antiguos, albums) values ('$nombre', '$origen', '$estilo', '$periodo_actividad', '$discograficas', '$sitioweb', '$miembros_actuales', '$miembros_antiguos', '$albums')", $conectar) or die ("error en ISERT: " .mysql_error());
  24.  
  25. echo "A insertado los siguientes datos:";
  26. echo "<br /><br />";
  27. echo "Nombre:$nombre";
  28. echo "<br />";
  29. echo "Origen:$origen";
  30. echo "<br />";
  31. echo "Estilo:$estilo";
  32. echo "<br />";
  33. echo "Periodo de actividad:$periodo_actividad";
  34. echo "<br />";
  35. echo "Discografica(s):$discograficas";
  36. echo "<br />";
  37. echo "Sitio web:$sitioweb";
  38. echo "<br />";
  39. echo "Miembros actuales:$miembros_actuales";
  40. echo "<br />";
  41. echo "Miembros antiguos:$miembros_antiguos";
  42. echo "<br />";
  43. echo "Albums:$albums";
  44. echo "<br /><br />";
  45. ?>
  46.  
  47. <a href="form_inserta_grupo.php">Volver a introducir un nuevo grupo.</a>
  48.  
  49. <?php
  50.  
  51. include ("footer.php");
  52.  
  53. ?>


Como se puede ver utilizo input y textarea para entrar los valores, que no sé si es lo más correcto para lo que yo quiero... Todo va perfectamente hasta aquí, pero lo que yo necessito es otra cosa, aver si me sé explicar.

Utilizo un text area para introducir los miembros de un grupo para que el usuario pueda introducir tantos como quiera, pero claro, eso es texto plano y luego se muestra como tal. Lo que necesito es que el usuario pueda introducir un miembro del grupo, y si desea, otro miembro, así sucesivamente... Para luego poderlos mostrar como algo parecido a:

- Miembro1: xxxxxx
- Miembro2: xxxxxx
- Miembro3: xxxxxx
- ...

No sé como plantearlo, solo se me ocurre ir creando registros en la base de datos del tipo: miembro1, miembro2, miembrox... Para así adaptarme a un numero variable de miembros pero no se si esto es possible...

Para mostrar la informacion sobre un grupo:

grupos.php
Código php:
Ver original
  1. <?php
  2.  
  3. include ("header.php");
  4. include ("conectar.php");
  5. ?>
  6.  
  7. <form name="form" action="buscachoches.php" method="post">
  8.  
  9. <?php
  10. $db="musicdai";
  11. mysql_select_db($db,$conectar);
  12.  
  13. //Por si el servidor tiene desactivados los register globals----
  14. $nombre=$_POST['nombre'];
  15. $origen=$_POST['origen'];
  16. $estilo=$_POST['estilo'];
  17. $periodo_actividad=$_POST['periodo_actividad'];
  18. $discograficas=$_POST['discograficas'];
  19. $sitioweb=$_POST['sitioweb'];
  20. $miembros_actuales=$_POST['miembros_actuales'];
  21. $miembros_antiguos=$_POST['miembros_antiguos'];
  22. $albums=$_POST['albums'];
  23. $id=$_GET['id'];
  24. //--------------------------------------------------------------
  25.  
  26.  
  27. $consulta = mysql_query("select * from grupos where id=$id", $conectar) or die ("error en SELECT: " .mysql_error());
  28.  
  29. while($row = mysql_fetch_array($consulta))
  30. {
  31. $id= $row["id"];
  32. $nombre= $row["nombre"];
  33. $origen= $row["origen"];
  34. $discograficas= $row["discograficas"];
  35. $periodo_actividad= $row["periodo_actividad"];
  36. $estilo= $row["estilo"];
  37. $sitioweb= $row["sitioweb"];
  38. $miembros_actuales= $row["miembros_actuales"];
  39. $miembros_antiguos= $row["miembors_antiguos"];
  40. $albums= $row["albums"];
  41.  
  42. echo "Nombre: $nombre";
  43. echo "<br /><br />";
  44. echo "Origen: $origen";
  45. echo "<br /><br />";
  46. echo "Estilo: $estilo";
  47. echo "<br /><br />";
  48. echo "Periodo de actividad: $periodo_actividad";
  49. echo "<br /><br />";
  50. echo "Discograficas: $discograficas";
  51. echo "<br /><br />";
  52. echo "Sitioweb: $sitioweb";
  53. echo "<br /><br />";
  54. echo "Miembros actuales: $miembros_actuales";
  55. echo "<br /><br />";
  56. echo "Miembros antiguos: $miembros_antiguos";
  57. echo "<br /><br />";
  58. echo "Albums: $albums";
  59. echo "<br /><br />";
  60. }
  61.  
  62. ?>
  63.  
  64. <a href="search.php">Volver a buscar</a>
  65.  
  66. <?php
  67.  
  68. include ("footer.php");
  69.  
  70. ?>

Creo que es necesario introducirlos en la base de datos como elementos separados para en un futuro poder listar, por ejemplo, todos los grupos en los que ha tocado cierto artista. Pero no veo muy bien como se relacionan tablas con phpmyadmin... aunque este ya es otro tema.

Lo mismo me ocurre con el textarea de Albums, donde realmente lo que desearia es guardar los albums de cada grupo para luego poderlos ver individualmente.

Espero explicarme bien, gracias de antemano.
  #2 (permalink)  
Antiguo 17/10/2008, 14:18
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Dudas sobre variables y consultas con la BD

Bueno creo que tu problema es con mysql.
Si tienes una tabla de artistas, podrias ingresar a esta la cantidad de artistas que desees y asi mismo consultarlos y mostrarlos como desees, lo que asocia esta a la tabla de los grupos sera el id del grupo precisamente que estara en las dos tablas y por la cual consultaras los miembros de l grupo especifico.

Por ejemplo:

tblGrupos
-------------
idGrupo
NombreGrupo


tblArtistas
---------------
idArtista
NombreArtista
idGrupo(este campo asocia las dos tablas)

Esto es un comienzo y según lo que logré entender, mil disculpas si no es tu duda.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 17/10/2008, 14:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Dudas sobre variables y consultas con la BD

Me has entendido bien.

Así que lo mejor sera separar la tabla artistas de la tabla grupos y tener dos tablas con las que trabajar. Es mucho más lójico pero me pierdo cuando trabajo con 2 o mas tablas.

Ya las tengo creadas tal y como has ejemplificado perfectamente. Ahora lo que no entiendo es como ineteractuo con las 2 tablas para crear un contenido conjunto. Es decir... idGrupo de tblGrupos es primaria, pero no se si hace falta que idGrupo de tblArtistas sea foranea ara poder relacionarlas, o simplemente con que este repetido el campo ya vale.

Ahora que estan listas... ¿como introduzco datos en ellas? Supongo que el codigo que procesa el formulario tendrá que ser un poco más complejo y realizar más de un simple INSERT de SQL, eso todavía creo que lo puedo entender...

Pero cuando quiera mostrar el grupo "Rolling Stones" y listar todos sus miembros, ¿como creo la relacion para que solo me muestre los artistas con la ID de de los rolling? Creo que sería algo parecido a esto... ¿no?

[hihglight=php]SELECT from artistas nombre WHERE idGrupo.tblGrupos=idGrupo.tblArtistas[/highlight]

Se que es simple... pero no tiro para alante..

Tampoco entiendo com cuando se introduce un grupo nuevo, se le dice a la tabla de artistas cual es la id que debe almacenar para estar relacionada con el artista que se está agregando en sese momento.
  #4 (permalink)  
Antiguo 17/10/2008, 14:59
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Dudas sobre variables y consultas con la BD

Creo que me he explicado fatal...

Lo que yo quiero es crear una pagina donde los usuarios puedan introducir bandas musicales y se guarde información sobre ellas. Ahora que me has dicho lo de separa las tablas he ideao un esquema de la base de datos que necesito para luego operar sobre ella.

tblGrupo:
--------------
- id_grupo
- nombre
- ano_creacion
- ano_fin


tblOrigen:
--------------
- pais
- ciudad
- id_grupo


tblEstilo:
--------------
- id_estilo
- nombre
- id_grupo


tblDiscograficas:
----------------------
- id_discografica
- nombre
- id_grupo


tblArtistas:
-------------------
- id_artista
- nombre
- id_grupo


tblAlbums:
-------------------
- id_album
- nombre
- fecha_lanzamiento
- id_grupo


Creo que esto sería perfecto para empezar... luego ya lo ampliaría. Tengo las tablas creadas y todo. ¿ESTAN CORRECTAMENTE DISEÑADAS? Me refiero a que si estan bien relacionadas entre ellas, y me pueden servir para empezar...

Quizás me falte algun id, o me sobre...

Gracias de antemano
  #5 (permalink)  
Antiguo 17/10/2008, 15:07
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Dudas sobre variables y consultas con la BD

No importa... me he liado un poco.

Publicare otro post exponiendo la duda de nuevo y de manera mas sencilla...

Gracias
  #6 (permalink)  
Antiguo 17/10/2008, 15:54
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Dudas sobre variables y consultas con la BD

OK, disculpa por la demora.
Estas bien, solo que no sabes como accesar a las dos tablas.

Te diré por ejemplo.
Si vas a ingresar un nuevo grupo solo lo ingrasas en la tblGrupos, en las de artistas no haces nada.
Cuendo ingreses artistas a dicho grupo, lo debes guardar en la tabla de artistas con el id del grupo al que deseas asociarlo.
Cuando desees seleccionar todos los artistas de un grupo debes tener su id,

Select nombre from tblArtistas where id_grupo=Aqui_va_el_id_del_grupo_que_quieres;

Así de simple, no te compliques mucho. No es tan complejo.

Lo mismo con las otras tablas que estan relacionadas con otras
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #7 (permalink)  
Antiguo 18/10/2008, 09:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Dudas sobre variables y consultas con la BD

Bien, hasta aquí todo perfecto, entiendo perfectamente lo que me dices.

Mi único problema es al agregar por ejemplo artistas. Para saber de que grupo son les pongo la id del grupo al que pertenecen, bien. ¿Pero como hago para agregar por ejemplo 3 artistas de golpe?

Si tengo este formulario...

Introducir artistas del grupo:
-----------------------------------------
Miembro1: xxxxxxxxx
Miembro2: xxxxxxxxx
Miembro3: xxxxxxxxx
Miembro4: xxxxxxxxx
-----------------------------------------

Hasta aquí todo bien si el grupo tiene 4 miembros... pero si tiene 3 se guardará un registro vacio y si tiene 5 no podrá introducirse.

¿Como puedo solucionarlo? ¿Creando un formulario dinamico?
  #8 (permalink)  
Antiguo 18/10/2008, 09:57
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Dudas sobre variables y consultas con la BD

Podrias crear un formulario que capture un solo miembro, y que tenga dos botones submit uno dirá guardar y agregar más y el otro agregar y terminar. Los datos los guardas con ajax o con php como quieras, la diferencia entre los botones será la acción despúes de hacer el insert.
Si es agregar más, retornas a la pagina del form, si el terminar, lo direccionas a una pagina presentando los datos de la banda que acabas de ingresar.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #9 (permalink)  
Antiguo 18/10/2008, 10:27
 
Fecha de Ingreso: abril-2008
Mensajes: 144
Antigüedad: 16 años
Puntos: 1
Respuesta: Dudas sobre variables y consultas con la BD

porque no guardar los artistas en un array y luego utilizas una consulta "sql in" para listar a medida que te los van entrando, osea si solo entran 1 artista array=1, luego 2 artistas array=2 etc...

i la consulta seria algo asi como:

select * from etc. where artistas IN ( arraycreado)

es eso? lo que querias??

saludos.
  #10 (permalink)  
Antiguo 18/10/2008, 11:59
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Dudas sobre variables y consultas con la BD

bellleti por tu epxlicacion parece que si que es esto lo que quiero... pero no acabo de comprenderte.
  #11 (permalink)  
Antiguo 18/10/2008, 12:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Dudas sobre variables y consultas con la BD

lee acerca de la sintaxis de IN en sql....
(ve a la pagina oficial de MySQL si tienes dudas)

de acuerdo a eso, debería resultarte algo así..

Código:
... WHERE id IN(1,3,5,7,9) ...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 10:43.