Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Aplicar condicionales en un script PHP

12 de noviembre de 2015

Hola buenas , supongamos que yo obtengo un resultado cuando lanzo una variable como esta: $distrib->Estado;

Los estados son:

  • reservada
  • confirmada
  • cargada
  • eliminada

Bueno pues supongamos que yo quiero que cuando me devuelva "reservada" quiero que en vez de las letras me saliera un icono como por ejemplo.

<button type="button" class="btn btn-success">
    <i class="entypo-check"></i>
</button>

Entiendo que esto se deberia hacer con un condicional como por ejemplo:

if( $distrib->Estado === 'Confirmada' )
{
    echo '<i class="entypo-check"></i>';
}
else
{
    echo $distrib->Estado;
}

Pero asi solo me lo hace una vez. También tengo que decir que donde quiero que actue es dentro de una tabla que lleva un foreach:

if( $distrib->Estado === 'Confirmada' )
{
    echo '<button type="button" class="btn btn-success">
        <i class="entypo-check"></i>
    </button>';
}
else
{
    echo $distrib->Estado;
}
 
echo '<table class="table  table-bordered table-striped datatable"  id="table-2">';
echo    '<thead>';
echo        '<tr class="success" >';
echo            '<th>xxxx</th>';
echo            '<th>xxx</th>';
echo            '<th>xxx xxx</th>';
echo            '<th>Nombre</th>';
echo            '<th>Estado</th>';
echo        '</tr>';
echo    '</thead>';
if (is_array($xxxx)) {
  foreach($distribuciones as $xx) {
 
 echo ' <tbody>
       <tr>
            <td>'.$distrib->Contrato.'</td>
            <td>'.$distrib->xx.'</td>
            <td>'.$distrib->.'</td>
            <td>'.$distrib->.'</td>
            <td>'.$distrib->.'</td>
            <td>'.$distrib->.'</td>
            <td>'.$distrib->Estado.'</td>
        </tr>'; 
  }
}

Por el momento no funciona


Respuestas

#1

Para no ensuciar mucho el código, lo mejor sería que definieras una función PHP que se encarge de mostrar los iconos. Para ello, cambia esta línea:

'<td>'.$distrib->Estado.'</td>'

por esta otra:

'<td>'.muestraEstado($distrib->Estado).'</td>'

Luego ya solo tienes que definir una función PHP en esa misma página y con el siguiente aspecto:

function muestraEstado($estado)
{
    if($estado === 'Confirmada') {
        echo '<button type="button" class="btn btn-success">
            <i class="entypo-check"></i>
        </button>';
    } else {
        echo $estado;
    }
}

@javiereguiluz

12 noviembre 2015, 12:15
#2

Te he hecho caso al pie de la letra, me acepta el código pero no me pinta los iconos dentro de la tabla.

echo '<table class="table  table-bordered table-striped datatable"  id="table-2">';
echo    '<thead>';
echo        '<tr class="success" >';
echo            '<th>Contrato</th>';
echo            '<th>Cliente</th>';
echo            '<th>Matricula Tractora</th>';
echo            '<th>DNI PASAPORTE</th>';
echo            '<th>Matricula Remolque</th>';
echo            '<th>Nombre</th>';
echo            '<th>Estado</th>';  
echo        '</tr>';
echo    '</thead>';
 
function muestraEstado($estado)
{
    if($estado === 'Confirmada') {
        echo '<button type="button" class="btn btn-success">
            <i class="entypo-check"></i>
        </button>';
    } else {
        echo $estado;
    }
}
 
if (is_array($distribuciones)) { 
 foreach($distribuciones as $distrib) {
     echo ' <tbody>
        <tr>
            <td>'.$distrib->Contrato.'</td>
            <td>'.$distrib->Cliente.'</td>
            <td>'.$distrib->Matricula_tractora.'</td>
            <td>'.$distrib->DNI_conductor.'</td>
            <td>'.$distrib->Matricula_remolque.'</td>
            <td>'.$distrib->Nombre_conductor.'</td>
            <td>'.muestraEstado($distrib->Estado).'</td>
            </tr>';
  }     
}
echo '</table>';

Te adjunto imagen para que veas como lo monta:

Si la dejo como antes la palabara "Confirmada", que es el resultado de :

'<td>'.$distrib->Estado.'</td>'

@javierecompring

12 noviembre 2015, 12:29
#3

Buenas @javierecompring, no se si ya pudiste solucionar tu problema, segun pude ver en tu codigo te falta realizar un echo '</tbody>' ya que nunca se realiza el cierre del cuerpo de la tabla. Saludos

@Diloog363

12 noviembre 2015, 12:55
#4

no gracias por eso pero cerrando me lo pintaba igual fuera de la tabla

al final lo solucione asi:

echo '<table class="table  table-bordered table-striped datatable"  id="table-2">';
echo    '<thead>';
echo        '<tr class="success" >';
echo            '<th>Contrato</th>';
echo            '<th>Cliente</th>';
echo            '<th>Matricula Tractora</th>';
echo            '<th>DNI PASAPORTE</th>';
echo            '<th>Matricula Remolque</th>';
echo            '<th>Nombre</th>';
echo            '<th>Estado</th>';  
echo        '</tr>';
echo    '</thead>'; 
function muestraEstado($estado)
{
    if($estado === 'Confirmada') {
        echo '<td><button type="button" class="btn btn-success">
                <i class="entypo-check"></i>
                </button></td>';
    } else {
        echo $estado;
    }
}
 
if (is_array($distribuciones)) { 
 foreach($distribuciones as $distrib) {
 
 echo ' <tbody>
        <tr>
 
            <td>'.$distrib->Contrato.'</td>
            <td>'.$distrib->Cliente.'</td>
            <td>'.$distrib->Matricula_tractora.'</td>
            <td>'.$distrib->DNI_conductor.'</td>
            <td>'.$distrib->Matricula_remolque.'</td>
            <td>'.$distrib->Nombre_conductor.'</td>';
            muestraEstado($estado);
    echo    '</tr> 
        </tbody>';
 } 
 
}
 
echo '</table>';

Muchas gracias de todas formas!!

@javierecompring

12 noviembre 2015, 17:15