Foros del Web » Programando para Internet » PHP »

Crear tablas desde php

Estas en el tema de Crear tablas desde php en el foro de PHP en Foros del Web. Hola! Me gustaria saber como hacer en php para crear tablas en una base de datos?, como hacen los instaladores de php, vbulletin o invision ...
  #1 (permalink)  
Antiguo 14/06/2007, 12:51
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Crear tablas desde php

Hola!

Me gustaria saber como hacer en php para crear tablas en una base de datos?, como hacen los instaladores de php, vbulletin o invision que te crean todo desde la interfaz web, como se logra eso?
  #2 (permalink)  
Antiguo 14/06/2007, 13:12
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Re: Crear tablas desde php

Sólo hay que cumplir 2 cosas.

1) Un usuario con los permisos necesarios para crear tablas
2) Enviar desde la aplicacion las sentencias adecuadas para crear una tabla

Ejemplo php.

Código PHP:
<?php
   
//conexion al servidor
   
mysql_connect("servidor","usuario","password");
   
//seleccionar la base de datos
   
mysql_select_db("nombre_bd");
   
//setencia sql para crear la tabla
   
$sql="create table prueba (id int, campo1 varchar(20))";
   
//ejecuto la sentencia
   
mysql_query($sql);
?>
  #3 (permalink)  
Antiguo 21/08/2007, 15:30
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Crear tablas desde php

Y de casualidad se puede crear (no solo tablas) sino también la bbdd entera?

Pregunto nomas...


saludos
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #4 (permalink)  
Antiguo 21/08/2007, 15:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Crear tablas desde php

Puedes usar el comando CREATE DATABASE `db_name` antes de mysql_select_db.

Saludos.
  #5 (permalink)  
Antiguo 21/08/2007, 17:18
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Crear tablas desde php

No entiendo porque este código tan sencillo no funciona

Código PHP:
<?php

//Conectarme a la BBDD
$dbh mysql_connect ("localhost""USUARIO""PASSWORD") or die ('Error al intentar establecer una conexión con la base de datos.' mysql_error());

$bbdd_create "CREATE DATABASE `nombre_bbdd`";
mysql_query($bbdd_create);

?>
No me da error ni nada, pero tampoco me crea la bbdd


A ver si alguien puede ayudarme

Saludos!
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #6 (permalink)  
Antiguo 21/08/2007, 17:34
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Crear tablas desde php

Tienes los permisos necesarios para crear una DB? Prueba poniendo el clasico or die(mysql_error()); al final del mysql_query() que crea la BD.
__________________
Sin Ideas
  #7 (permalink)  
Antiguo 21/08/2007, 19:14
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Crear tablas desde php

Cita:
Access denied for user 'usuario'@'localhost' to database 'nombre_bbdd'

no hay nada que pueda hacer?
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #8 (permalink)  
Antiguo 21/08/2007, 19:30
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Crear tablas desde php

Te dice que tienes el acceso negado.. mmh.. creo que lo que pasa es que creas la DB, pero no le asignas los permisos al usuario para poder usarla.. eso se hace con GRANT.. no he usado mucho eso, asi que ahi deberás investigar un poco mas o.o
__________________
Sin Ideas
  #9 (permalink)  
Antiguo 21/08/2007, 21:01
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 3 meses
Puntos: 5
Re: Crear tablas desde php

Hola:

También puedes usar la función mysql_create_db,
espero que te sirva.

Hasta Luego .-
  #10 (permalink)  
Antiguo 22/08/2007, 23:57
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Crear tablas desde php

Gracias a ambos, sobre la función PHP mysql_create_db, me da un error de que la función no existe (y de hecho en la documentación dice que es obsoleta, así que seguramente sea por eso).
Sobre GRANT, si bien no lo entendí del todo, supongo que si el problema fuera el que comentas oso96_2000, la bbdd se debería crear en el servidor, verdad?

Porque directamente no se crea nada

Alguna idea, o será que no hay solución
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #11 (permalink)  
Antiguo 23/08/2007, 02:38
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años
Puntos: 5
Re: Crear tablas desde php

