Foros del Web » Programando para Internet » PHP »

problema con consulta a la misma tabla

Estas en el tema de problema con consulta a la misma tabla en el foro de PHP en Foros del Web. hola amigos. Tengo una base de datos y sus respectivas tablas y en un momento del programa necesito mostrar por pantalla los nombres de las ...
  #1 (permalink)  
Antiguo 31/03/2013, 09:17
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 2
problema con consulta a la misma tabla

hola amigos.
Tengo una base de datos y sus respectivas tablas y en un momento del programa necesito mostrar por pantalla los nombres de las tablas y al mostrarlas las pongo que sean link y el código es este.
Código PHP:
<?php
$conexion
=mysql_connect("localhost","root","");

$sql_tablas mysql_query("SHOW TABLES FROM dias",$conexion); 
while(
$arreglo mysql_fetch_array($sql_tablas)) 
?>
  <p><a href="agenda1.php?valor=<?php echo $arreglo[0];?>"> <?php echo $arreglo[0];?></a></p>
   <?php
  
}
 
?>
luego quiero hacer una consulta en la tabla y envío el nombre y otros datos a otro formulario pero resulta que en momento de hacerla me saca este error.
Table 'dias.contador

' doesn't exist
imprimo el nombre de la tabla hasta el ultimo momento y me sale contador pero al momento de hacer la consulta me dice que días.contador no existe, y días es el nombre de la base de datos donde esta almacenada, se que me dice que no existe la tabla pero mi pregunta es por que si utilizo eso mismo paguinas atrás y me sale la consulta normal y porque al mandar la info a otra página y hacer otra consulta a la misma página ya me sale el error, que pasa? (no soy experto solo hago lo que quiero hacer y como creo que lo debo hacer si tu respuesta es con criticas constructivas y para mejorar y en buenos términos gracias por tu respuesta, pero si es déspota y me hace sentir como pequeño y algo de malas para pensar te lo agradezco pero no me contestes.) gracias a todos.
  #2 (permalink)  
Antiguo 31/03/2013, 09:27
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: problema con consulta a la misma tabla

Cita:
Iniciado por cesar15 Ver Mensaje
hola amigos.
Tengo una base de datos y sus respectivas tablas y en un momento del programa necesito mostrar por pantalla los nombres de las tablas y al mostrarlas las pongo que sean link y el código es este.
Código PHP:
<?php
$conexion
=mysql_connect("localhost","root","");

$sql_tablas mysql_query("SHOW TABLES FROM dias",$conexion); 
while(
$arreglo mysql_fetch_array($sql_tablas)) 
?>
  <p><a href="agenda1.php?valor=<?php echo $arreglo[0];?>"> <?php echo $arreglo[0];?></a></p>
   <?php
  
}
 
?>
luego quiero hacer una consulta en la tabla y envío el nombre y otros datos a otro formulario pero resulta que en momento de hacerla me saca este error.
Table 'dias.contador

' doesn't exist
imprimo el nombre de la tabla hasta el ultimo momento y me sale contador pero al momento de hacer la consulta me dice que días.contador no existe, y días es el nombre de la base de datos donde esta almacenada, se que me dice que no existe la tabla pero mi pregunta es por que si utilizo eso mismo paguinas atrás y me sale la consulta normal y porque al mandar la info a otra página y hacer otra consulta a la misma página ya me sale el error, que pasa? (no soy experto solo hago lo que quiero hacer y como creo que lo debo hacer si tu respuesta es con criticas constructivas y para mejorar y en buenos términos gracias por tu respuesta, pero si es déspota y me hace sentir como pequeño y algo de malas para pensar te lo agradezco pero no me contestes.) gracias a todos.
Si en lugar de prepararte para un regaño te tomaras la molestia de mostrarnos la consulta como quieres generar los datos de la tabla contador seria información mas relevante para todos nosotros.

Por la forma como lo describes me imagino que estarias tratando de hacer algo asi como:

Código MySQL:
Ver original
  1. select * from dias.contador

Cosa que estaria mal puesto que en las consultas nunca se debe usar la base de datos, para eso se hace uso del manejador.

Mi critica de caracter constructivo es que si en lugar de prevenirte antes de tiempo nos mostraras con tu código como trataste de generar tu consulta seria de mas utilidad que una retahila en la cual ya te estas excusando por un error que puedes cometer tu como cualquier otro pero poca o ninguna información de utilidad nos da para resolverlo.

p.s. Por otro lado me parece potencialmente peligroso que tu usuario sepa las tablas que manejas dentro de tu base de datos. Si quisieran hacerte un ataque les estas dando mas de la mitad del trabajo hecho. Es mi opinión personal.
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 31/03/2013, 10:00
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: problema con consulta a la misma tabla

