Foros del Web » Programando para Internet » PHP »

como crear una nueva tabla en mysql desde un formulario

Estas en el tema de como crear una nueva tabla en mysql desde un formulario en el foro de PHP en Foros del Web. Hola que tal, soy algo nuevo en la programación en PHP, y necesito crear una nueva tabla en mi BD de MySql, a partir de ...
  #1 (permalink)  
Antiguo 26/09/2012, 10:16
 
Fecha de Ingreso: septiembre-2012
Ubicación: Mexico
Mensajes: 58
Antigüedad: 11 años, 7 meses
Puntos: 2
Pregunta como crear una nueva tabla en mysql desde un formulario

Hola que tal, soy algo nuevo en la programación en PHP, y necesito crear una nueva tabla en mi BD de MySql, a partir de un formulario en cual se ingresa en nombre de la nueva tabla y un par de campos mas en los cuales serán añadidos por DEFAULT a campos específicos en mi tabla.

Aquí les dejo mi código para que lo chequen:

Código HTML:
Ver original
  1.     <head>
  2.         <title> Nueva Subred </title>
  3.     </head>
  4.    
  5.     <body>
  6.         <h1> Añadir nueva subred </h1>
  7.         <form method="POST" action="registro.php"/>
  8.            
  9.             <table>
  10.                 <tr>
  11.                     <td>
  12.                     <b>Nombre de la nueva Subred:  </b>
  13.                     </td>
  14.                     <td>
  15.                     <input type="text" name="nc_trabajo">
  16.                     </td>
  17.                 </tr>
  18.                
  19.                 <tr>
  20.                     <td>
  21.                     <b>Escriba un sub-nombre para la nueva Subred:  </b>
  22.                     </td>
  23.                     <td>
  24.                     <input type="text" name="table_name">
  25.                     </td>
  26.                 </tr>  
  27.                
  28.                 <tr>
  29.                     <td>
  30.                     <b>Escriba el segmento de direcciones:  </b>
  31.                     </td>
  32.                     <td>
  33.                     <input type="text" name="newSeg">
  34.                     </td>
  35.                 </tr>
  36.                
  37.             </table>
  38.            
  39.             <input type="submit" name="submit" value="Registrar"/> <input type="reset"/>
  40.         </form>
  41.        
  42.         <?php
  43.             if(isset($_POST['submit'])){
  44.                 require("registro.php");
  45.             }
  46.        
  47.         ?>
  48.         </form>
  49.        
  50.     </body>
  51. </html>

Y este es archivo que hace la consulta a MySql, para crear la nueva tabla:

Código PHP:
Ver original
  1. <?php
  2.    
  3.     $c_trabajo = $_POST['nc_trabajo'];
  4.     $table_name = $_POST['table_name'];
  5.     $segmento   = $_POST['newSeg'];
  6.        
  7.         $con = mysql_connect("localhost", "root", "");
  8.        
  9.         if (!$con)
  10.         {
  11.             die('No se pudo conectar a la BD: ' . mysql_error());
  12.         }
  13.  
  14.         $bd = mysql_select_db("cfe", $con);
  15.            
  16.             $tabla = "CREATE TABLE $table_name(
  17.                                     dir VARCHAR (25) DEFAULT $segmento,
  18.                                     ip INT (10) AUTO_INCREMENT,
  19.                                     c_trabajo VARCHAR (25) DEFAULT $c_trabajo,
  20.                                     equipo VARCHAR (25),
  21.                                     user VARCHAR (25),
  22.                                     puesto VARCHAR (25),
  23.                                     state VARCHAR (15) DEFAULT 'No Asignada')";
  24.            
  25.             $query = mysql_query($tabla,$con) or die ("Error:" .mysql_error());
  26.            
  27.             mysql_close($con);
  28.             echo 'Se ha creado la nueva Subred con exito!';
  29.            
  30. ?>

El error que me envia es el siguiente:

Error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.90., ip INT (10) AUTO_INCREMENT, c_trabajo VARCHAR (25) DE' at line 2

Lo e intendado resolver, pero no consigo solucionarlo..

Alguien que pueda ayudarme!!
  #2 (permalink)  
Antiguo 26/09/2012, 10:21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: como crear una nueva tabla en mysql desde un formulario

Ese error es de mysql primero intenta crearla desde el motor de la bd.

Prueba imprimiendo el sql con un echo y ver como lo estas haciendo.
esa variable $segmento que esta mandando a partir de ahi te parece el error de sintaxis.
  #3 (permalink)  
Antiguo 26/09/2012, 10:36
 
Fecha de Ingreso: septiembre-2012
Ubicación: Mexico
Mensajes: 58
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: como crear una nueva tabla en mysql desde un formulario

Que tal maxpower2008, desde phpMyAdmin se crea sin ningún problema, pero lo que necesito es que el usuario la cree desde el formulario.

la variable $segmento, la he cambiado y sigue dando el mismo problema.
  #4 (permalink)  
Antiguo 26/09/2012, 10:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: como crear una nueva tabla en mysql desde un formulario

Cita:
Iniciado por Mauk Ver Mensaje
Que tal maxpower2008, desde phpMyAdmin se crea sin ningún problema, pero lo que necesito es que el usuario la cree desde el formulario.

la variable $segmento, la he cambiado y sigue dando el mismo problema.
prueba imprimiendo el sql que mandas para ver si lo estas mandando bien.
echo $tabla haber que te imprime.
  #5 (permalink)  
Antiguo 26/09/2012, 10:48
 
Fecha de Ingreso: septiembre-2012
Ubicación: Mexico
Mensajes: 58
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: como crear una nueva tabla en mysql desde un formulario

Esto es lo que me mando al imprimir echo $tabla, las letras en negritas corresponden a lo que se escribio en el formulario para la creacion de la tabla:

CREATE TABLE ag_ejemplo( dir VARCHAR (25) DEFAULT 10.12.90., ip INT (10) AUTO_INCREMENT, c_trabajo VARCHAR (25) DEFAULT Agencia ejemplo, equipo VARCHAR (25), user VARCHAR (25), puesto VARCHAR (25), state VARCHAR (15) DEFAULT 'No Asignada')

Error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.90., ip INT (10) AUTO_INCREMENT, c_trabajo VARCHAR (25) DE' at line 2
  #6 (permalink)  
Antiguo 26/09/2012, 11:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: como crear una nueva tabla en mysql desde un formulario

ese valor por default debe ir entre comillas simples ya q el campo es tipo varchar.
  #7 (permalink)  
Antiguo 26/09/2012, 11:03
 
Fecha de Ingreso: septiembre-2012
Ubicación: Mexico
Mensajes: 58
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: como crear una nueva tabla en mysql desde un formulario

Cita:
Iniciado por maxpower2008 Ver Mensaje
prueba imprimiendo el sql que mandas para ver si lo estas mandando bien.
echo $tabla haber que te imprime.
Esto es lo que me mando al imprimir echo $tabla, las letras en negritas corresponden a lo que se escribio en el formulario para la creacion de la tabla:

CREATE TABLE ag_ejemplo( dir VARCHAR (25) DEFAULT 10.12.90., ip INT (10) AUTO_INCREMENT, c_trabajo VARCHAR (25) DEFAULT Agencia ejemplo, equipo VARCHAR (25), user VARCHAR (25), puesto VARCHAR (25), state VARCHAR (15) DEFAULT 'No Asignada')

Error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.90., ip INT (10) AUTO_INCREMENT, c_trabajo VARCHAR (25) DE' at line 2
  #8 (permalink)  
Antiguo 26/09/2012, 11:09
 
Fecha de Ingreso: septiembre-2012
Ubicación: Mexico
Mensajes: 58
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: como crear una nueva tabla en mysql desde un formulario

Cita:
Iniciado por maxpower2008 Ver Mensaje
ese valor por default debe ir entre comillas simples ya q el campo es tipo varchar.
Entonces seria así: las variables DEFAULT '$seg' y '$c_trabajo' entre comillas simples, he modificado el codigo y ahora me manda el siguiente error:

CREATE TABLE ag_ejemplo( dir VARCHAR (25) DEFAULT '10.12.90.', ip INT AUTO_INCREMENT, c_trabajo VARCHAR (25) DEFAULT 'Agencia ejemplo', equipo VARCHAR (25), user VARCHAR (25), puesto VARCHAR (25), state VARCHAR (15) DEFAULT 'No Asignada')

Error:Incorrect table definition; there can be only one auto column and it must be defined as a key
  #9 (permalink)  
Antiguo 26/09/2012, 11:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: como crear una nueva tabla en mysql desde un formulario

Partamos de la base que crear tablas dinamicamente n una base es un claro ejemplo de malas prácticas. Hacerlo así implica que tarde o temprano pierdas el control de la base, y más aún de las consultas.
Las bases de datos son estructuras fijas que no se modifican si no es por razones de sistema bien fundamentadas.
Y si la idea es que cada usuario tenga una base, eso es un error mayor aún. No se necesita eso, sno una base correctamente diseñada.
¿O crees que Twitter, Facebook o incluso las empresas internacionales hacen algo como eso?
No. Una sola estructura de base, correctamente diseñada, y distribuida eficientemente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: formulario, mysql, tabla
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 15:23.