yo utilizo phpMyadmin que te ahorrara miles de dolores de cabeza.
  #12 (permalink)  
Antiguo 23/08/2007, 04:12
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Crear tablas desde php

Cita:
Iniciado por ikarush Ver Mensaje
yo utilizo phpMyadmin que te ahorrara miles de dolores de cabeza.
Gracas ikarush, de hecho yo también utilizo phpMyadmin, el tema es que necesito un sistema que se instale mediante un install.php y necesitaba que este archivito creara BBDD, tablas, usuarios, etc, etc...

Gracias


alguna otra opinión / idea???
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #13 (permalink)  
Antiguo 23/08/2007, 08:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Crear tablas desde php

Si no te esta creando la base de datos es probable que el usuario sobre el que estas ejecutando no tenga permisos para crear bases de datos.

Saludos.
  #14 (permalink)  
Antiguo 23/08/2007, 08:33
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Crear tablas desde php

como puedo crear un usuario que si los tenga?
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #15 (permalink)  
Antiguo 23/08/2007, 08:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Crear tablas desde php

con el comando GRANT le das permisos especificos a cada usuario, pero si tu usuario sobre el que te conectas a la base de datos no tiene los permisos no vas a poder crear un usuario.

Lo mejor es entrar como root y darle GRANT al usuario que quieras que pueda crear bases de datos.

Saludos.
  #16 (permalink)  
Antiguo 26/08/2007, 03:28
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años
Puntos: 5
Re: Crear tablas desde php

Cita:
Iniciado por Anarninquë Ver Mensaje
Gracas ikarush, de hecho yo también utilizo phpMyadmin, el tema es que necesito un sistema que se instale mediante un install.php y necesitaba que este archivito creara BBDD, tablas, usuarios, etc, etc...
Gracias
alguna otra opinión / idea???
Desde phpMyAdmin puedes crear un usuario de la DB, y darle los permisos que quieras, si el Host no es tuyo, tendran que dartelos.
Ahora :

Si no recuerdo mal creas la base de datos con lo que quieras que haya dentro en phpmyadmin. le das a exportar DB, y te crea un archivo sql.

Para volver a crearla : metes ese sql en un mysql_query, y hale hop!

(Asi lo haria yo)
  #17 (permalink)  
Antiguo 07/12/2007, 11:55
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Crear tablas desde php

hola a tod@s:

este es el codigo que he puesto para crear una base de datos y su tabla:
<?php
define ("CONSTANTE", "HOLA MUNDO ");
PRINTF (CONSTANTE);

// DEFINIMOS
$basedatos = "my_db";
// conectamos
$link = mysql_pconnect("localhost","root","papapapa");
//comprobamos que si que hay c onexion
if (!$link)
{
echo "<BR><h2 align='center'>ERROR: IMPOSIBLE CONECTAR CON EL SERVIDOR</H2>";
exit;
}
// obtenemos una lista de las bases de datos del servidor
$db = mysql_list_dbs();
//vemos cuantas BD hay
$num_db=mysql_num_rows($db);
echo "<br>numero de bases de datos=".$num_db."<br><br><br>";

for ($m=0;$m<$num_db;$m++)
{
$nombre_bd = mysql_dbname($db,$m);
echo "\t".$nombre_bd."\t";
}

// creamos la database
$bbdd = mysql_query("CREATE DATABASE base2 ",$link);

ECHO "<BR> ESTA ES LA VARIABLE BBDD = ".$bbdd;

//creamos la tabla
$bd_base2 = mysql_select_db("base2");
echo "<br>conexion con la BD base2 = ".$bd_base2;

$tabla = "CREATE TABLE agenda (id int(1) NOT NULL, AUTO INCREMENT, nombre CHAR(50),PRIMARY KEY (id));";
echo "<br><br>esto es el contenido de la variable tabla = ".$tabla."<br>";

$sql = mysql_query( $tabla,$link);
echo "<br> esta es la variable sql de la creacion e la tabla = ".$sql;

