TransWikia.com

Consultas en PHP Y MYSQL

Stack Overflow en español Asked by Oscar_DR on December 5, 2021

Realizo un sistemas de nomina el cual tengo problemas con el modulo de consultas tengo las tablas llamadas trabajador que es mi tabla principal de ahí viene las llaves foráneas de mis tablas “area”, “puesto” y cg_turno. En mi modulo de inserción no tengo problema ya que inserto por descripción y en mi BD se insertan por ID.
Lo que necesito es que muestre es la descripción en la interfaz gráfica ya que en mi BD esta registrado solo con los ID de las llaves foráneas.
Gracias / Saludos.

<!DOCTYPE html>
<?php
session_start();
if (@!$_SESSION['user']) {
	header("Location:index.php");
}elseif ($_SESSION['rol']==2) {
	header("Location:index2.php");
}
?>
<html lang="en">
  

  
    <meta charset="utf-8">
    <title>Gesti&oacuten de Nómina</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    

    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"/>

    <link rel="shortcut icon" href="assets/ico/favicon.ico">
    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
  </head>
<body data-offset="40" background="images/fondotot.jpg" style="background-attachment: fixed">

<div id="page">
			<div class="header">
				<a href="#menu"></a>
				Sistema Integral de Nómina
			</div><br> </br>
			


<div class="container">
<header class="header">
<div class="row">
	<?php
	include("include/cabecera.php");
	?>
</div>
</header>

  <!-- Navbar
    ================================================== -->

<div class="navbar">
  <div class="navbar-inner">
	<div class="container">
	  <div class="nav-collapse">
		<ul class="nav">
			<li class=""><a href="index2.php">BIENVENIDO</a></li>
			 
	
		</ul>
		<form action="#" class="navbar-search form-inline" style="margin-top:6px">
		
		</form>
		<ul class="nav pull-right">
		<li><a href="">Bienvenido <strong><?php echo $_SESSION['user'];?></strong> </a></li>
			  <li><a href="desconectar.php"> Cerrar Sesión </a></li>			 
		</ul>
	  </div><!-- /.nav-collapse -->
	</div>
  </div><!-- /navbar-inner -->
</div>

<br />

			 
             <p>&nbsp;&nbsp;&nbsp<strong>Impresi&oacute;n de Reporte</strong>
             <a href="app/reportes/reporte_trabajador.php" target="_blank"><img src="images/printer.png"  width="50" height="50" 



<!-- ======================================================================================================================== -->
<div class="row">
	
	
		
	<div class="span12">

		<div class="caption">
		
<!--///////////////////////////////////////////////////Empieza cuerpo del documento interno////////////////////////////////////////////-->
		<center><h2> Administración de Trabajadores Registrados</h2></center>
		<div class="well well-small">
		<hr class="soft"/>
		<center><h4>Trabajadores Registrados</h4></center>
		<div class="row-fluid">
		



			<?php

				require("connect_db.php");
				$sql=("SELECT * FROM trabajador");
	
//la variable  $mysqli viene de connect_db que lo traigo con el require("connect_db.php");
				$query=mysqli_query($mysqli,$sql);

				echo "<table border='1'; class='table table-hover';>";
					echo "<tr class='warning'>";
					   echo "<td>No. de Control</td>";
						echo "<td>Nombre</td>";
						echo "<td>Apellido Paterno</td>";
						echo "<td>Apellido Materno</td>";
						echo "<td>NSS</td>";
						echo "<td>CURP</td>";
						echo "<td>RFC</td>";
						echo "<td>Puesto</td>";
						echo "<td>Area</td>";
						echo "<td>Turno</td>";
						echo "<td>Empresa</td>";
						echo "<td>Editar</td>";
						
					echo "</tr>";

			    
			?>
			  
			<?php 
				 while($arreglo=mysqli_fetch_array($query)){
				  	echo "<tr class='success'>";
				    	echo "<td>$arreglo[0]</td>";
				    	echo "<td>$arreglo[1]</td>";
						echo "<td>$arreglo[2]</td>";
						echo "<td>$arreglo[3]</td>";
						echo "<td>$arreglo[4]</td>";
						echo "<td>$arreglo[5]</td>";
						echo "<td>$arreglo[6]</td>";
						echo "<td>$arreglo[7]</td>";
						echo "<td>$arreglo[8]</td>";
						echo "<td>$arreglo[9]</td>";
						echo "<td>$arreglo[10]</td>";
				    	

				    	echo "<td><a href='actualizar_trabajador.php?id_control=$arreglo[0]'><img src='images/actualizar.gif' class='img-rounded'></td>";
						
						

						
					echo "</tr>";
				}


			?>
			
				  
			  			  
			  
		
		
		<div class="span8">
		
		</div>	
		</div>	
		<br/>
		


		<!--EMPIEZA DESLIZABLE-->
		
		 <!--TERMINA DESLIZABLE-->



		
		
		</div>

		


		

<!--///////////////////////////////////////////////////Termina cuerpo del documento interno////////////////////////////////////////////-->
</div>

	</div>
</div>
<!-- Footer
      ================================================== -->


</div><!-- /container -->

    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="bootstrap/js/jquery-1.8.3.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
	</style>
	
	<?php
	    include("includes/menus.php"); ?>
    	</div>
    	<!-- Placed at the end of the document so the pages load faster -->
		<!--<script src="includes/jquery-1.9.1.min.js"></script>-->
		<script src="js/bootstrap/js/bootstrap.min.js"></script>
		<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
		<script src="js/ie10-viewport-bug-workaround.js"></script>
		<!-- Add in any FooTable dependencies we may need -->
		<script src="js/moment.min.js"></script>
		<!-- Add in FooTable itself -->
		<script src="js/compiled/footable.js"></script>
		<!-- Initialize FooTable -->
		<script>
			jQuery(function($){
				$('.table').footable();
			});
		</script>
  </body>
  </html>

One Answer

Para obtener datos de diferentes tablas relacionadas puedes unir (JOIN) cada tabla usando las columnas que las ponen en relación:

Por ejemplo:

SELECT 
        t.nombre,
        t.apellido,
        a.descripcion_area, 
        p.descripcion_puesto 
FROM trabajador t 
INNER JOIN area   a ON t.id_area=a.id_area 
INNER JOIN puesto p ON t.id_puesto=p.id_puesto

En esta consulta tú puedes:

  • obtener los campos que necesites de cualquiera de las tablas. Sólo tienes que poner el alias de la tabla, punto, nombre columna y listo.
  • nótese que hemos usado un alias para cada tabla, de forma intuitiva la primera letra que representaría cada tabla. No es necesario usar ...FROM tabla as t, con poner el nombre de la tabla seguido del alias es suficiente. Esta práctica simplifica la consulta, sobre todo cuando son varias columnas y/o nombres de tabla demasiado largos, para no tener que repetir en cada una nombre_tabla.col1, nombre_otra_tabla.colX...
  • el uso de INNER JOIN significa que traerá sólo los registros que tengan coincidencias en ambas tablas que se unen. Si quieres traer también aquellos que no tengan coincidencias en alguna de las tablas puedes usar LEFT JOIN... Hay otros tipos de JOIN, los puedes estudiar en la documentación de MySQL o en alguna de las preguntas/respuestas de Stackoverflow, por ejemplo esta: ¿Cuál es la diferencia entre un inner y un outer join?.
  • obtendrás así un conjunto de resultados que podrás leer por programación y presentar como lo necesites.

Espero te sirva.

Answered by A. Cedano on December 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP