Foros del Web » Programando para Internet » PHP »

¿leer el nombre de las tablas de mi BD y despues crear?

Estas en el tema de ¿leer el nombre de las tablas de mi BD y despues crear? en el foro de PHP en Foros del Web. Hola foro, estoy intentado hacer lo siguiente Es un input al que le voy a introducir un nombre y despues buscará en la Base de ...
  #1 (permalink)  
Antiguo 03/09/2012, 19:00
Avatar de thetwister  
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 16 años, 3 meses
Puntos: 3
¿leer el nombre de las tablas de mi BD y despues crear?

Hola foro, estoy intentado hacer lo siguiente

Es un input al que le voy a introducir un nombre y despues buscará en la Base de datos Si existe o no esa tabla.

Si ya existe una tabla con el nombre que introducio el usuario entonces diga que "No puedes usar ese nombre"

y si No existe la tabla entonces la haga

El problema es que no logro hacerlo

Esto es lo que llevo

Código PHP:
.
$nin=$_POST['name'];
.
.
$result mysql_query("SHOW TABLES FROM tienda");
while (
$row=mysql_fetch_row($result))
{
            
// $row[0] contiene el nombre de las tablas dentro de la Base "tienda"
    
$c=$row[0];
    
              
// Comprobar si existen ya tablas con ese nombre             
    
if ($c == $nin)
    {
        echo 
"ya existe esa tabla";                
    }
        
              
// Comprobar que no existe
    
if ($c != $nin)
    {
                  
// Logico en esta parte va el codigo para crearla ya sea usando CREATE, etc
         
echo "Create Tabla!";
    }

El problema es que el ultimo if repite su echo aunque lo que se esta comparando si exista.

¿cual es el problema o que otra manera puedo usar para comprobar los nombres de las tablas de mi base?
  #2 (permalink)  
Antiguo 03/09/2012, 19:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: ¿leer el nombre de las tablas de mi BD y despues crear?

No puedes crear la tabla dentro del while, porque, necesariamente habrá una o más tablas que tengan un nombre diferente del solicitado:

Código PHP:
Ver original
  1. $existe = false;
  2. while(/* Aquí lees las tablas */) {
  3.     if($c == $nin) {
  4.          // La tabla sí existe, no se puede crear nuevamente
  5.          $existe = true;
  6.          // No es necesario seguir buscando, ya sabemos que existe
  7.          break;
  8.     }
  9. }
  10.  
  11. if( ! $existe) {
  12.       // Aquí creas la tabla
  13. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 03/09/2012, 19:43
Avatar de thetwister  
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: ¿leer el nombre de las tablas de mi BD y despues crear?

Grande Triby ! Funciono a la perfección!

Muchisimas gracias, ya agregue el codigo para que cree la tabla usando CREATE

una ultima pregunta

Hay otra version donde usare RENAME, ambos (rename, create) usaran un mysql_query .

Para comprobar que realmente hicieron la accion basta con usar un TRUE o FALSE, cierto?

algo como
Código HTML:
$rename=mysql_query("RENAME TABLE tabla_old TO tabla_new");
if($rename==FALSE)
{
	echo "No se renombro";
}
if($rename==TRUE)
{
	echo "Cambio exitoso";
}
  #4 (permalink)  
Antiguo 03/09/2012, 19:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: ¿leer el nombre de las tablas de mi BD y despues crear?

No, la cosa no es así, porque mysql_query() devolverá un recurso de acceso a los datos generados por la consulta o falso si hubo un error (de sintáxis u otro), supongo que marcará error cuando tabla_old no exista o ya hay una tabla_new, será cuestión de probar y, en todo caso, bastaría:

Código PHP:
Ver original
  1. if( ! mysql_query("RENAME TABLE tabla_old TO tabla_new")) {
  2.     // La tabla no se renombró
  3. } else {
  4.     // La tabla se renombró
  5. }
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 03/09/2012, 21:07
Avatar de thetwister  
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: ¿leer el nombre de las tablas de mi BD y despues crear?

cierto, ya cheque un poco de eso

Todo funcionando ya, muchas gracias por la ayuda Triby

Dejo parte de codigo por si a alguien le sirve

Código PHP:
Ver original
  1. <?php
  2. $con = mysql_connect("localhost","root","");
  3.  if (!$con)
  4.    {
  5.    die('Problemas al Conectar: ' . mysql_error());
  6.    }
  7. .
  8. .
  9. // Nuevo Nombre de la Tabla
  10. $nin=$_POST['name'];
  11. .
  12. .
  13. $existe = false;
  14. $result = mysql_query("SHOW TABLES FROM tienda");
  15. while ($row=mysql_fetch_row($result))
  16. {
  17.     // $row[0] contiene el nombre de las tablas dentro de la Base "tienda", se pasan a $c
  18.     $c=$row[0];
  19.      
  20.     // Comprobar si existen ya tablas con ese nombre              
  21.     if ($c == $nin)
  22.     {
  23.         $existe = true;
  24.         echo "Ya existe esa tabla, elija otro nombre";
  25.         break;                
  26.     }    
  27. }
  28. if( ! $existe)
  29. {
  30.       //Crear nueva Tabla, esto varia segun las columnas a agregar
  31.       $rname=mysql_query("CREATE TABLE $nin .... //etc etc etc ");
  32. }
  33. ?>

Última edición por thetwister; 03/09/2012 a las 21:30

Etiquetas: bd, mysql, nombre, sql, tabla, tablas, usar, usuarios
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 14:46.