como pudiste ver en el código la consulta la hago como esta en aca
Código PHP:
$datos mysql_query("SELECT * FROM `$nombre_tabla`")or die( mysql_error()) 
la variable $nombre_tabla tiene el nombre de la tabla y lo curioso es que cuando lo hago inicialmente me hace la consulta, pero al pasar los datos por otros formularios (claro esta que sin modificar el nombre) este me saca ese error pero es el sistema quien me pone el nombre de la bd y despues la tabla porque? no se,esa es mi pregunta
Código PHP:
<?php

$link
mysql_connect("127.0.0.1","root","");
$basededatos=mysql_select_db("dias",$link) or die (mysql_error());
 
$hora=$_POST["hora"]."<br>";
 
$nombre2=$_POST["nombre2"]."<br>";
 
$cc=$_POST["cc"]."<br>"
 
$tel=$_POST["tel"]."<br>";
 
$entidad=$_POST["entidad"]."<br>";
 
$procedimiento=$_POST["procedimiento"]."<br>";
 echo 
$nombre_tabla=$_POST["valor"]."<br>";
[
COLOR="navy"$datos mysql_query("SELECT * FROM `$nombre_tabla`")or die( mysql_error());[/COLOR]
while(
$datos1=mysql_fetch_array($datos))
    {
    echo
"hola"$datos1["hora"];
    }
?>
  #4 (permalink)  
Antiguo 31/03/2013, 10:28
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: problema con consulta a la misma tabla

Bueno, potencialmente no veo error en el script. Cosas para comentar:

El incluir esas comillas no debería influir en el resultado, deberia ser igual:

Código PHP:
$datos mysql_query("SELECT * FROM `$nombre_tabla`"
que

Código PHP:
$datos mysql_query("SELECT * FROM $nombre_tabla"
Segundo que todo, es extremadamente peligroso que el nombre de una tabla llegue a una consulta ya bien sea por GET o por POST porque un usuario malicioso puede llegar a cambiar el valor de este dato y generar ferias y fiestas. Yo replanteria por completo la manera como lo estas ejecutando.

Cita:
lo curioso es que cuando lo hago inicialmente me hace la consulta, pero al pasar los datos por otros formularios (claro esta que sin modificar el nombre)este me saca ese error
Es posible que estes perdiendo el valor por no guardarlo con una variable de sesión o pasandolo como un valor oculto a otro lado y por tanto pierdes el dato. De igual forma bajo ninguna circunstancia yo pasaria como parametro en un formulario el nombre de la tabla de consulta.

Si por el contrario te esta llegando bien el nombre el error si es muy raro. Esas son mis observaciones. Si alguien mas quiere opinar me interesa su opinión, especialmente el hecho de pasar los nombres de las tablas de datos cosa que me parece potencialmente peligroso.

p.s. Si tienes que hacer una consulta de las tablas y tienes que pasar ese dato por otros formularios tendrias que hacerlo por campos ocultos de los formularios siempre para no perder el dato. Como ves salvo que fuera el id de una consulta no es muy practico a la hora de implementarlo. show tables se usa mas para labores de tipo administrativo de la base de datos que para usar ese dato en una consulta.
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 31/03/2013 a las 10:38
  #5 (permalink)  
Antiguo 31/03/2013, 13:28
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: problema con consulta a la misma tabla

cuasatar gracias por tu aporte, seguiré intentando y lo de el paso del esos datos lo hago por que el programa que estoy desarrollando es para uso muy restringido casi para dos personas que somos los dueños de esto el servidor es localhost entonces por ahora nos estamos concentrando mas en el desarrollo de la aplicación que nos solucione un poco el problema
  #6 (permalink)  
Antiguo 01/04/2013, 09:18
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: problema con consulta a la misma tabla

Cita:
Iniciado por cesar15 Ver Mensaje
cuasatar gracias por tu aporte, seguiré intentando y lo de el paso del esos datos lo hago por que el programa que estoy desarrollando es para uso muy restringido casi para dos personas que somos los dueños de esto el servidor es localhost entonces por ahora nos estamos concentrando mas en el desarrollo de la aplicación que nos solucione un poco el problema
La seguridad de un aplicativo no se debe "despreciar" en función del número de usuarios que lo usen y si ahora solo lo estan implementando a nivel local. Tarde o temprano esa aplicación ira a la red y por ende ira sujeta a todos los peligros de una mal diseño.

Si vas a mostrar unos datos basicos de un usuario de una tabla llamada "personal" lo llamas asi y punto y pelota, sin mas misterios, no tiene sentido llamar el nombre de la tabla desde otro lado:

Código MySQL:
Ver original
  1. select * from personal

Si vas a insertar los datos del formulario, debes filtrarlos averigua cosas como ataques xss, mysql inyection entre otros y como evitarlos con php recalco No importa que solo lo usen dos personas La persona que quiera dañar tu aplicativo lo hara por puro y simple entretenimiento.
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: formulario, mysql, sql, 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 22:30.