entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema con echo

Tengo un problema a la hora de mandar a imprimir una variable a una tabla
tengo mi query

$query_lista = "SELECT biencatalogo.nombien,concat(marca.nommarca,' ',modelo.nommodelo,' ',
bien.serie) as caracteristicas,color.nomcolor,bien.fijo_movil,bien.propietarioemp,
bien.codbieninv,YEAR(CURDATE())- YEAR(fechaadq) AS
 fechaadq,bien.costo_inicial as costo,bien.costo_inicial,centro_gestor.centro,
 centro_gestor.arefun from bien 
inner join color on bien.codcolor = color.codcolor
inner join centro_gestor on bien.centro = centro_gestor.centro
inner join biencatalogo on biencatalogo.codbiencat = bien.codbiencat 
inner join marca on marca.codmarca = bien.codmarca 
inner join modelo on modelo.codmodelo = bien.codmodelo 
where propietarioemp = 'capufe' and bien.debaja='NO' ";

$qe=mysql_query($query_lista,$conexion);
while($row = mysql_fetch_assoc($qe)){
  if($row["fechaadq"]==0){
    $desc = $row["costo_inicial"]; 
  }else if($row["fechaadq"]==1){
    $desc = $row["costo_inicial"]-($row["costo_inicial"] * 0.10);

  }else if($row["fechaadq"]==2){
    $desc1 = $row["costo_inicial"]-($row["costo_inicial"] * 0.10);
    $desc = $desc1 - ($desc1 * 0.10);

  }else if($row["fechaadq"]==3){
    $desc2 = $row["costo_inicial"]-($row["costo_inicial"] * 0.10);
    $des =  $desc2 - ($desc2 * 0.10) ;
    $desc =  $des - ($des * 0.10) ;

  }else if($row["fechaadq"]==4){
    $desc3 = $row["costo_inicial"]-($row["costo_inicial"] * 0.10);
    $des =  $desc3 - ($desc3 * 0.10) ;
    $de =  $des - ($des * 0.10) ;   
    $desc =  $de - ($de * 0.10) ;

  }else if($row["fechaadq"]==5){
    $desc4 = $row["costo_inicial"]-($row["costo_inicial"] * 0.10);
    $des =  $desc4 - ($desc4 * 0.10) ;
    $de =  $des - ($des * 0.10) ;
    $dec = $de - ($de * 0.10) ;   
    $desc =  $dec - ($dec * 0.10) ;

  }
}

y despues mando a imprimir mi tabla con la variable y no me manda nada en el campo VALOR ACTUALIZADO

