Foros del Web » Programando para Internet » PHP »

PHP OO Select from

Estas en el tema de Select from en el foro de PHP en Foros del Web. Buen dia, amigos de forosdelaweb hoy traigo una pregunta, estoy haciendo un sistema en PHP y MYSQL pense que era la relacion de las tablas ...
  #1 (permalink)  
Antiguo 25/04/2014, 09:36
 
Fecha de Ingreso: abril-2014
Mensajes: 8
Antigüedad: 10 años, 6 meses
Puntos: 0
Pregunta Select from

Buen dia, amigos de forosdelaweb hoy traigo una pregunta, estoy haciendo un sistema en PHP y MYSQL pense que era la relacion de las tablas pero no me di cuenta que el problema que se me presenta es por la mala ejecucion en SELECT*FROM, quiero explicar que mi problema es que se me repiten los datos de forma desordenada cuando llamo 2 tablas en un SELECT*FROM yo lo pongo así

$buscar = mysqli_query($conexion, "SELECT * FROM datos_pensionados, inform_pagos");

datos_pensionado, es donde van todo los datos personales de la persona que solicita la ayuda.

inform_pagos, es donde van almacenado todo los pagos que les han dado como ayuda.

A la hora de dar el reporte me salen toda las personas desordenadas por ejemplo si el ID de una persona es 1 y la otra es 2 la persona del ID 1 se repite en el 2 y la del 2 en el 1 y se crean 4 registros que no están en la base de datos pero en el sistema si aparecen ¿esto es porque no uso una condición para separar las 2 tablas para dar reportes ¿no?
  #2 (permalink)  
Antiguo 25/04/2014, 10:21
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 16 años, 2 meses
Puntos: 36
Respuesta: Select from

Para hacer un SELECT a dos tablas PRIMERO estas deberan estar relacinadas entre si. Y despues algo asi.

Código SQL:
Ver original
  1. SELECT tabla1.Id, tabla1.Nombre, tabla1.Apellido, tabla2.centrodetrabajo, tabla2.ocupacion FROM tabla1 INNER JOIN tabla2 ON tabla2.Idrelacionado = tabla1.Id
  #3 (permalink)  
Antiguo 25/04/2014, 10:49
 
Fecha de Ingreso: abril-2014
Mensajes: 8
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Select from

Cita:
Iniciado por alexisverano Ver Mensaje
Para hacer un SELECT a dos tablas PRIMERO estas deberan estar relacinadas entre si. Y despues algo asi.

Código SQL:
Ver original
  1. SELECT tabla1.Id, tabla1.Nombre, tabla1.Apellido, tabla2.centrodetrabajo, tabla2.ocupacion FROM tabla1 INNER JOIN tabla2 ON tabla2.Idrelacionado = tabla1.Id
Si eso era lo que pasaba creo que no las tenia relacionada xD soy algo novato en esto en realidad bueno en fin, muchas gracias al rato te digo si me funciono todo como me indicas saludos muchísimas gracias por responder
  #4 (permalink)  
Antiguo 26/04/2014, 12:13
 
Fecha de Ingreso: abril-2014
Mensajes: 8
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Select from

No se si lo estoy haciendo mal o es que no me funciona lo estoy haciendo de esta manera

Cita:
<?php
require('libreria/restringida.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>REPORTES PENSIONADOS</title>
<link href="css/fondo1.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.register table tr center td {
text-align: center;
}
</style>
</head>

<body>
<div id="menu1">
<center><ul>
<a href="index.php" class="active"><img src="img/home.png" alt="Inicio" title="Inicio"/></a>
<a href="registros.php" class="active"><img src="img/registro1.png" alt="Registro Pensionados" title="Registrar Pensionados"/></a>
<a href="buscar.php"><img src="img/120px-Xmag.png" alt="Busqueda de Pensionados" title="Busqueda de Pensionados"/></a>
<a href="reporte.php"><img src="img/fichero.png" alt="Archivador de pensionados" title="Registros archivados"/></a>
<a href="hf.php" class="active"><img src="img/hf.png" alt="Panel" width="48" title="Panel administrativo"/></a>
<a href="logout.php" class="active"><img src="img/exit.png" alt="Salir" title="Cerrar Sesion"/></a>
</ul></center>
</div>
<form class="register">
<p>

<?php
//Conexión a la base de datos
$servidor = "localhost"; //Nombre del servidor
$usuario = "root"; //Nombre de usuario en tu servidor
$password = ""; //Contraseña del usuario
$base = "db_ayudas"; //Nombre de la BD
$conexion = mysqli_connect($servidor, $usuario, $password) or die("Error al conectarse al servidor");
mysqli_select_db($conexion, $base) or die("Error al conectarse a la base de datos");

$buscar = mysqli_query($conexion, "SELECT solicitante.id_solicitante,solicitante.cedula,soli citante.apellido,solicitante.nombre,solicitante.te lefono,solicitante.email,beneficiado.monto_pago FROM solicitante INNER JOIN beneficiado ON beneficiados.id_solicitante = solicitante.id_solicitante ");
if (mysqli_num_rows($buscar) > 0) {
?>
<center><img src="img/datosfiscales.png" width="305" height="30" /></center></p>
<table width="728" border="2">
<tr>
<th width="23" bgcolor="#FFFFFF" scope="col">ID</th>
<th width="97" bgcolor="#FFFFFF" scope="col">Cedula</th>
<th width="94" bgcolor="#FFFFFF" scope="col">APELLIDOS</th>
<th width="96" bgcolor="#FFFFFF" scope="col">NOMBRES</th>
<th width="84" bgcolor="#FFFFFF" scope="col">TELEFONO</th>
<th width="131" bgcolor="#FFFFFF" scope="col">EMAIL</th>
<th width="63" bgcolor="#FFFFFF" scope="col">EDITAR</th>
<th width="86" bgcolor="#FFFFFF" scope="col">ELIMINAR</th>
<th width="131" bgcolor="#FFFFFF" scope="col">Pago asignado</th>

</tr>
<?php
while ($datos = mysqli_fetch_array($buscar)){
?>
<tr><center>
<td align="center" valign="middle" bgcolor="#FFFFFF"> <?=$datos["id_solicitante"]?> </td>
<td align="center" valign="middle" bgcolor="#FFFFFF"> <?=$datos["cedula"]?> </td>
<td align="center" valign="middle" bgcolor="#FFFFFF"> <?=$datos["apellido"]?> </td>
<td align="center" valign="middle" bgcolor="#FFFFFF"> <?=$datos["nombre"]?> </td>
<td align="center" valign="middle" bgcolor="#FFFFFF"> <?=$datos["telefono"]?> </td>
<td align="center" valign="middle" bgcolor="#FFFFFF"> <?=$datos["email"]?> </td>
<td align="center" valign="middle"><a href="#"><img src="img/edit.png" width="32" height="33" /></a></td>
<td align="center" valign="middle"><a href="#"><img src="img/borrar.png" width="32" height="32" /></a></td>
<td align="center" valign="middle" bgcolor="#FFFFFF"> <?=$datos["monto_pago"]?> </td>

</center></tr>

<?php
}
mysqli_free_result($buscar);
?>
</table>
<p>
<?php
} else {
echo "No se encontraron datos en la base de datos";
}
?>
</form>
</body>
</html>
El error que sale es el siguiente

Cita:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\reporteonline.php on line 42
No se encontraron datos en la base de datos
Mi base de dato esta relacionada de esta manera

  #5 (permalink)  
Antiguo 27/04/2014, 07:08
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años, 7 meses
Puntos: 10
Respuesta: Select from

Para que veas tu mismo el error modifica la siguiente linea para que quede así

Código PHP:
Ver original
  1. $buscar = mysqli_query($conexion, "SELECT solicitante.id_solicitante,solicitante.cedula,soli citante.apellido,solicitante.nombre,solicitante.te lefono,solicitante.email,beneficiado.monto_pago FROM solicitante INNER JOIN beneficiado ON beneficiados.id_solicitante = solicitante.id_solicitante ") or die(mysqli_error());

Cada vez que te sale un error de una funcion que procesa el resultado de un mysql_query y que sea se esperaba resource pero se obtuvo booleano, tu query está mal hecha.

Una vez que encuentres el error, es importante volver a quitar el or die.

un saludo
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #6 (permalink)  
Antiguo 27/04/2014, 18:54
 
Fecha de Ingreso: abril-2014
Mensajes: 8
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Select from

Cita:
Iniciado por Qazser Ver Mensaje
Para que veas tu mismo el error modifica la siguiente linea para que quede así

Código PHP:
Ver original
  1. $buscar = mysqli_query($conexion, "SELECT solicitante.id_solicitante,solicitante.cedula,soli citante.apellido,solicitante.nombre,solicitante.te lefono,solicitante.email,beneficiado.monto_pago FROM solicitante INNER JOIN beneficiado ON beneficiados.id_solicitante = solicitante.id_solicitante ") or die(mysqli_error());

Cada vez que te sale un error de una funcion que procesa el resultado de un mysql_query y que sea se esperaba resource pero se obtuvo booleano, tu query está mal hecha.

Una vez que encuentres el error, es importante volver a quitar el or die.

un saludo
Gracias por responder aun no he eliminado el or die, o es que quizas no he visto donde tengo el error bueno te comento que logre hacer funcionar 2 tablas usando where pero al poner la tercera siempre sale la misma opcion para los demas reportes, me explico

El arreglo
Cita:
$buscar = mysqli_query($conexion, "SELECT * FROM solicitante, detalle_solicitud, solicitud WHERE solicitante.id_solicitud = detalle_solicitud.id_solicitud = solicitud.id_solicitud");
El reporte sale mal en la tabla de solicitud a la hora de pedir el motivo de solicitud existen 2 el primer es, una ayuda economica y el segundo es una ayuda medica resulta que si pongo economica en una persona y medica en otra me salen las 2 economicas no me sale 1 economica y otra medica si no que se repite

Etiquetas: mysql, registro, select, 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 21:13.