Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta 2 tablas MySQL PHP

Estas en el tema de Consulta 2 tablas MySQL PHP en el foro de PHP en Foros del Web. Hola que tal buen día, mi pregunta es sobre la manipulación del resultado que obtengo al consultar dos tablas con PHP y MYSQL ya que ...
  #1 (permalink)  
Antiguo 14/03/2013, 14:50
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Consulta 2 tablas MySQL PHP

Hola que tal buen día, mi pregunta es sobre la manipulación del resultado que obtengo al consultar dos tablas con PHP y MYSQL ya que al querer mostrar el resultado en unas celdas (HTML), solo me muestra el contenido de la primera tabla consultada.
Primero lo intenté con un VIEW y pues pensé que eso seria causante del error, pero después lo hice con un simple SELECT y el resultado fue el mismo. Aquí la info:

TABLAS:

CARTUCHO
idcartucho
descripcion
cantidad
fechaingreso
precio
fechadevolucion
foliosolicitud
fechaentrega

SOLICITUDCARTUCHO
folio
depto
fechaelaboracion
tiposolicitud
justificacion
cantidad
descripcion
nocartucho
noimpresora
autoriza
solicitante
idusuario


CONSULTA (es una función de php que solicito para mostrar contenido):

Código PHP:
function listaParcialConsumibles($db//$db es la variable de conexion, aqui vienen atributos para realizar la conexion al server.
{
    
$consulta $db->prepare('SELECT c.idcartucho,c.descripcion,
    c.fechadevolucion, c.folio, s.depto, s.solicitante, 
    s.fechaentrega FROM consumibles c, solicitudescon s where c.folio = s.folio'
);
    
$consulta->execute();
    return 
$consulta->fetchAll();

con esto mando llamar la consulta de arriba, es igual una funcion.

Código PHP:
function listarConsumibles()
{

    include 
'modelos/consumiblesModelo.php';
    
        
//Le pide al modelo todos los items
    
$items listaParcialConsumibles($db);

    
//Pasa a la vista toda la información que se desea representar
    
require 'vistas/todosconsumibles.php';


y con esto muestro el contenido, que viene siendo una tabla en HTML:

Código HTML:
<table width="751" border="0">
  
		<tr>
		<th width="71" height="29" scope="col">No Cartucho</th>
          <th width="71" scope="col">Descripcion</th>
          <th width="71" scope="col">Fecha devolucion</th>
		   <th width="71" scope="col">Folio</th>
		  <th width="71" scope="col">Departameto</th>
		   <th width="71" scope="col">Solicitante</th>
		    <th width="71" scope="col">Fecha Entrega</th>
        </tr>
		<?php
	foreach($items as $item)
	{
	?>
        <tr>
          <td><?php echo $item['idcartucho']?></td>
          <td><?php echo $item['descripcion']?></td>
          <td><?php echo $item['fechadevolucion']?></td>
          <td><?php echo $item['folio']?></td>
          <td><?php echo $item['depto']?></td>
          <td><?php echo $item['solicitante']?></td>
	  <td><?php echo $item['fechaentrega']?></td>
        
        </tr>
		<?php
	}
	?>
      </table> 

LOS ERRORES:

Notice: Undefined index: depto in consumibles.php
Notice: Undefined index: slicitante in consumibles.php
Notice: Undefined index: fechaentrega in consumibles.php

No se cual sea concretamente el problema al recibir las variables, muchas gracias por leer y espero su gran ayuda.
  #2 (permalink)  
Antiguo 14/03/2013, 20:31
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Consulta 2 tablas MySQL PHP

Creo que tu problema está en esta parte:

Código PHP:
<?php
    
foreach($items as $item)
    {
    
?>
        <tr>
          <td><?php echo $item['idcartucho']?></td>
          <td><?php echo $item['descripcion']?></td>
          <td><?php echo $item['fechadevolucion']?></td>
          <td><?php echo $item['folio']?></td>
          <td><?php echo $item['depto']?></td>
          <td><?php echo $item['solicitante']?></td>
      <td><?php echo $item['fechaentrega']?></td>
        
        </tr>
        <?php
    
}
    
?>
¿De dónde recoge los valores de depto, fechaentrega y solicitante? (lo escribiste sin la o abajo, si copiaste y pegaste tal vez haya un error de tipeo) Esos notice te salen si ingresás a la página sin enviar los datos necesarios para que puedan ser recuperados...
  #3 (permalink)  
Antiguo 15/03/2013, 09:20
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta 2 tablas MySQL PHP

Muchas gracias por tu respuesta sjj, fíjate que ya tenia identificado que estaba algo mal con la parte que mencionas, de echo en teoría debería de mostrar el contenido del campo del arreglo que solicito ya que de esta manera e consultado tablas (de a una) y me muestra los resultados que requiero, ahora bien, me marca que la definicion de las variables 'depto','solicitante', 'fechaentrega' no esta, eso quiere decir entonces que no me esta leyendo el resultado de la segunda tabla, el punto es que no se como sacar ese resultado de la segunda tabla de otra manera, y no, no copiaba y pegaba el nombre de las variables, las he escrito y revisado muchas veces y no encuentro la falla.

Código PHP:
function listarConsumibles() 


    include 
'modelos/consumiblesModelo.php'
     
        
//Esta variable me sirve para enviarle a la función las variables de conexión a      //la base de datos, y después ella misma, recibe el resultado que arrojó la //consulta de la funcion que se llamó.
    
$items listaParcialConsumibles($db); 

    
//Pasa a la vista toda la información que se desea representar 
    
require 'vistas/todosconsumibles.php'

DENTRO DEL CONTENDO HTML:

Código PHP:
    <?php 
//aquí le digo que por cada valor de items que de ahora en adelante lo llamaré //item saque el campo con el nombre correspondiente a mis tablas $item['nombredemicampo'].
    
foreach($items as $item)
    {
    
?>
        <tr>
          <td><?php echo $item['idcartucho']?></td>
          <td><?php echo $item['descripcion']?></td>
          <td><?php echo $item['fechadevolucion']?></td>
          <td><?php echo $item['folio']?></td>
          <td><?php echo $item['depto']?></td>
          <td><?php echo $item['solicitante']?></td>
      <td><?php echo $item['fechaentrega']?></td>
        
        </tr>
        <?php

Ojalá y me haya explicado mejor.
  #4 (permalink)  
Antiguo 15/03/2013, 10:13
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta 2 tablas MySQL PHP

con esto veo que el arreglo que manda es otro...

Código PHP:
echo "<pre>";
print_r($items);
echo 
"</pre>"

el arreglo que saca es este:

Array
(
[0] => Array
(
[idcartucho] => 5
[0] => 5
[descripcion] => cartucho HP C4192A
[1] => cartucho HP C4192A
[cantidad] => 2
[2] => 2
[fechaingreso] => 2013-03-11
[3] => 2013-03-11
[precio] => 4000
[4] => 4000
[fechadevolucion] =>
[5] =>
[folio] => 1
[6] => 1
)

)


Esta haciendo SELECT a la tabla de consumibles y no a dos tablas, la verdad no tengo idea porque hace SELECT a solo una de las tablas, por eso mismo me dice que no reconoce las variables que solicito, alguna idea? (NOTA: DEBE DE VER ALGO RELACIONADO CON QUE ESTOY USANDO PDO?)

Última edición por gunsofledz; 15/03/2013 a las 13:45
  #5 (permalink)  
Antiguo 15/03/2013, 17:13
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Consulta 2 tablas MySQL PHP

¿Esta sintaxis es correcta?

Código MySQL:
Ver original
  1. $consulta = $db->prepare('SELECT c.idcartucho,c.descripcion,
  2.    c.fechadevolucion, c.folio, s.depto, s.solicitante,  
  3.    s.fechaentrega FROM consumibles c, solicitudescon s where c.folio = s.folio'

Te lo pregunto porque veo que uniste dos tablas sin usar inner join. Yo lo haría así a ver si funciona:

Código MySQL:
Ver original
  1. $consulta = $db->prepare('SELECT c.idcartucho,c.descripcion,
  2.    c.fechadevolucion, c.folio, s.depto, s.solicitante,  
  3.    s.fechaentrega FROM consumibles c INNER JOIN solicitudescon s ON c.folio = s.folio'
  #6 (permalink)  
Antiguo 18/03/2013, 21:45
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta 2 tablas MySQL PHP

No mi amigo, no funciona y no se porque...
  #7 (permalink)  
Antiguo 18/03/2013, 22:15
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Consulta 2 tablas MySQL PHP

¿Podrías ser un poco más específico? ¿No funciona porque tira un error? ¿Qué error? ¿No devuelve ningún registro? ¿O qué?
  #8 (permalink)  
Antiguo 19/03/2013, 05:11
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta 2 tablas MySQL PHP

yo miro y miro tu tabla y en la consulta igualas c.folio con s.folio cuando que solo en una tabla existe ese campo, y en la otra no, por ende no se se da lo de Foreing Key... igualala con el campo que corresponda... o nunca te va a salir el resultado de la otra tabla.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 19/03/2013, 09:13
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta 2 tablas MySQL PHP

Ssj el error que habia puesto es este:

LOS ERRORES:

Notice: Undefined index: depto in consumibles.php
Notice: Undefined index: solicitante in consumibles.php
Notice: Undefined index: fechaentrega in consumibles.php

Ya que cuando solicito la consulta de ambas tablas, solo me regresa la consulta de la primera tabla, es decir, todos los valores contenidos de la primera tabla, aunque no le haya echo un SELECT; la segunda tabla no la considera, por eso mismo me manda esos Notice, ya que los valores: depto, solicitante y fechaentrega no los encuentra ya que no los lee con el SELECT.

Esto te lo digo porque con esto:

Código PHP:
echo "<pre>";
print_r($items);
echo 
"</pre>"
Saco los valores del arreglo para ver el resultado devuelto y no encuentro lo que mando llamar con el SELECT.
Loncho_rojas, gracias por tu comentario, fíjate que los campos que mencionas (c.folio & s.folio) una de las tablas lo tiene como PK y el otro como FK, ya que cuando se genere en un lado un valor de ese campo, sea requerido en el otro y haya relación con ese valor para ambas tablas,hummm, no se si haya un problema con las relaciones en la BBDD, voy a revisar igual y puede ser ese el problema.

Revisaré la base de datos ya que no se porque no me arroja la otra tabla(no se me había ocurrido) ya que en teoría debería de salir la consulta, después comento que sucedió, si se les ocurre algo mas estaría muy agradecido que me lo dijeran, gracias por todo.
  #10 (permalink)  
Antiguo 19/03/2013, 09:36
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Consulta 2 tablas MySQL PHP

Hola gunsofledz!!!

Solo como comentario para loncho_rojas, las tablas de gunsofledz si estan relacionadas solo que no en ambas se conserva el mismo nobre del campo que las relaciona, mira en las tabla de:

CARTUCHO
......
.........
...........
....
foliosolicitud
.............

SOLICITUDCARTUCHO
folio
....
....
..

En la de solicitudcatucho tiene como su primary key el campo "folio" mientras que en la de cartucho tiene el campo "foliosolicitud", que por lo que me imagino gunsofledz, es de esta manera de como estan realacionas tus tablas o me equivoco?????????

La razon principal por la que no puedes acceder a todos los datos que quieres extraer de la consulta es por que la estas haciendo mal y ademas no estas consultando las tablas que estan mostrando!!!!!!

Las tablas a las que consultas son: consumibles c y solicitudescon s, mientras las tablas con las que planteas tu problematica son solicitudcatucho y cartucho ..............................


Espero te pueda servir de ayuda!!! Saludos a ambos!!!
__________________
Solo se... que no se nada!!! 0_o
  #11 (permalink)  
Antiguo 19/03/2013, 15:06
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta 2 tablas MySQL PHP

Hola Huacho12 gracias por hacer tu comentario, tienes razón sobre la relación de los campos de s.folio y c.folio. De igual manera, sobre los nombres de las tablas, perdón a todos si causa un conflicto sobre el planteamiento, solo les pido sigan la consulta que he realizado con los correspondientes nombres de las tablas (no se porque los puse así ¬¬). Huacho12 he echo las consultas y he puesto los nombres como corresponden a cada tabla y campo y aun así sigue sin mostrarme lo que deseo. Espero sus respuestas, muchas gracias.
  #12 (permalink)  
Antiguo 20/03/2013, 07:19
Avatar de JoseGMariani  
Fecha de Ingreso: diciembre-2008
Ubicación: Edo Lara
Mensajes: 251
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Consulta 2 tablas MySQL PHP

Buenas yo creo que e spor que los array en php cuando tienen el mismo ID se sobreescriben... creo que debe ser eso, estoy apenas estudiando array's, :S (tengo un problema inmenso en querer mostrar un resultado de una consulta como columnnas de mi tabla generada en html por php. Si alguien sabe y me puede ayudar mande privado. )

amigo prueba lo que te dije, de lo que los datos se sobre escriben, yo no entiendo muy bien se que tu lo entiendes mejor que yo, pero aqui te paso un video si lo vez quisas entiendas lo que digo, y sea ese tu problema, espeor haber aportado algo. =)

aqui el video casi al final el hace un analisis de un detalle que tiene php.

https://www.youtube.com/watch?v=IQKSADFB9-0
__________________
"Nunca seas arrogante con los humildes, ni humilde con los arrogantes." Paulo Coelho..
  #13 (permalink)  
Antiguo 20/03/2013, 10:20
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta 2 tablas MySQL PHP

Hola JoseGMariani gracias por tu comentario, pues realmente no creo que sea por la sobre escritura de IDs, ya que el foreach muestra el contenido del vector de principio a fin sin repetir los valores leídos, realmente no creo que sea eso, aun así veré el vídeo que nos compartes, gracias.
  #14 (permalink)  
Antiguo 20/03/2013, 12:54
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Consulta 2 tablas MySQL PHP

Hola amigos nuevamente, deseo compartir la solución a mi problema, aunque sí, déjenme aclarar, fue por mi estupidez y mi falta de análisis de la lógica del orden de las cosas .
Les cuento, siendo nuevo en PHP y en Foros del Web suelo no aclarar ciertas cosas, así mismo, en PHP estoy implementando un patrón de un control de inventarios en MVC. Por esto mismo tengo varios acceso de diferentes áreas y niveles jerarquicos de administración.

Ahora, recién inicias te manda a tu respectiva área de administración con niveles de control y vistas con respecto a tu usuario. Manejo este control basándome en un Index que dirige y controla todas las peticiones sin que el usuario este en contacto con algun PHP que no sea Index. Vergonzosamente no me di cuenta que al inicio tengo un default con respecto a las sesiones ya mencionadas y no me fije que la función que estaba programando no estaba siendo llamada adecuadamente por el controlador y por eso no me hacia nada el modelo de la consulta ... Si, por favor abucheen, un error de principiante. Muy obvio.

Aun así les comparto este vergonzoso error para que no caigan como yo en ciertos hábitos de programador y si tienen un problema tan minúsculo como el mio tengan un flujo de control de resolución de errores. Les agradezco enormemente a todos por responder y por su seguimiento a mi problema, espero algún día retribuirles, por su tiempo y su camaradería, gracias!!!

Etiquetas: formulariosenphp, tablasmysql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:07.