<table width="100%" border="1">
                  <tr style="background-color: #CACFD2; font-weight: bold;">
                    <td colspan="18" style="text-align:center"><strong>REPORTE </strong></td>
                    </tr>
                  <tr style="background-color: #CACFD2; font-weight: bold;">
                    <td width="2%"><strong>No</strong></td>
                    <td width="10%">TIPO</td>
                    <td width="9%">CARACTERISTICAS</td>

                    <td width="10%">UBICACION</td>
                    <td width="10%">FIJO/MOVIL</td>
                    <td width="9%">PROPIO/RENTADO</td>
                    <td width="10%">NÚMERO DE INVENTARIO</td>
                    <td width="9%">EDAD DEL BIEN</td>
                    <td width="8%">  COSTO</td>
                    <td width="8%">VALOR ACTUALIZADO</td>

                    <td width="10%">CENTRO GESTOR</td>
                    <td width="10%">AREA FUNCIONAL</td>

                  <?php $result =$startRow_lista; do { ?>
                    <tr style="font-size:12px">
                      <td><strong>
                        <?php $result += 1;
            echo  $result; ?>
                      </strong></td>
                      <td><?php echo $row_lista['nombien']; ?></td>
                      <td><?php echo $row_lista['caracteristicas']; ?></td>
                       <td><?php echo $row_lista['nomcolor']; ?></td>

                      <td><?php echo $row_lista['fijo_movil']; ?></td>
                      <td><?php echo $row_lista['propietarioemp']; ?></td>
                      <td><?php echo $row_lista['codbieninv']; ?></td>
                      <td><?php echo $row_lista['fechaadq']; ?></td>

                      <td><?php echo $row_lista['costo_inicial']; ?></td>
                      <td><?php echo $row_lista['$desc']; ?></td>
                      <td><?php echo $row_lista['centro']; ?></td>
                       <td><?php echo $row_lista['arefun']; ?></td>
                      </tr>

Me podrian ayudar porfavor no encuentro mi error

0voto

carlossevi comentado

Por aclararlo, con el campo "el campo VALOR ACTUALIZADO" te refieres a la expresión <?php echo $row_lista['$desc']; ?>.

En el resto del código que has pegado la variable $row_lista ni se define ni se hace referencia a ella, por lo que no podemos saber qué hace que no tenga datos.

1 Respuesta

3votos

magarzon Puntos30650

En PHP solo se sustituye el valor de las variables dentro de cadenas cuando se utilizan las comillas dobles.

En la línea que pinta el valor de la columna VALOR ACTUALIZADO tendrías que poner comillas dobles.

Pero como hemos aclarado en los comentarios, lo que quieres es sacar ese valor calculado, no un valor de lo que te devuelve la base de datos, por lo tanto simplemente tienes que poner:

<td><?php echo $desc; ?></td>

0voto

Leonardo-Reghoz comentado

ya lo intente asi pero me marca el siguiente error
Notice: Undefined index: 5904.9 in C:\xampp\htdocs\invcapufe\aseguramiento.php on line 208

0voto

Leonardo-Reghoz comentado

Creo que no me esta tomando en cuenta la variable del if

0voto

magarzon comentado

Vale, no había visto cómo generabas esa variable. Lo que quieres es mostrar ese valor, y lo que estás intentando es coger un campo de lo que te devuelve la base de datos con ese valor como índice, por eso te da ese error.

He actualizado la respuesta con lo correcto.

0voto

Leonardo-Reghoz comentado

ya habia probado asi <td><?php echo $desc; ?></td> pero me manda un resultado pero es el mismo en todos los campos creo que no me hace el recorrido del if

0voto

magarzon comentado

Claro, porque el cálculo lo estás haciendo fuera del bucle de pintado de la tabla, por lo que el valor que obtienes es el de la última fila.

Tienes tres opciones:

  1. Guardar cada cálculo (cada valor de $desc) en un array ($resultados[]=$desc), y luego a la hora de pintar la tabla en lugar de $desc poner $resultados[$result-1] (porque $result empieza por 1 y los array en php son 0-indexed)
  2. Hacer el cálculo de $desc dentro del bucle de pintado de la tabla.
  3. Meter el cálculo de $desc dentro de una función, y llamarlo en el pintado de la tabla.

0voto

Leonardo-Reghoz comentado

me podrias ayudar a realizar el array porfavor

1voto

magarzon comentado

Te lo he puesto en la opción 1, el $resultados[] = $desc; lo tienes que poner como última línea dentro del while($row = mysql_fetch_assoc($qe)) :

while($row = mysql_fetch_assoc($qe)){

    ///Aquí todo el cálculo

    //Una vez calculado, lo añadimos al array:
    $resultados[] = $desc;
  }

Y al pintar la tabla:

<td><?php echo $resultados[$result-1];</td>

Asegúrate de definir $resultados = []; antes del bucle, por si acaso, y de que en el código que pinta la tabla tienes acceso a esa variable.

1voto

Leonardo-Reghoz comentado

Muchas gracias ya me funciono con el array, te lo agradezco.
Aquí como te coloco puntos o como es la dinamica?

0voto

Peter comentado

Votando por su respuesta y comentarios y seleccionando la respuesta como correcta, cosa que ya hiciste :)

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta