Entonces tengo este sitio que tiene un cuadro de selección que contiene:

1
2
3
4

Pero quiero cambiarlos a un valor estático como:

Travel
Housing
Gourmet
Medical

No hay un nombre de campo especificado en la base de datos, como Viajes, etc. Es puramente numérico. Entonces tengo que asignar valores estáticos que representen cada número.

Los únicos nombres de campo en la base de datos son id, industry_id, company_name. el que especifiqué arriba (números 1-4) son industry_id.

En mi controlador:

$params["filter"] = $this->Users->get_category();

Modelo:

$sql = "SELECT industry_id FROM company GROUP BY industry_id ORDER BY industry_id ASC";
$query = $this->db->query($sql);
return $query->result();

Vista:

<select class="form-control" name="field">
<?php foreach($filter as $cat)
{ 
    echo '<option value="'.$cat->industry_id.'">'.$cat->industry_id.'</option>';
}
?>
</select>

¿Cómo puedo hacerlo?

0
John Dale Ocaya Andil Dale 15 nov. 2017 a las 10:34

2 respuestas

La mejor respuesta

Que hay de eso

$sql = "SELECT industry_id, CASE WHEN industry_id = 1 THEN 'Travel' WHEN industry_id = 2 THEN 'Housing' WHEN industry_id = 3 THEN 'Gourmet' WHEN industry_id = 4 THEN 'Medical' END AS industry_description  FROM company GROUP BY industry_id ORDER BY industry_id ASC";

Tenga en cuenta que si industry_id es un INT, este código debería funcionar; si es un VARCHAR, debe usar, por ejemplo, WHEN industry_id = '1'

Y en su vista, simplemente acceda a industry_description

<select class="form-control" name="field">
<?php foreach($filter as $cat)
{ 
    echo '<option value="'.$cat->industry_id.'">'.$cat->industry_description.'</option>';
}
?>
</select>
2
sintakonte 15 nov. 2017 a las 08:28
<?php
$a = array();
$b = ['Travel', 'Housing', 'Gourmet','Medical'];
$i = 0;
foreach ($filter as $cat) {
    $a[$cat->industry_id] = $b[$i];
    $i++;
}

?>
<select class="form-control" name="field">
    <?php foreach ($a as $k => $val) {
        echo '<option value="' . $k . '">' . $val . '</option>';
    }
    ?>
</select>
0
TimBrownlaw 15 nov. 2017 a las 09:03