Foros del Web » Programando para Internet » PHP »

Mostrar estado en una página

Estas en el tema de Mostrar estado en una página en el foro de PHP en Foros del Web. Hola! Les cuento que estoy haciendo una biblioteca virtual la cual tiene las sig pág: libro, usuario, prestamo. Tablas: libro ( libroID,titulo, autor, editorial, isbn ...
  #1 (permalink)  
Antiguo 14/12/2011, 07:35
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Mostrar estado en una página

Hola!

Les cuento que estoy haciendo una biblioteca virtual la cual tiene las sig pág: libro, usuario, prestamo.

Tablas:

libro ( libroID,titulo, autor, editorial, isbn )
prestamo ( prestamoid, titulo, usuario, estado, fecha_prestamo, fecha_devolucion)
usuario ( usuarioid, nombre, apellido, direccion, telefono )

El tema es el sig, en la página libros cada registro tiene al lado una imagen que representa el estado actual del libro ( Disponible en verde, Prestado en rojo ) y un checkbox por cada item para seleccionarlo

Cuando se crea un libro, se agrega el mismo registro en la tabla prestamo pero solamente se registran los sig campos: titulo, estado ( Disponible x def ), y las fechas en 0


Estuve haciendo algo pero no logro que me devuelva el valor de cada fila

Código PHP:

$sql 
"SELECT p.titulo, p.estado FROM prestamo p, libro l WHERE p.titulo = l.titulo";

$rec mysql_query($sql$conectar);

 while(
$row mysql_fetch_array($rec)){

 
     
$dis '<img width="16" height="16" src="img/'.$row["estado"].'">' ;

    
// $dis lo único que muestra repetido es el valor de una fila
    

El resultado de la consulta de arriba es esta:

Titulo estado
Adobe Flash CS5 Disponible
PHP 6 Prestado



Código PHP:
<table id="box-table-a" width="475" border="1" style="text-align:center;">
  <tr> 
        <th scope="col">Titulo</th>
        <th scope="col">Autor</th>
        <th scope="col">Editorial</th>
        <th scope="col">ISBN</th>
        <th></th>
        <th scope="col"><input type="checkbox" name="checkbox" onClick="seleccionar_todo(this);"/></th>
</tr>

<?php
     $sql 
"SELECT * FROM libro";
                
          if ( 
$rec mysql_query($sql,$conectar) ) {
            
            while ( 
$fil mysql_fetch_assoc($rec) ) {
            

 
?>

<tr> 
       <td><?php echo $fil['titulo'?></td>
       <td><?php echo $fil['autor'?></td>
       <td><?php echo $fil['editorial'?></td>
       <td><?php echo $fil['ISBN'?></td>
       <td><?php echo $dis ?></tb>
       <td><input name="idLibro[]" type="checkbox" value="<?php echo $fil['libroID']; ?><?php $estado ?> /></td>
 </tr>

<?php 
    
}
}    
          
?>
                
</table>

Alguien me puede ayudar por favor? me estoy quemando la cabeza y es una b.. seguramente

Muchas Gracias
  #2 (permalink)  
Antiguo 14/12/2011, 08:04
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: Mostrar estado en una página

Código PHP:
Ver original
  1. <table id="box-table-a" width="475" border="1" style="text-align:center;">
  2.   <tr>  
  3.         <th scope="col">Titulo</th>
  4.         <th scope="col">Autor</th>
  5.         <th scope="col">Editorial</th>
  6.         <th scope="col">ISBN</th>
  7.         <th></th>
  8.         <th scope="col"><input type="checkbox" name="checkbox" onClick="seleccionar_todo(this);"/></th>
  9. </tr>
  10.  
  11. <?php
  12.      $sql = "SELECT * FROM libro";
  13.                  
  14.           if ( $rec = mysql_query($sql,$conectar) ) {
  15.              
  16.             while ( $fil = mysql_fetch_assoc($rec) ) {
  17.              
  18.  
  19.  ?>
  20.  
  21. <tr>  
  22.        <td><?php echo $fil['titulo'] ?></td>
  23.        <td><?php echo $fil['autor'] ?></td>
  24.        <td><?php echo $fil['editorial'] ?></td>
  25.        <td><?php echo $fil['ISBN'] ?></td>
  26.        <td><?php echo $dis ?></tb>
  27.        <td><input name="idLibro[]" type="checkbox" value="<?php echo $fil['libroID']; ?>" <?php $estado ?> /></td>
  28.  </tr>
  29.  
  30. <?php  
  31.     }
  32. }    
  33.            
  34. ?>
  35.                  
  36. </table>

No has dicho si te da algún error pero revisando un poco tu código veo que no usas ; desde la línea 22 hasta la 26:

Código PHP:
Ver original
  1. <td><?php echo $fil['titulo']; ?></td>
  2.        <td><?php echo $fil['autor']; ?></td>
  3.        <td><?php echo $fil['editorial']; ?></td>
  4.        <td><?php echo $fil['ISBN']; ?></td>
  5.        <td><?php echo $dis; ?></tb>
  #3 (permalink)  
Antiguo 14/12/2011, 08:46
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Respuesta: Mostrar estado en una página

En verdad no tira ningún error, solo que hace esto:


</tr>
<tr>
<td>Adobe Flash CS5</td>
<td>Freddy Camargo</td>
<td>Fox Andina</td>
<td>123456</td>
<td><img width="16" height="16" src="img/Prestado"></tb>
<td><input name="idLibro[]" type="checkbox" value="12" /></td>
</tr>
<tr>
<td>PHP 6</td>
<td>Weiro Meier</td>
<td>Fox Andina</td>
<td>312432</td>
<td><img width="16" height="16" src="img/Prestado"></tb>
<td><input name="idLibro[]" type="checkbox" value="13" /></td>
</tr>



Esta mostrado el mismo resultado para ambos registros, osea.. en base a la consulta que le paso... actualmente hay dos registros, el primer libro: Adobe Flash CS5 cuyo estado es "Disponible" y el segundo libro: PHP 6 que esta "Prestado"..


me falta seguramente lo sig.. que recorra la tabla, IF ( estado = 'Disponible' ) {
$dis = '<img width="16" height="16" src="img/green.png">' ; } else { $dis = '<img width="16" height="16" src="img/red.png">' ; }

el tema es ese

No se como armarlo dentro del While si deberia ser:

Código PHP:
Ver original
  1. while($row = mysql_fetch_array($rec)){
  2.  
  3.     IF ( $row["estado"] == 'Disponible' ){
  4.      
  5.         $dis = '<img width="16" height="16" src="img/green.png">' ;
  6.  
  7.   } else {
  8.  
  9.           $dis = '<img width="16" height="16" src="img/red.png">' ;
  10.     }
  11.      
  12. }
  #4 (permalink)  
Antiguo 14/12/2011, 08:54
 
Fecha de Ingreso: diciembre-2011
Mensajes: 35
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Mostrar estado en una página

Mmmm por lo que entiendo no se te cumple la condicion de disponible, verdad?

Por qué no pruebas a meterle un print_r($row); como primer comando del while y así ves el contenido del array? Lo digo porque el error tiene toda la pinta de ser que, o bien el campo "estado" no existe o que no se llame "Disponible"
  #5 (permalink)  
Antiguo 14/12/2011, 10:09
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Respuesta: Mostrar estado en una página

Le hice un print como me decis y hasta le hice:

print_r($row['estado']); en el while y me devuelve bien ambos estados: Disponible para el primero y Prestado para el seghundo, por ahi es la forma en como se muestran en la tabla
  #6 (permalink)  
Antiguo 14/12/2011, 10:21
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: Mostrar estado en una página

Sería print_r ($row); para imprimir el contenido del array.
  #7 (permalink)  
Antiguo 14/12/2011, 10:26
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Mostrar estado en una página

Creo que queres, hacer un listado de libros, y que al lado te muestre los estados.

La estructura de la tabla se puede decir que estan bien.

El error esta en la consulta SQL.

Primero para listar vamos a necesitar llamar a todos los libros que queremos..

"SELECT * FROM libro"

Despues necesitamos saber el estado de cada libro:

"SELECT estado FROM prestamo WHERE titulo='".$variable."'"

Unificamos las consultas, para crear un solo Bucle.

Código PHP:
<?php
$SQL 
="SELECT libro.*, prestamo.estado FROM libro JOIN prestamo ON prestamo.titulo=libro.titulo";
$QUERY mysql_query$SQL ) or die (mysql_error());
// bucle
while( $fil mysql_fetch_assoc$QUERY ) )
{
     
$dis '<img width="16" height="16" src="img/'.$row["estado"].'">' 
?>
<td><?php echo $fil['titulo']; ?></td> 
<td><?php echo $fil['autor']; ?></td>
<td><?php echo $fil['editorial']; ?></td>
<td><?php echo $fil['ISBN']; ?></td> 
<td><?php echo $dis?></tb>
<?}
?>
Espero que te sirva.
__________________
Mono programando!
twitter.com/eguimariano
  #8 (permalink)  
Antiguo 14/12/2011, 10:31
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Mostrar estado en una página

No hay caso,

me sigue mostrando esto en el source:

<tr>
<td>Adobe Flash CS5</td>
<td>Freddy Camargo</td>
<td>Fox Andina</td>
<td>123456</td>
<td><img width="32" height="32" src="img/1"></td>
<td><input name="idLibro[]" type="checkbox" value="12" /></td>
</tr>
<tr>
<td>PHP 6</td>
<td>Weiro Meier</td>
<td>Fox Andina</td>
<td>312432</td>
<td><img width="32" height="32" src="img/1"></td>
<td><input name="idLibro[]" type="checkbox" value="13" /></td>


Hay algo que esta mal cuando se muestra en la tabla

<div id="lib">
<h4>Libros</h4>
<form id="form" method="post" action="libros.php">

<table id="box-table-a" width="475" border="1" style="text-align:center;">
<tr>
<th scope="col">Titulo</th>
<th scope="col">Autor</th>
<th scope="col">Editorial</th>
<th scope="col">ISBN</th>
<th></th>
<th scope="col"><input type="checkbox" name="checkbox" onClick="seleccionar_todo(this);"/></th>
</tr>
Código PHP:
<?php
                $sql 
"SELECT * FROM libro";
                
                if ( 
$rec mysql_query($sql,$conectar) ) {
            
                    while ( 
$fil mysql_fetch_assoc($rec) ) {
                  
            
?>
<tr>
Código PHP:
<td><?php echo $fil['titulo']; ?></td>
<td><?php echo $fil['autor']; ?></td>
<td><?php echo $fil['editorial']; ?></td>
<td><?php echo $fil['ISBN']; ?></td>
<td><?php echo '<img width="32" height="32" src="img/'.print_r($row).'">' ?></td>
<td><input name="idLibro[]" type="checkbox" value="<?php echo $fil['libroID']; ?><?php $estado ?> /></td>
                  </tr>
            <?php 
                
}
            }    
          
            
?>
</table>
  #9 (permalink)  
Antiguo 14/12/2011, 10:39
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Mostrar estado en una página

Cita:
Iniciado por SirDuque Ver Mensaje
Creo que queres, hacer un listado de libros, y que al lado te muestre los estados.

La estructura de la tabla se puede decir que estan bien.

El error esta en la consulta SQL.

Primero para listar vamos a necesitar llamar a todos los libros que queremos..

"SELECT * FROM libro"

Despues necesitamos saber el estado de cada libro:

"SELECT estado FROM prestamo WHERE titulo='".$variable."'"

Unificamos las consultas, para crear un solo Bucle.

Código PHP:
<?php
$SQL 
="SELECT libro.*, prestamo.estado FROM libro JOIN prestamo ON prestamo.titulo=libro.titulo";
$QUERY mysql_query$SQL ) or die (mysql_error());
// bucle
while( $fil mysql_fetch_assoc$QUERY ) )
{
     
$dis '<img width="16" height="16" src="img/'.$row["estado"].'">' 
?>
<td><?php echo $fil['titulo']; ?></td> 
<td><?php echo $fil['autor']; ?></td>
<td><?php echo $fil['editorial']; ?></td>
<td><?php echo $fil['ISBN']; ?></td> 
<td><?php echo $dis?></tb>
<?}
?>
Espero que te sirva.

Sirvió!!! Muchas Gracias!!!

Etiquetas: mysql
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 15:53.