Foros del Web » Programando para Internet » PHP »

Validación en tablas dinámicas

Estas en el tema de Validación en tablas dinámicas en el foro de PHP en Foros del Web. Buenos días. Estoy buscando realizar una validación que meta registros en una tabla. Lo que quiero en este nuevo php es, saber si existen registros ...
  #1 (permalink)  
Antiguo 17/06/2014, 00:50
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Validación en tablas dinámicas

Buenos días. Estoy buscando realizar una validación que meta registros en una tabla.
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.

Código PHP:
Ver original
  1. $v1 = $_POST['var_id'];
  2. $v2 = $_POST['var_MAC'];
  3.  
  4. $SI = "Si";
  5. $NO = "No";
  6.  
  7. $sql = "Show tables like '$v1'";
  8. $result = mysql_query($result);
  9.  
  10. if (mysql_num_rows($result) == False){
  11.  
  12.     mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");
  13.    
  14. }else{
  15.    
  16.     $contar_filas = mysql_num_rows($result);
  17.     for($i=1; $i <= $contar_filas; $i++){
  18.         mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$NO')");
  19.  
  20.     mysql_query("UPDATE `{$v1}` SET `{$contar_filas[Actualizacion]}` = 'No' WHERE `{$contar_filas[Actualizacion]}` = 'Si'");
  21.        
  22.     }
  23.     mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");*/
  24. }

Cuando el código era para insertar esos registros de forma estática, el código funcionaba perfectamente, pero ahora, al meter dinamismo, no entra en el bucle. Me echais un cable? muchas gracias!
  #2 (permalink)  
Antiguo 17/06/2014, 02:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Validación en tablas dinámicas

Yo releeria el manual sobre SHOW TABLES y luego replantearia todo el script. Aun que tampoco lo ejecutas!?!?!

Por otro lado

Código PHP:
Ver original
  1. $result = mysql_query($result);
No tiene mucho sentido

Código PHP:
Ver original
  1. $sql = "Show tables like '$v1'";
  2. $result = mysql_query($sql);

Esto tendria mas sentido pero me remito al primer parrafo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 17/06/2014, 05:49
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Validación en tablas dinámicas

sí, me he confundido en $result, muchas gracias.

Creo que, tal y como me apuntas, no tiene sentido que use show en ese caso, ya que me muestra las tablas que se llaman de una determinada forma...el problema es, que intento hacer un select y me da una advertencia en mysql_num_rows () que sale con mucha frecuencia y que no se cómo solucionar:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Trabajo\insertar_contenido1.php on line 101.

Código PHP:
Ver original
  1. $SI = "Si";
  2. $NO = "No";
  3.  
  4. $result = "select * into '$v1'";
  5. $consulta = mysql_query($result);
  6. $contar_filas = mysql_num_rows($consulta);
  7.  
  8. if(($contar_filas) == False) {
  9.     echo "if";
  10.     mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$SI')");
  11.    
  12. }else{
  13.  
  14.     $contar_filas = mysql_num_rows($consulta);
  15.     echo "else";
  16.     for($i = 1; $i <= $contar_filas; $i++){
  17.         echo "for";
  18.         mysql_query("INSERT INTO `{$v1}` VALUES ('', '$fila[dispositivos]','','', '$nombreDirectorio', now(), '$NO')");
  19.        
  20.     }
  21.    
  22. }

La primera vez, como no tengo registros en la bbdd ,entra en el if y me inserta lo que le digo (esta es sólo una parte del código asiq las variables que pido que me meta están definidas más arriba en mi código), la segunda vez ya dtengo registros así que debería entrar en else...pues no, me da el error que explico arriba, vuelve a entrar en el if y me inserta lo mismo de antes.

