Resultados 1 al 8 de 8

Tema: Duda con SQL

  1. #1
    Miembro

    Fecha de Ingreso
    29 oct, 06
    Mensajes
    0
    Gracias
    0
    0 Gracias en 0 mensajes

    Predeterminado Duda con SQL

    Muy buenas peña!!

    Haber si por este foro ( normalmente visito solo el de N2 ) me aclarais un poco el tema. Estoy acabando un modulo de informatica, y como proyecto,me ha tocado crear unos scripts para insertar y cosultar datos mediante apache + php + sql.

    Es como una aplicacion, para insertar a nuevos alumnos ( de el centro en el que estudio ) y otro script, para, consultar datos a la BdD mediante un formulario.

    Pues bien, ahy va mi pregunta.

    El tema de insertar datos en la BdD lo tengo 100% hecho, ahora me queda el de consultar.

    Mi idea es -> , con un formulario, selecionar la edad de X alumno, un apellido de X alumno, una localidad, y por ultimo un curso, ahora RECOJER ESOS DATOS DE ESE FORMULARIO, y pasarlos a una sentencia SQL para que consulte a la BdD que la tengo montada en localhost.

    Me habeis entendido cual es la idea final?

    Espero no dar mucho la bara pero.. por mucho que intento pensar, nose me ocurre como hacer eso.

    Un saludo, y muchisimas gracias.

  2. #2
    Made in Mexico Avatar de Bender034

    Fecha de Ingreso
    08 mar, 05
    Ubicación
    Eutelsat W3
    Mensajes
    1,511
    Gracias
    176
    118 Gracias en 78 mensajes

    Predeterminado

    Esos datos los tienes recogidos en variables. De la misma forma que has hecho la consulta para insertar, haz otra para consultar.

    Si tenias las variables de la forma var_apellido, var_localidad, var_edad, tu has hecho:

    insert into tabla (apellido, localidad, edad) values (var_apellido, var_localidad, var_edad)

    Pues la consulta seria igual:

    select * from tabla where apellido = var_apellido and localidad = var_localidad etc, lo que te haga falta.

    Si no es esto lo que quieres, entonces no he entendido la pregunta

  3. #3
    Miembro

    Fecha de Ingreso
    29 oct, 06
    Mensajes
    0
    Gracias
    0
    0 Gracias en 0 mensajes

    Predeterminado

    Buenas, primero, gracias por contestar.

    Te cuento.
    Supongamos, que SOLO quiero recojer los apellidos, para no liar tanto el hilo del foro.
    En el script de insertar datos, tengo esto -> Apellidos: <input type='text' name='apellidos'>

    Bien, en el <form name="form1" action="script_consultas.php" method="post">, de modo que, cuando le das al boton BUSCAR ( el de la imagen que puse arriba ), llame al script "script_consultas.php".

    ¿ Que tengo en el script consultas ? esto ->
    $c=@mysql_connect("localhost","root","pruebas"); // conecta a l bd
    $v0=$_POST['apellidos']; // recoje datos del input
    mysql_select_db($base,$c);

    mysql_query("select * from $tabla where 'apellidos' = $v0;",$c);

    Bien conectar, conecta perfecto a la BdD, el problema esta en la sentencia SQL.
    Te cuento, si le quito el where para que quede asi ->
    select * from $tabla; me dice que bien que consulta realizada correctamente, el problema esta cuando le pongo el where.. que se ve que ALGO NO CUADRA.

    Ahora, te pongo todos los scripts que usé para crear las tablas, insertar datos etc.

    Script crear_table -> lo dice el nombre, crea la tabla con los campos que quiero y con el formato que quiero. ( lo lo he usado una vez para crear la tabla, ya que para crear no lo he hecho con phpmyadmin, sino por codigo )
    Script consultar -> aqui no hay nada de php ni sql, solo html y los inputs con los names.
    Script visor -> es que el realmente inserta los datos con el insert into, y a continuacion, muestra un mensaje diciendo, Datos metidos correctamente.
    Aqui estan los scripts, haber en que fallo http://w12.easy-share.com/979420.html


    PD : Respecto a los errores que me da el SQL, es el 1054, y el tipico que dice que revise el manual de sql, por mas que miro el codigo...., nose que se me puede escapar, y OJO, decir que para acer el script de insertar datos, me funciona y lo manejo de fabula, pero este de hacer una consulta... parezco medio tonto :S.

    Un saludo, y perdona por el toston.


  4. #4
    Made in Mexico Avatar de Bender034

    Fecha de Ingreso
    08 mar, 05
    Ubicación
    Eutelsat W3
    Mensajes
    1,511
    Gracias
    176
    118 Gracias en 78 mensajes

    Predeterminado

    • Error: 1054 SQLSTATE: 42S22 (ER_BAD_FIELD_ERROR)
      Mensaje: La columna '%s' en %s es desconocida
    Tiene toda la pinta de que no esta cogiendo bien el nombre del campo de la tabla está mal.

    En el script que has puesto, no viene la consulta que te falla, al menos yo no la veo. Ese error 1054 es de mysql, que supongo que será el motor que estas usando.

    No estoy muy puesto en php, pero parece que el error va por ahi.

  5. #5
    NagradosTeam Avatar de Decoderz

    Fecha de Ingreso
    26 ene, 05
    Mensajes
    1,022
    Gracias
    0
    Agradecido 1 vez en un mensaje

    Predeterminado

    $c=@mysql_connect("localhost","root","pruebas"); // conecta a l bd
    $v0=$_POST['apellidos']; // recoje datos del input
    mysql_select_db($base,$c);
    mysql_query("select * from $tabla where apellidos' = $v0;",$c);

    Esto esta mal es asi
    mysql_query("select * from tabla where apellidos like '". $v0 ."';",$c);

    1.- El like se utiliza para los nombres y funciona mejor que el =, el = emplealo para numeros. Por lo tanto y como solicitas un apellido utiliza like

    2.- Otro fallo si metes la variable a saco no te la interpreta, la soluciones es ponerle ". $aquilavariable ." asi te deberia funcionar, sino te va asi pon el codigo y la base de datos, sino lo sabes poner aqui pegame un toque y te ayudo

    3.- Fijate en esto select * from $tabla sobra el $ de tabla estas haciendo una consulta a una tabla no pasando una varible creo yo, en tal caso si quieres pasar una variable lo mismo del paso 2

    Asi te tiene que funcionar, sino pon el codigo que asi trabajmos mejor

    Saludos

  6. #6
    Made in Mexico Avatar de Bender034

    Fecha de Ingreso
    08 mar, 05
    Ubicación
    Eutelsat W3
    Mensajes
    1,511
    Gracias
    176
    118 Gracias en 78 mensajes

    Predeterminado

    Si, me imagino que es algo de la comillas, para que recoja bien los nombres de las variables y de las columnas de la tabla. ya digo que no estoy muy puesto en la sintaxis del php, yo utilizo Delhpi, aunque la forma de actuar es la misma para todos lo lenguajes.

    Solo decir una cosa. La clausula like, se emplea cuando quieres comparar patrones de busqueda. Por ejemplo like 's%', te devolverá todos los que empiezan por s.

    Si pones like 'variable', te devolverá el que coincide con lo que has puesto, pero no por que la columna sea alfanumerica. Es decir que poniendo = 'variable0, debe de funcionar exactamente igual.

    Tambien es perfectamente posible, pasar como variable el nombre de una tabla, tanto por variables, como por macros. Siempre y cuando se pongan bien las comillas, claro.

    Lo mejor para esto, es depurar, y parar el interprete en la linea de la consulta, y ver realmente , como es la consulta que has construido.

  7. #7
    NagradosTeam Avatar de Decoderz

    Fecha de Ingreso
    26 ene, 05
    Mensajes
    1,022
    Gracias
    0
    Agradecido 1 vez en un mensaje

    Predeterminado

    Cita Iniciado por bender034 Ver Mensaje
    Si, me imagino que es algo de la comillas, para que recoja bien los nombres de las variables y de las columnas de la tabla. ya digo que no estoy muy puesto en la sintaxis del php, yo utilizo Delhpi, aunque la forma de actuar es la misma para todos lo lenguajes.

    Solo decir una cosa. La clausula like, se emplea cuando quieres comparar patrones de busqueda. Por ejemplo like 's%', te devolverá todos los que empiezan por s.

    Si pones like 'variable', te devolverá el que coincide con lo que has puesto, pero no por que la columna sea alfanumerica. Es decir que poniendo = 'variable0, debe de funcionar exactamente igual.

    Tambien es perfectamente posible, pasar como variable el nombre de una tabla, tanto por variables, como por macros. Siempre y cuando se pongan bien las comillas, claro.

    Lo mejor para esto, es depurar, y parar el interprete en la linea de la consulta, y ver realmente , como es la consulta que has construido.
    Buenas observaciones, funcionar funciona igual que like que con =.

    Lo que tambien puedes hacer es asignarle la variable a la consulta de mysql y poner echo $varibable; para ver que consulta hace, en php no se puede parar el interprete para ver lo que contiene.

    Saludos

  8. #8
    Made in Mexico Avatar de Bender034

    Fecha de Ingreso
    08 mar, 05
    Ubicación
    Eutelsat W3
    Mensajes
    1,511
    Gracias
    176
    118 Gracias en 78 mensajes

    Predeterminado

    Cita Iniciado por Decoderz Ver Mensaje

    Lo que tambien puedes hacer es asignarle la variable a la consulta de mysql y poner echo $varibable; para ver que consulta hace, en php no se puede parar el interprete para ver lo que contiene.

    Saludos
    Efectivamente. Si el editor que usas para escribir php, no te deja poner puntos de ruptura, haz eso, asigna una variable a la consulta y muestrala en pantalla.

    Bueno , a ver que nos cuenta, si lo ha solucionado

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •