Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como doy Privilegios para crear tabla en base de Datos con PHP?

Estas en el tema de Como doy Privilegios para crear tabla en base de Datos con PHP? en el foro de Mysql en Foros del Web. Hola Estoy creando un sistema de administración de cientes, para cada cliente estoy creando una tabla dentro de la base de datos con PHP. en ...
  #1 (permalink)  
Antiguo 19/05/2011, 12:03
Avatar de jedidas  
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 14 años, 7 meses
Puntos: 0
Como doy Privilegios para crear tabla en base de Datos con PHP?

Hola Estoy creando un sistema de administración de cientes, para cada cliente estoy creando una tabla dentro de la base de datos con PHP. en mi PC funciona a la perfeccion pero al subir los archios al Hosting dejo de funcionar me da un mensaje de que no tengo privilegios este de aqui

" Error al crear nuevo cliente: Access denied for user 'viajeros_admin1'@'localhost' to database "

Aclaro en el Cpanel al crear el usuario le di todos los privilegios posibles, ahora ¿Como hago para que cree la nueva tabla sin errores? aqui esta el codigo:

Código PHP:

<?php
@$nom_cliente strtolower($_POST['cliente']);


if(isset(
$_POST['crear'])){
    
    if(empty(
$_POST['cliente'])){
        
$mensaje_1 'Escriba un nombre de usuario'.'<br>';
    }else{
    
if (
mysql_query("CREATE DATABASE IF NOT EXISTS clientes_panama"$clientes_a))  
  {  
  
$mensaje_1 'Nuevo cliente creado'.'<br>'
  
header('refresh:1; url=anadir_clientes.php');
 
///Eliminamos los espacios en blanco
@$nom_cliente = @str_replace(' ','',$nom_cliente);

/// Creo una lista de simbolos y elementos a  eliminar dentro de un arreglo
$simbolos =array('<','%',';',',','?','!','*','$','/','{','}','>','=','&','#','ñ','(',')','"','[',']',':','จ','ั','ว','^','ท','Ç','*','·',',','.');

///foreach significa para cada y se utuliza en las variables tipo matris
//para cada elemento de $simbolos que aya dentro de la variable sim
foreach($simbolos as $sim){

//poneos q $texto busque dentro de $texto y remplace los simboloes dentro de $sim y los remplace x un espacio en blanco
$nom_cliente = @str_replace($sim,'',$nom_cliente);

} ;


//Creación de la tabla categorías 
mysql_query("CREATE TABLE IF NOT EXISTS $nom_cliente(  
  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `nombre_user` varchar(60) NOT NULL,
  `titulo` varchar(60) NOT NULL,
  `estado` varchar(60) NOT NULL,
  `descripcion` text NOT NULL,
  `fecha` text NOT NULL,
  `control` enum('panama','clientes','agencia','administracion') NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2"
) or die(mysql_error()); 
 }  
else  
  {  
  
$mensaje_1 'Error al crear nuevo cliente: 'mysql_error();  
  }  
//Aquí sigues creando tablas 

    //cierro if
    
}
    
//cierro isset
    
}
?>
  #2 (permalink)  
Antiguo 19/05/2011, 12:12
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Como doy Privilegios para crear tabla en base de Datos con PHP?

¿Para añadir un cliente necesitas crear una base de datos?

Eso es raro en cualquier caso.

En cuanto al problema que te da, es de privilegios.
Para crear bases de datos es necesario tener unos más privilegios de los normales y debes indicárselo en la base de datos.

En el mysql_connect te conectas con un usuario y contraseña, a ese usuario debes darle los permisos de creación en la base de datos.

Aún así, estaría bien que explicases para que necesitas crear una base de datos al vuelo.
  #3 (permalink)  
Antiguo 19/05/2011, 12:32
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 doy Privilegios para crear tabla en base de Datos con PHP?

Hay muchas consideraciones, pero empecemos por una: Si no eres el root en el host, tus privilegios están limitados a los que el administrador del host te dio, y no puedes crear usuarios que tengan más privilegios de los que tu tienes. Es una regla general de los DBMS.
El problema también es que pareces haber subido el script con la conexión dirigida a "localhost", y esa muy probablemente no sea la IP o dirección del servidor a que debe conectarse en el host. El valor que debe llevar allí normalmente es el que el adminsitrador del hosting te indica. Pregúntales a ellos.
Por otro lado, por lo que pareces quieres crear dinámicamente una tabla para guardar los datos de un cliente.... eso es un error de diseño fundamental. Las bases de datos no deben ser alteradas de esa forma, sino que se diseñan para que funcionen en base a un esquema que se crea para el sistema que debe alimentar.
Si permites que se generen tantas tablas como clientes o usuarios, tarde o temprano perderás control de la estructura de la base, y a la hora de consolidar datos no podrás hacerlo. Las consultas pueden colapsar por generar JOINs infinitos o loops de lecturas completamente ineficientes.
¿Estás seguro de que el diseño de esa base lo estás planteando bien?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 19/05/2011, 12:37
Avatar de jedidas  
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Como doy Privilegios para crear tabla en base de Datos con PHP?

Cita:
Iniciado por alexg88 Ver Mensaje
¿Para añadir un cliente necesitas crear una base de datos?

Eso es raro en cualquier caso.

En cuanto al problema que te da, es de privilegios.
Para crear bases de datos es necesario tener unos más privilegios de los normales y debes indicárselo en la base de datos.

En el mysql_connect te conectas con un usuario y contraseña, a ese usuario debes darle los permisos de creación en la base de datos.

Aún así, estaría bien que explicases para que necesitas crear una base de datos al vuelo.
HOla Gracias por la rápida respuesta. Aclaro una cosa yo no soy un programador se poco la verdad así que me seria de mucha utilidad que me facilitaran el codigo.

En si ocupo crear una tabla por usuario para que dentro de esta tabla se puedan agregar y editar múltiples registros pensé que al ser muchos usuarios y muchos registros pos usuarios lo mejor era crear una tabla para cada uno y así agregar cuantos registros fueran necesarios.
  #5 (permalink)  
Antiguo 19/05/2011, 12:41
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Como doy Privilegios para crear tabla en base de Datos con PHP?

Pues no, es una idea malísima. No puedes crear una tabla por cada usuario porque entonces la base de datos se va a hacer gigantesca en nada y además no es la forma de hacer las cosas en bases de datos.

Si explicas que es lo que necesitas podemos echarte una mano, pero en realidad, deberías mirarte cosas sobre base de datos, porque si no vas a cometer muchos errores.
  #6 (permalink)  
Antiguo 19/05/2011, 12:49
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 doy Privilegios para crear tabla en base de Datos con PHP?

Darte código, no porque el código sólo te serviría si fuese para tu sistema, y si no lo conocemos o sabemos cómo es, mal podemos darte nada. Además el sentido del foro es aprender, no conseguir codigo fuente. Si quieres codigo fuente libre siempre puedes ir a otros sites, como los foros de PHP.Net, o bien CodeProject.
lo que sí podemos hacer es orientarte, pero lo que sea PHP te conviene preguntar en el Foro de PHP. Aquí trabajamos lo que sea BBDD y SQL.
Estoy de acuerdo con alexg88. Será mejor que leas y aprendas lo fundamental de Bases de Datos y SQL para no tener que inventar la rueda otra vez.
__________________
¿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: php, privilegios, 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 18:09.