Llevo toda la mañana probando cosas y no entiendo qué es lo que está pasando...no se si es que ya no veo nada o que probablemente esté utilizando algo mal =(
Si me das alguna pauta te lo agradecería mucho...gracias!
  #4 (permalink)  
Antiguo 17/06/2014, 05:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Validación en tablas dinámicas

Código MySQL:
Ver original
  1. select * into '$v1'
Que es lo que esperas hacer con ese query?

Seria bueno que nos dijieras que es lo que esperas hacer con el script ya que el script no nos dice mucho ya que justamente no trabaja como esperas...
  #5 (permalink)  
Antiguo 17/06/2014, 06:21
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Validación en tablas dinámicas

Pues...ya que para que me inserte distintos registros dentro de una tabla, necesito que me diga el número de filas que existen en esa tabla, con esa consulta pretendo seleccionar todo lo que tenga la tabla '$v1' para después contar sus filas.

No se si es lo acertado, pero tras probar distintas alternativas, no se cómo dar con lo correcto =(
  #6 (permalink)  
Antiguo 17/06/2014, 06:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Validación en tablas dinámicas

Código PHP:
Ver original
  1. $result = mysql_query("SELECT count(*) registros from `".$v1."`");
  2. $row = mysql_fetch_array($result, MYSQL_ASSOC)
  3. $contar_filas=$row["registros"];

Esto da el numero de registros de la tabla.

`$v1`<-- ojo son acentos graves no apostrofes

$contar_filas = mysql_num_rows($consulta); para que intentas contar tantas veces lo mismo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 18/06/2014, 00:49
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Validación en tablas dinámicas

Ese era el problema!!!La forma de escribir las comillas que acompañan a v1!!Madre mía estaba ya desesperada...muchísimas gracias!
Tengo una pregunta, aunque pueda sonar ridícula...porqué en cada tipo de consulta con variables, puede funcionar con un tipo distinto de sintaxis? En mi código tengo de todo, siendo la única opción de que funcione correctamente cada cosa...

Código PHP:
Ver original
  1. $sql = "CREATE TABLE `{$v1}`
  2. $result = mysql_query("SELECT * FROM `$v1` ");
  3. mysql_query("UPDATE `{$v1}` SET actualizacion = 'No' WHERE actualizacion = 'Si' ");

Existe algún tipo de norma para esto? y para la concatenación con variables?(comillas simples, dobles) me da la sensación de que cada vez se usa un tipo de sintaxis, y en cada página o foro que consulto, me vienen nuevas dudas a este respecto.
Muchas gracias de nuevo!
  #8 (permalink)  
Antiguo 18/06/2014, 01:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Validación en tablas dinámicas

No tiene nada que ver con la concatenación de las variables, los delimitadores son parte de la sintaxis de sql.

Los acentos graves sirven para encerrar los nombres de los objetos, nombres de campos, tablas etc, son opcionales excepto que estes usando palabras reservadas como nombres (no aconsejable) o nombres con espacios blancos (aún más desaconsejable). Las {} que estas usando yo no las he usado nunca.

Los apóstrofes ' ' o las dobles comillas " " sirven para encerrar los valores de determinados tipos de datos.

Todo esto se complica al mezclar la sintaxis de sql con la de php.

La estrategia que uso yo es reservar las dobles comillas " " para php y los apostrofes para sql y No uso los acentos graves ``ya que uso una politica de nombres que los hacen innecesarios.

$sql="aqui sintaxis sql".aqui sintaxis php."aqui sql";

Es decir aun que php permite insertar una variable directamente en un string prefiro separar las sintaxis.

Código php:
Ver original
  1. $filtro="perro";
  2.  
  3. $sql="SELECT * FROM unaTabla WHERE animal='".$filtro."';";

Si substituyes la variable por su valor obtienes una query con sintaxis correcta

Código SQL:
Ver original
  1. SELECT * FROM unaTabla WHERE animal='perro';
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 18/06/2014, 04:25
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Validación en tablas dinámicas

Muchísmas gracias, así da gusto

Etiquetas: mysql, registro, sql, tabla, tablas
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:58.