【发布时间】:2021-08-11 16:50:39
【问题描述】:
一切都很好,问题是我目前有 6000 行代码,有没有更有效的方法来替换所有这些开关? 这是我的所有可能性的表格:
<form action="" method="POST">
<select name="ordine">
<option value="0" selected hidden>ordina per...</option>
<option value="1">A-Z</option>
<option value="2">Z-A</option>
</select>
<select name="epoca">
<option value="0" selected hidden>Secoli di scrittura</option>
<option value="1">1300</option>
<option value="2">1800</option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
<option value="6"></option>
<option value="7"></option>
<option value="8"></option>
</select>
<select name="movimento">
<option value="0" selected hidden>Movimento letterario</option>
<option value="1">Dolce stil novo</option>
<option value="2">VEDI FOTO DI WIKIPEDIA</option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
<option value="6"></option>
<option value="7"></option>
<option value="8"></option>
</select>
<label class="checkbox-inline">
<input type='hidden' value='0' name='letteratura_ita'>
<input type="checkbox" name="letteratura_ita" value="1">Letteratura italiana
</label>
<label class="checkbox-inline">
<input type='hidden' value='0' name='letteratura_estero'>
<input type="checkbox" name="letteratura_estero" value="1">Letteratura straniera
</label>
<button type="submit" name='ricerca'>Cerca</button>
</form>
对不起意大利语中的单词...好吧,既然我已经掌握了所有这些可能性,我就开始为它做一个 switch(true) 。这是第一个的示例代码:
case ($opzione1 == 1 && $opzione2 == 0 && $opzione3 == 0 && $opzione4 == 0 && $opzione5 == 0):
$comando = "select * from autori order by cognome";
$risultato = mysqli_query($conn, $comando);
while ($autore = mysqli_fetch_assoc($risultato)) {
echo "<table border='1' class='autori'>\n";
$idautore = $autore["idautore"];
echo '<td><img src="data:image/jpeg;base64,' . base64_encode($autore['img']) . '" width="200" height="200"/> </td>';
echo "<tr>\n";
echo "<td> {$autore['nome']} {$autore['cognome']} </td>";
echo "</tr>\n";
echo "<tr>\n";
echo "<td> {$autore['descrizione_breve']} </td>";
echo "</tr>\n";
echo "</table>\n";
}
mysqli_close($conn);
break;
【问题讨论】:
-
需要重构的工作解决方案更适合Code Review Stack Exchange 站点。
-
如果您的代码中有
switch(true),那么您使用的是“反模式”。使用它没有功能上的好处,它通常表明是时候重构你的代码了。将“处理代码”与“显示代码”分开通常是一个好主意。另外,你不需要fetch()stackoverflow.com/a/66775416/2943403 -
我们不知道这些
$opzione变量是从哪里来的。我们不知道您想要的确切结果。根据 Stack Overflow 标准,您的问题不清楚。
标签: php html mysql switch-statement