/ / errore in altro se righe? C'è un modo più conciso di scrivere questo? - php, if-statement

errore in altro se righe? C'è un modo più conciso di scrivere questo? - php, if-statement

Il mio codice seleziona dal database, scrive le informazioni quindi esegue un altro ciclo if per decidere quale codice inviare:

<?php

echo "<p>the loop<p><br>
<p>Accreditations</p>";

if ($fields["accreditations1"]==1){echo "HTML CODE 1";} else {
if ($fields["accreditations1"]==2){echo "HTML CODE 2";} else {
if ($fields["accreditations1"]==3){echo "HTML CODE 3";} else {
if ($fields["accreditations1"]==4){echo "HTML CODE 4";} else {
if ($fields["accreditations1"]==5){echo "HTML CODE 5";} else {
if ($fields["accreditations1"]==6){echo "HTML CODE 6";} else {
if ($fields["accreditations1"]==7){echo "HTML CODE 7";} else {
if ($fields["accreditations1"]==0){echo "";}

if ($fields["accreditations2"]==1){echo "HTML CODE 1";} else {
if ($fields["accreditations2"]==2){echo "HTML CODE 2";} else {
if ($fields["accreditations2"]==3){echo "HTML CODE 3";} else {
if ($fields["accreditations2"]==4){echo "HTML CODE 4";} else {
if ($fields["accreditations2"]==5){echo "HTML CODE 5";} else {
if ($fields["accreditations2"]==6){echo "HTML CODE 6";} else {
if ($fields["accreditations2"]==7){echo "HTML CODE 7";} else {
if ($fields["accreditations2"]==0){echo "";}

if ($fields["accreditations3"]==1){echo "HTML CODE 1";} else {
if ($fields["accreditations3"]==2){echo "HTML CODE 2";} else {
if ($fields["accreditations3"]==3){echo "HTML CODE 3";} else {
if ($fields["accreditations3"]==4){echo "HTML CODE 4";} else {
if ($fields["accreditations3"]==5){echo "HTML CODE 5";} else {
if ($fields["accreditations3"]==6){echo "HTML CODE 6";} else {
if ($fields["accreditations3"]==7){echo "HTML CODE 7";} else {
if ($fields["accreditations3"]==0){echo "";}

echo "<br />";

if ($fields["accreditations4"]==1){echo "HTML CODE 1";} else {
if ($fields["accreditations4"]==2){echo "HTML CODE 2";} else {
if ($fields["accreditations4"]==3){echo "HTML CODE 3";} else {
if ($fields["accreditations4"]==4){echo "HTML CODE 4";} else {
if ($fields["accreditations4"]==5){echo "HTML CODE 5";} else {
if ($fields["accreditations4"]==6){echo "HTML CODE 6";} else {
if ($fields["accreditations4"]==7){echo "HTML CODE 7";} else {
if ($fields["accreditations4"]==0){echo "";}

if ($fields["accreditations5"]==1){echo "HTML CODE 1";} else {
if ($fields["accreditations5"]==2){echo "HTML CODE 2";} else {
if ($fields["accreditations5"]==3){echo "HTML CODE 3";} else {
if ($fields["accreditations5"]==4){echo "HTML CODE 4";} else {
if ($fields["accreditations5"]==5){echo "HTML CODE 5";} else {
if ($fields["accreditations5"]==6){echo "HTML CODE 6";} else {
if ($fields["accreditations5"]==7){echo "HTML CODE 7";} else {
if ($fields["accreditations5"]==0){echo "";}

if ($fields["accreditations6"]==1){echo "HTML CODE 1";} else {
if ($fields["accreditations6"]==2){echo "HTML CODE 2";} else {
if ($fields["accreditations6"]==3){echo "HTML CODE 3";} else {
if ($fields["accreditations6"]==4){echo "HTML CODE 4";} else {
if ($fields["accreditations6"]==5){echo "HTML CODE 5";} else {
if ($fields["accreditations6"]==6){echo "HTML CODE 6";} else {
if ($fields["accreditations6"]==7){echo "HTML CODE 7";} else {
if ($fields["accreditations6"]==0){echo "";}

?>

Per prima cosa devo fare qualcosa per chiudere i if? C'è anche un modo più breve per farlo?

risposte:

2 per risposta № 1

Usa il switch dichiarazione, come questo

switch( $fields["accreditations1"] ) {
case 1: echo "HTML CODE 1"; break;
case 2: echo "HTML CODE 2"; break;
case 3: echo "HTML CODE 3"; break;
case 4: echo "HTML CODE 4"; break;
case 5: echo "HTML CODE 5"; break;
case 6: echo "HTML CODE 6"; break;
case 7: echo "HTML CODE 7"; break;
case 0: echo "";
}

Presumo, questo non è l'output effettivo. Se mi sbaglio, dovresti considerare di scrivere una funzione separata per questo!


1 per risposta № 2

Prova questo, usando a for ciclo continuo,

 for( $i=1; $i<=count($fields); $i++) {
if( $fields["accreditations".$i] > 0 && $fields["accreditations".$i] <= 7)
echo "HTML CODE " $fields["accreditations".$i];
}

1 per risposta № 3

Penso che tu abbia un " troppi dopo <p>Accreditations</p>.

Oltre a ciò, puoi usare un'istruzione switch che accorcia un po 'questo codice.

Puoi anche usare:

if (condition) {}
else if (othercondition) {}
elseif (thirdcondition {}
else {}

Si noti che il se dell'altro è non dentro le parentesi dell'altro. Tu puoi scrivere else if o elseif, entrambi significano lo stesso.

Ciò è particolarmente utile nei casi in cui un interruttore non funziona, nel tuo caso basta usare un interruttore.