• Domingo 17 de Noviembre de 2024, 18:36

Autor Tema:  INSERT desde php  (Leído 3218 veces)

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
INSERT desde php
« en: Miércoles 16 de Diciembre de 2009, 21:42 »
0
Hola gente...

les pido una ayuda para hacer un INSERT INTO desde php
en la tabla que necesito incertar es en esta-




estoy intentando incertar desde un formulario los datos.. el tema que nose como es es por ejemplo en el caso de la columna de la tabla id_autor tiene un valor numero ya qu nombre del autor esta en otra tablar (autores)  lo que voy a ingresar en el formularia es texto como hago con esto? me pasa lo mismo que en la columna id_compania

el codigo que estoy usando para agregar este registro es este

Código: PHP
  1. <?php
  2. @ $sd=mysql_pconnect("localhost","root",""); // conecta a mysql
  3. if (!$sd)
  4. {
  5. echo "Error al conecta con mysql";
  6. }
  7.  
  8.  
  9. mysql_select_db("discos");
  10.  
  11. // convierto en variables mas simples las del FORMULARIO
  12. $a=trim($_POST['autor']);
  13. $t=trim($_POST['titulo']);
  14. $c=trim($_POST['compania']);
  15.  
  16.  
  17. $query= "insert into discos values('".null."', '".$a."', '".$c."', '".$t."')";
  18. //echo $query;
  19. $result=(mysql_query($query);
  20.  
  21.  
  22. if ($result)
  23. {
  24. echo mysql_affected_rows ()."Registro introducido en la base de datos";
  25. }
  26. echo "<br>";
  27. echo "<a href='nuevo_registro.php'>carga un autor nuevo</a>";
  28.  
  29.  
  30.  
  31. ?>
  32.  
  33. <html>
  34. <head>
  35. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  36. <title>ADD registro</title>
  37. </head>
  38.  
  39. <body>
  40. <FORM method="post" action="nuevo_registro.php">
  41. <table width="70%"  border="3" cellspacing="1" cellpadding="1">
  42.   <tr>
  43.     <td>Autor</td>
  44.     <td> <input type="text" name="autor"></td>
  45.   </tr>
  46.   <tr>
  47.     <td>Titulo del Disco</td>
  48.     <td><input type="text" name="compania"></td>
  49.   </tr>
  50.   <tr>
  51.     <td>Compania</td>
  52.     <td><input type="text" name="titulo"></td>
  53.   </tr>
  54.   <tr>
  55.     <td colspan="2" align="center"><input type="submit" name="cargar" value="submit"> </td>
  56.   </tr>
  57. </table>
  58. </FORM>
  59.  
  60.  
  61. </body>
  62. </html>
  63.  
  64.  


sus ayudas desde ya mil gracias

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: INSERT desde php
« Respuesta #1 en: Miércoles 16 de Diciembre de 2009, 23:51 »
0
Te tocará buscar el id_autor y id_compania por separado, me temo. Aunque yo lo habría hecho distinto desde un principio. En vez de hacer que el visitante escriba el nombre de cada cosa (excepto el título_disco) le pondría dos <select> para que elija entre los ya existentes.

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: INSERT desde php
« Respuesta #2 en: Jueves 17 de Diciembre de 2009, 00:19 »
0
gracias por la respuesta amigo...

exacto esa era la idea inicial hacer un combo o menu desplegable select pero no lo pude hacer no me salio por eso opte por hacerlo asi crei podia ser mas facil...
pero otra cosa por mas que hago un select en el INSERT (el SQL) que hice como tendria que hacer ese sql INSERT para un menu desplegable? igualmente todavia tengo la duda por que lo que quiero hacer no es una busqueda de los AUTORES ya existenntes en base de datos. lo que busco hacer es agregar nuevos autores a la DB.

QUE OTRA MANO ME PODES DAR...

gracias desde ya
Saludos.

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: INSERT desde php
« Respuesta #3 en: Jueves 17 de Diciembre de 2009, 06:43 »
0
si quieres hacer lo de los Select puedes hacer algo como esto:

Código: PHP
  1.  
  2. <?php
  3. //Aqui codigo para la conexion a la db ...
  4. //...
  5. //...
  6.  
  7. //La consulta a la DB
  8. $query = mysql_query(SELECT nombre,id FROM autores WHERE 1);
  9. ?>
  10. <select name="autores">
  11. <?php
  12. while ($row = mysql_fetch_assoc($query)) {
  13. ?>
  14.     <option value="<?php echo $row['id'];?>"><?php echo $row['nombre'];?></option>
  15. <?php
  16. }
  17. ?>
  18. </select>
  19.  
  20.  

suponiendo que en la tabla autores el campo que identifica se llama id y el nombre del autor es nombre.

No he probado el código pero debería funcionar, claro que tienes que adornarlo un poco pero por lo menos es la base.

Lo otro, no se si entendí bien, pero dices que quieres agregar nuevos autores a la base de datos, no entiendo cual es el problema en esa situación, si pudieras explicarlo mejor.

saludos!

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: INSERT desde php
« Respuesta #4 en: Jueves 17 de Diciembre de 2009, 16:59 »
0
Al igual que locazopro no entiendo bien qué quieres hacer en realidad. En tu primer mensaje queda claro que lo que quieres es dar de alta un nuevo titulo_disco asociando a él, el id del autor y el id de la companía, ambos datos aportados por el visitante.

Ahora dices que quieres dar de alta nuevos autores. Son dos procesos separados y distintos. No puedo verlo de otra forma.

A menos que antes de hacer el INSERT a la tabla "discos" hagas dos SELECT para buscar si el autor y la compania que el usuario ha escrito existen en la base de datos, caso contrario dar de alta esos también, pero al hacerlo así terminarás, tarde o temprano con inconsistencia de datos. Imagina que el nombre del autor es Juan Perez, el visitante podría escribirlo como "Perez, Juan", "Peres, Juan", "Juan Peres", "J. Perez" etc..., para MySQL esos son nombres distintos aunque en realidad se refieran a la misma persona.

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: INSERT desde php
« Respuesta #5 en: Jueves 17 de Diciembre de 2009, 23:26 »
0
Gracias por las respuestas.. les comento.

la aplicacion que quiero haces es la siguiente se la muestro asi en su totalidad asi se entiende...

despues de buscar con un buscador que hice para la DB en la distentas tablas proceso esto



como se ve lo que estoy tratando de hacer es un simple ABM (les recuerdo estoy commenzado a estudiar programacion php mysql) tengo en esos resultados entonces arriba un link para dar de alta un nuevo registro eso es en la tabla "discos" despues quiero qu se pueda editar o borrar ese registro les muestro las tres tablas

AUTORES:



COMPANIA:



DISCOS:



Cuento antes que nada para crear un nuevo registro o editar o borrar lo estoy haciendo en tres archivos .php osea en distintos script me resulta mas facil de comprenderlo por ahora.

tienen toda la razon con lo de los 2 <select> para autor y para compania, dejemos el editar por ahora quiero hacer primero el poder cargar un ragistro nuevo
como dijeron en ese escript tendria que hacer los dos <select> y un cuadro de texto pata "titulo_disco" verdad? ahora esos <select> tienen que ser dinamicos y que muestren por ejemplo en la tabla autores todos los "nombre_autor" de la tabla no? eso o lo pude hacer ese lect dinamico no me salio me podran dar un mano con eso... teniendo en cuenta mis tablas reales.
despues si tendria que hacer un INSERT que carge los valores de las variables segun los autores y compania que se eligieron y el titulo_disco eso lo podria hacer creo...


despues otra cosa que intente pero no lo logre en el script de editar tendria que hacer 2 consultas SELECT * FROM autores y SELECT * FROM compania y otra vez hacer 2  <select> dicamicos que recuperen los valores que esten "selected" pero bueno estos  <select> tampoco los puedo hacer si me dan una mano con esto se los agradeciria muchisimoooo.''' lo que pasa es que realmente por ahora no comprendo como hacerlo me gustaria verlo asi veo el camino de como es realmente me estoy rompiendo la cabeza y no lo logro no es quiero  me lo hagan y yo ni lo intente vengo buscando ayuda por que no me sale es eso y estoy trabado en esto.

ya que hice mil hago mil una pregunta locazopro que hace concretamente la funcion mysql_fetch_assoc ?? yo vengo usando la mysql_fetch_array.

muchisimas gracias desde ya
Saludos.

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: INSERT desde php
« Respuesta #6 en: Viernes 18 de Diciembre de 2009, 01:08 »
0
Te voy a dar una mano con el script para crear un nuevo registro, ya los script para editar los haces tú.

Mira:

archivo:  ingresar.php
Código: PHP
  1.  
  2. <?php
  3. @$sd = mysql_pconnect("localhost", "root", ""); // conecta a mysql
  4. if (!$sd) {
  5.     echo "Error al conecta con mysql";
  6.     exit;
  7. }
  8.  
  9. mysql_select_db("discos");
  10.  
  11. //Verifico si el usuario a enviado el formulario
  12. if (isset($_POST['ingresar'])) {
  13.     $autor = mysql_real_escape_string($_POST['autores']);
  14.     $compania = mysql_real_escape_string($_POST['compania']);
  15.     $titulo = mysql_real_escape_string($_POST['titulo']);
  16.    
  17.     //Entonces ahora puedes ingresarlo a tu BD
  18.     $fquery = "INSERT INTO discos (id_autor,id_compania,titulo_disco) VALUES ($autor,$compania,$titulo)";
  19.    
  20.     if (!mysql_query($fquery)) {
  21.         die("No se ha podido ingresar el disco");
  22.     } else {
  23.         echo "Su disco ha sido ingresado exitosamente";
  24.     }
  25. } else { //sino, pues entonces despliego el formulario
  26.    
  27. ?>
  28. <form method="post" action="ingresar.php">
  29.     <p>
  30.     Seleccionar un autor:
  31.     <?php
  32.     //La consulta a la DB
  33.     $query = mysql_query(SELECT id_autores, nombre_autor FROM autores WHERE1);
  34.     echo "<select name="autores">";
  35.     while ($row = mysql_fetch_assoc($query)) {
  36.        
  37.     ?>
  38.     <option value="<?php echo $row['id_autores'];?>"><?php echo $row['nombre_autor']; ?></option>
  39.     <?php
  40.     }
  41.     ?>
  42.     </select>
  43. </p>
  44. <p>
  45. Seleccionar una compañia:
  46. <?php
  47. //La consulta a la DB
  48. $query = mysql_query(SELECT id_compania, nombre_compania FROM compania WHERE1);
  49. echo "<select name="compania">";
  50. while ($row = mysql_fetch_assoc($query)) {
  51.    
  52. ?>
  53. <option value="<?php echo $row['id_compania'];?>"><?php echo $row['nombre_compania']; ?></option>
  54. <?php
  55. }
  56. ?>
  57. </select>
  58. </p>
  59. <p>
  60.     Título del album:
  61.     <input type="text" name="titulo">
  62. </p>
  63. <input type="submit" name="ingresar" value="Insertar">
  64. </form>
  65. <?php
  66. }
  67. ?>
  68.  
  69.  

respecto a las funciones de php, puedes buscar lo que hacen directamente en la página de php, tienen una documentación muy bien detallada y completa.

Bueno, me dices si funciono el script, en realidad no lo he probado, quizás tenga errores de sintaxis o algo, pero ya me dices.

Espero te sirva. Saludos!

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: INSERT desde php
« Respuesta #7 en: Viernes 18 de Diciembre de 2009, 21:18 »
0
MUCHAS GRACIAS LOCAZO TE JUGASTE.. me sirvio mucho enserio ahora si por ahi puedo hasta buscar mi forma de hacer a lo que veo ahora por que pasos ahi que ir.. te cuento con tu script creo el combo desplegable pero no lo relleno con los "nombre_autor" que hay en la tabla autores.. raro no? es como que toma que la tabla esta basia o algo parecido.. faltara ver algun detalle no mas de por que no lo hace.. pero me has dado una mano gigante..

Te muestro como hice el select a mi modo o con lo que me resulta mas "familiar" despues de ver el tuyo...

Código: PHP
  1. <select name="autor">
  2.     <? $sql_autores="SELECT id_autores, nombre_autor FROM autores";
  3.         $result_aut= mysql_query($sql_autores);
  4.          $registros_aut= mysql_num_rows($result_aut);
  5.     for ($i=0; $i<$registros_aut; $i++)
  6.     {
  7.     $datos= mysql_fetch_array($result_aut);
  8.     ?>
  9.             <option value="<? echo $datos['id_autores']; ?>"> <? echo $datos['nombre_autor'];   ?> </option>
  10.             </select>
  11.     <? } // cierra el FOR
  12.      ?>
  13.  

nose si le ves algo en lo qu estoy errando de esta forma me hace lo mismo qu de tu script crea el select pero el combo o menu desplegable queda vasio
asi queda; (no hice todavia el de companias por eso no aparece el menu desplegable )



un saludo y gracias x el tiempo.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: INSERT desde php
« Respuesta #8 en: Sábado 19 de Diciembre de 2009, 00:01 »
0
¿Y la tabla en cuestión realmente está vacía?.

Por otro lado no uses for para recorrer los resultados del query, usa while tal como lo ha hecho locazopro.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: INSERT desde php
« Respuesta #9 en: Sábado 19 de Diciembre de 2009, 00:03 »
0
Off-topic: las imágenes que has querido mostrarnos, no aparecen, has escrito mal el hipervínculo.

cesand

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: INSERT desde php
« Respuesta #10 en: Sábado 19 de Diciembre de 2009, 01:30 »
0
La tabla tiene regiatros claro si, si. por eso es raro y no escuentro la falla.. por qu motivo no usar for para ver resultados de la query? para saber no mas.. entonces voy a ver de hacderlo con loop while. no me pasarian un link de donde descargar el maual ofial de php en español? dicen que se puede descargar de la pagina oficial en español pero no lo vi.. si tienen un link a mano les agradesco.

saludos gente.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: INSERT desde php
« Respuesta #11 en: Sábado 19 de Diciembre de 2009, 03:10 »
0
Si tienes problemas con el inglés puedes usar esta página: http://www.php-es.com/

Que no te muestre registros de una tabla que sí tiene registros debe ser porque la sentencia SQL está mal, no funciona como piensas que lo hace o bién el bucle de muestra está mal.