PHP - Validación if...else si existe una tabla

   
Vista:

Validación if...else si existe una tabla

Publicado por Elisa (71 intervenciones) el 16/06/2014 11:38:29
Buenos días.

Estoy creando tablas de forma dinámica relacionando variables e introduciendo campos en esas tablas que se crean. Todo me funciona bien hasta que valido si existe la tabla, quiero que me diga que ya está creada cuando eso sea así y que no me vuelva a introducir los campos y no lo hace...lo que no entiendo es porqué cuando la creación de tablas era estática, sí que se validaba bien con el mismo código. No se si es porque meto una variable en la consulta. Me echais una mano? Este es mi código:

1
2
3
4
5
6
7
8
9
10
$sql_1 = "SELECT * FROM  '$v1' ";
$result_1 = mysql_query($sql_1);
$contar_filas_1 = mysql_num_fields($result_1);
 
if(($contar_filas_1) == 0){
          //Código 
 
}else{
          echo "la tabla ya está creada";
}

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Validación if...else si existe una tabla

Publicado por Rafael (37 intervenciones) el 16/06/2014 12:19:22
Prueba con:

1
2
3
4
5
6
7
8
9
10
$result = mysql_query("show tables like '$v1'");
 
/* Si no existe la tabla */
if(mysql_fetch_row($result) == false) {
   $sql = 'create table $v1(...)';
   mysql_query($sql);
} else {
  echo "la tabla ya está creada";
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validación if...else si existe una tabla

Publicado por Elisa (71 intervenciones) el 16/06/2014 13:31:14
Perfecto! mil gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validación if...else si existe una tabla

Publicado por Elisa (71 intervenciones) el 16/06/2014 14:37:26
Reemplace este texto
Ya que me resolviste una duda similar, voy a abusar un poco de tu confianza...en este caso estoy copiando ficheros a varias carpetas cuyo nombre corresponde con macs almacenadas en una tabla, y quiero subir la ruta de los contenidos que copio en las carpetas que se creaban antes, en mi primer comentario del tema. Cuando subo ese contenido, quiero además que me cambie uno de los campos. El problema es el mismo, salía pero cuando era estático, ahora, de manera dinámica, me copia los ficheros dinámicamente en las carpetas correspondientes, pero no me sube la información a la BBDD mysql, cosa que antes sí que sucedía.

Este es mi código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$SI = "Si";
    $NO = "No";
 
    $sql = "SELECT actualizacion FROM '$v1'";
    $result = mysql_query($sql);
    $contar_filas = mysql_num_rows($result);
 
    if (($contar_filas == 0)){
 
        mysql_query("INSERT INTO `{$v1}` VALUES ('', $fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");
       
    }else{
        $contar_filas = mysql_num_rows($result);
        for($i=1; $i<=$contar_filas; $i++){
     
            $NO = "No";
            //Insertamos la ruta del contenido subido al servidor dentro de la tabla correspondiente en la BBDD
            mysql_query("UPDATE `{$v1}` SET actualizacion = 'No' WHERE actualizacion = 'Si'");
           
        }
        mysql_query("INSERT INTO `{$v1}` VALUES ('', $fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");
    }

He probado, como en el caso anterior, cambiar las 4 primeras líneas de código por lo que me comentaste:

1
2
3
$result = mysql_query("show tables like '$v1'");
 
    if(mysql_fetch_row($result) == false) {
pero tampoco me sube nada ni me da error, es como si esta parte del código no exixtiera...podrías ayudarme? muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validación if...else si existe una tabla

Publicado por Rafael (37 intervenciones) el 16/06/2014 15:44:34
A ver creo que tu problema esta en el concepto....

Primero si no existe la tabla tendrias que crearla ... por lo que retomare un poco el tema asi...

1
2
3
4
5
6
7
$result = mysql_query("show tables like '$v1'");
 
/* Si no existe la tabla */ 
if(mysql_fetch_row($result) == false) {
  $sql = 'create table $v1(...)';
  mysql_query($sql);
}

Hasta aqui ya sabemos que si no existia ahora debe existir...
OJO los campos los he puesto con tres puntos suspensivos debes poner los campos....

Luego como ya sabemos que la tabla existe pues simplemente insertamos el registro...

1
2
mysql_query("INSERT INTO `{$v1}` VALUES ('', $fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");


siendo que el código completo seria ...

1
2
3
4
5
6
7
8
9
$result = mysql_query("show tables like '$v1'");
 
/* Si no existe la tabla */ 
if(mysql_fetch_row($result) == false) {
  $sql = 'create table $v1(...)';
  mysql_query($sql);
}
mysql_query("INSERT INTO `{$v1}` VALUES ('', $fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");

O lo que pretendes es saber si el registro existe en la tabla ??? vaya son dos cosas diferentes no crees ???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validación if...else si existe una tabla

Publicado por Elisa (71 intervenciones) el 16/06/2014 15:59:46
mmmmm, a ver si me explico rápidamente. La tabla me la crea otro php, damos por hecho que la tabla está creada.
Lo que quiero en este nuevo php es, saber si existen registros metidos, si no es así inserto el primer registro, y si es así, modifico un campo de los registros anteriores e inserto uno nuevo.

Este es mi código completo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$SI = "Si";
$NO = "No";
 
$sql = "Show tables like '$v1'";
$result = mysql_query($result);
 
if (mysql_num_rows($result) == False){
 
	mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");
 
}else{
 
	$contar_filas = mysql_num_rows($result);
	for($i=1; $i <= $contar_filas; $i++){
		mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$NO')");
 
		//Insertamos la ruta del contenido subido al servidor dentro de la tabla correspondiente en la BBDD
	mysql_query("UPDATE `{$v1}` SET `{$contar_filas[Actualizacion]}` = 'No' WHERE `{$contar_filas[Actualizacion]}` = 'Si'");
 
	}
	mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");*/
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar