Ir al contenido


Foto

seleccionar datos específicos en BD MySQL


  • Por favor identifícate para responder
8 respuestas en este tema

#1 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 21 marzo 2013 - 09:11

hola amigos, tengo este código


$consulta="SELECT * FROM usuarios, habitaciones where (usuario='".$_SESSION['usuario']."')";
$result_conexion=Conectar($consulta);
while($fila=mysql_fetch_array($result_conexion))
{
if($_SESSION['usuario']==$fila['usuario'])
{
echo $fila[$_POST['habitaciones']];
}
else
{
echo "dato no encontrado...";
}
}


como podeis ver lo que hago en el código es filtrar la salida de la consulta por usuario.

pero me devuelve los datos de todos los usuarios.

en la base de datos administrada con phpmyadmin tengo la siguiente estructura:

tabla usuarios

usuario|passwd|id_habitaciones

tabla habitaciones

id|simple|doble|triple|cuadruple

la idea es que un usuario pueda consultar las habitaciones que tiene disponibles él mismo y no todas.

esto no es para un trabajo, lo he copiado de una oferta laboral que me ha dado la idea para practicar la POO con PHP, sabía la lineal, la estructurada pero no la POO, la cual necesito aprender para poder saber hacer un carrito de compra.

gracias por la ayuda!!
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 21 marzo 2013 - 09:20

yo lo haría de esta manera para asegurarme de siempre recibir un usuario


      $usuario = isset($_SESSION['usuario']) ? $_SESSION['usuario'] : "sinusuario";
      if ($usuario == "sinusuario")
        echo "proporcione un usuario";
    else {
        $consulta="SELECT * FROM usuarios, habitaciones where usuario= '$usuario'";
        $result_conexion=Conectar($consulta);
      while($fila=mysql_fetch_array($result_conexion))
        echo $fila[$_POST['habitaciones']];
    }



  • 0

#3 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 21 marzo 2013 - 12:11

me sigue dando error, me devuelve lo mismo, no entiendo por qué, nunca me había pasado esto, no se si es que he creado mal la BD o no se
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 21 marzo 2013 - 12:16

prueba dandole salida a la consultya con un 
echo $consulta;

para evaluar que está ejecutando mysql.
  • 0

#5 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 21 marzo 2013 - 12:28

me devuelve esto

SELECT * FROM usuarios, habitaciones where usuario= 'q'
  • 0

#6 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 21 marzo 2013 - 12:37

me devuelve esto

SELECT * FROM usuarios, habitaciones where usuario= 'q'



Ahí está el problema, estás haciendo un full join.

prueba modificando la consulta de esta manera:

SELECT * FROM usuarios, habitaciones where usuarios.id_habitaciones = habitaciones.id and usuario= 'q'


tabla usuarios

usuario|passwd|id_habitaciones

tabla habitaciones

id|simple|doble|triple|cuadruple


  • 0

#7 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 21 marzo 2013 - 12:47

tienes razón, estaba haciéndolo mal, k cabeza la mía

pero ahora no me muestra nada en pantalla ni me devuelve error, no sé qué xk
  • 0

#8 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 mensajes
  • LocationMy House @ México

Escrito 26 marzo 2013 - 03:35

Significa que no hay datos que coincidan con tu busqueda.

Para seleccionar datos especificos es más como

Select nombre, apellido, nombreCampo FROM tabla WHERE condiciones = miscondiciones;
  • 0

#9 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 28 marzo 2013 - 04:25

muchísimas gracias a todos por su gran ayuda. buscando y buscando estos días dí con los errores y pude continuar avanzando en la programación orientada a objetos con php.

el problema estaba en que establecía mal las claves primarias y foráneas, estando ambas vacías, una metedura de pata que no tiene perdón, fué un momento de completa distracción, hay días que me pasa jeje. (elporfirio tienes razón en tu último post, los campos de la tabla estaban vacíos)
ya está solucionado todo.

de nuevo gracias!!!
  • 0




IP.Board spam blocked by CleanTalk.