?>
Y EL RESULTADO ES ÉSTE CON EL EXPLORADOR:

HOLA MUNDO
numero de bases de datos=7


information_schema libreria libreria2 mysql opiniones phpmyadmin test
ESTA ES LA VARIABLE BBDD = 1
conexion con la BD base2 = 1

esto es el contenido de la variable tabla = CREATE TABLE agenda (id int(1) NOT NULL, AUTO INCREMENT, nombre CHAR(50),PRIMARY KEY (id));

esta es la variable sql de la creacion e la tabla =


----------------------------------------------------------------------------------------------------

ME PODRÍAN USTEDES AYUDAR Y DECIRME POR QUÉ NO SE CREÓ LA TABLA?
SE LO AGRADECERÍA ETERNAMENTE, POR QUE ESTOY LLEGANDO A UN PUNTO QUE NO SÉ QUÉ CODIGO PONER YA....., MUCHAS GRACIAS.
salu2.
  #18 (permalink)  
Antiguo 07/12/2007, 12:06
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Crear tablas desde php

ay!!, se me olvidó decirles que sí que me creó la database pero no la tabla..
  #19 (permalink)  
Antiguo 07/12/2007, 12:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Crear tablas desde php

Cambia este comando:
Código PHP:
$sql mysql_query$tabla,$link); 
Por este:
Código PHP:
$sql mysql_query$tabla,$link) or die( mysql_error() ); 
Saludos.
  #20 (permalink)  
Antiguo 07/12/2007, 15:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Sonrisa Re: Crear tablas desde php

hola GatorV:
Primero que nada agradecerte infinitamente la "pestañita" que me has dejado por que funciona perfectamente, pero, con ese cambio y otros más . Me explico:
cuando cambié la el contenido de la variable $sql, me dijo que habia una error de sintaxis en la sentencia SQL, decia algo así como que debia de reviar la version del MYSQL Y no sé que cosas más, ...: Pues bien, lo qeu hice , y esto que sirva para los demás para que sepan que posiblemente la sentencia sql que yo habia introducido es , digamos , la genérica, pero que como todos nosotros sabemos, cada aplicacion tienes sus "pequeñas" variantes, como son las comillas simples, ..
Pues bien, como te decia, ví otra tabla que creé con el phpmyadmin , pulsando en el boton de "EXPORTAR" --> "Continuar" , y allí aparece la sintaxis SQL correcta de la tabla para, así, poder crear la tabla dentro de la base de datos.
Bueno, espero haberme explicado correctamente, pero tengo que decir que me siento muy ayudado y satisfecho con la ayuda que me has dado.
El pequeño consejito que he dado , seguramente ya lo sabias, pero he preferido ponerlo para que quien le ocurra algo similar , pueda "hechar mano" de esta ayuda.
muchas gracias GatorV,
seguiremos en contacto por aqui
Salu2.
  #21 (permalink)  
Antiguo 07/12/2007, 15:19
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Sonrisa Re: Crear tablas desde php

Ah!!, fifate GatorV, la sentencia era tal que así, para que veas los detalles:


$tabla = "CREATE TABLE `clientes2` ( `clientes-id` int(3) NOT NULL, `nombre` varchar(30) default NULL, `direccion` varchar(40) default NULL, `tlfono` varchar(10) default NULL, PRIMARY KEY (`clientes-id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;";


Y el resultado con el explorador fué el siguiente:

HOLA MUNDO
numero de bases de datos=7


information_schema libreria libreria2 mysql opiniones phpmyadmin test
ESTA ES LA VARIABLE BBDD = 1
conexion con la BD base2 = 1

esto es el contenido de la variable tabla = CREATE TABLE `clientes2` ( `clientes-id` int(3) NOT NULL, `nombre` varchar(30) default NULL, `direccion` varchar(40) default NULL, `tlfono` varchar(10) default NULL, PRIMARY KEY (`clientes-id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

esta es la variable sql de la creacion e la tabla = 1
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 00:16.