Скрытие формы и использование инструкций if

Я посмотрел в нескольких местах и не могу найти действительно хороший пример того, что мне нужно. У меня есть кнопка, которая при отправке должна всплывать форма. Я делал это в прошлом, используя input=hidden name. Однако я использую попытку использовать операторы if вместо просто переменной. Я дам вам код, который у меня есть в надежде, что вы можете помочь выяснить, что именно я делаю неправильно. Вы можете видеть, что я действительно использую скрытое имя для некоторых, но я действительно не знаю, как включить это в операторы if.

if($row[status] == 0) { print "<input type='image' src='images/rework-ticket.png' alt='Rework' value='Rework' name='button' style='height:50px; width:50px; '>"; }  
            elseif($row[status] == "Rework (In Progress)") { print "<img src='images/rework-ticket.png' alt='Rework' style='height:50px; width:50px; '>"; }


            print "<td align='center'>";
            print "<form method='post' action='test2.php'>";            
            print "<input type='image' src='images/rework-ticket.png' alt='Add Rework Ticket' value='Enter Employee ID' name='button' style='height:50px; width:50px; '>";
            print "<input type='hidden' name='proceed_to_rework' value='true'>";
            print "<input type='hidden' name='invoice_number' value='$row[invoice_number]'>";
            print "<input type='hidden' name='last_name' value='$row[last_name]'>";
            print "<input type='hidden' name='status' value='$status'>";
            print "Status:";
            print "<td><select name='status' size='1'>";
            if($status != NULL) { print "<option value='$status'>$status</option>"; }
            if($status != "Parts Prep (In Progress)") { echo "<option value='Parts Prep (In Progress)'>Parts Prep (In Progress)</option>"; }
            if($status != "Parts Prep (Complete)") { echo "<option value='Parts Prep (Complete)'>Parts Prep (Complete)</option>"; }     
            if($status != "Assembly (In Progress)") { echo "<option value='Assembly (In Progress)'>Assembly (In Progress)</option>"; }
            if($status != "Assembly (Complete)") { echo "<option value='Assembly (Complete)'>Assembly (Complete)</option>"; }       
            if($status != "Finish (In Progress)") { echo "<option value='Finish (In Progress)'>Finish (In Progress)</option>"; }
            if($status != "Finish (Complete)") { echo "<option value='Finish (Complete)'>Finish (Complete)</option>"; }     
            if($status != "Plumbing (In Progress)") { echo "<option value='Plumbing (In Progress)'>Plumbing (In Progress)</option>"; }
            if($status != "Plumbing (Complete)") { echo "<option value='Plumbing (Complete)'>Plumbing (Complete)</option>"; }
            print "</form>";
            print "</td>";

Я очень ценю любые комментарии о том, как я могу не только исправить этот код, но и улучшить этот вопрос.

2 ответа

  1. Вместо операторов if используйте массив. Это также поможет, если вы хотите добавить больше опций в будущем. Кроме того, вместо того, чтобы опережать HTML-код строка за строкой, попробуйте использовать один оператор echo.

    Если вы хотите получить значение состояния из POST, то используйте $status = $_POST['status'];before everything else

    Будьте осторожны при написании$row[status], потому что вы используете константу. Я не изменил его, но если вы хотите $row[$status]вместо этого, то добавьте $раньше status.

    if($row[status] == 0) { 
        echo '
            <button type="button" id="Rework" >
                <img src="images/rework-ticket.png" alt="Rework" style="height:50px; width:50px; "></img>
            </button>'; 
    } elseif($row[status] == "Rework (In Progress)") {
        echo '
            <button type="button" id="Rework" >
              <img src="images/rework-ticket.png" alt="Rework" style="height:50px; width:50px; "></img>
            </button>'; 
    }
    
    echo "
        <td align='center'>
        <form method='post' action='test2.php'>            
        <input type='image' src='images/rework-ticket.png' alt='Add Rework Ticket' value='Enter Employee ID' name='button' style='height:50px; width:50px; '>
        <input type='hidden' name='proceed_to_rework' value='true'>
        <input type='hidden' name='invoice_number' value='{$row[invoice_number]}'>
        <input type='hidden' name='last_name' value='{$row[last_name]}'>
        <input type='hidden' name='status' value='{$status}'>
        Status:
        <td><select name='status' size='1'>
    ";
    
    $statusOptions = array(
        NULL,
        "Parts Prep (In Progress)",
        "Parts Prep (Complete)",
        "Assembly (In Progress)",
        "Assembly (Complete)",
        "Finish (In Progress)",
        "Finish (Complete)",
        "Plumbing (In Progress)",
        "Plumbing (Complete)"
    );
    
    foreach($statusOptions as $option){
        if($status != $option){
            echo "<option value='{$option}'>{$option}</option>";
        }
    }
    echo '</select>';
    
    echo "</form>";
    echo "</td>";
    echo '
        <script type="text/javascript">
        function showDocument(){
            document.getElementById("ReworkForm").style.visibility="visible";
        }
    
        window.onload = function(){
            document.getElementById("ReworkForm").style.visibility="hidden";
            document.getElementById("Rework").addEventListener("click", showDocument);
        };
       </script>
        ';
    
  2. Оператор можно использовать ifследующим образом.

    <?php if (condition): ?>
    
        <!-- HTML here -->
        <?php if (anotherCondition): ?>
            <!-- HTML here -->
        <?php endif; ?>
        <!-- HTML again -->
    
        <?php if (anotherCondition): ?>
            <!-- HTML here -->
        <?php endif; ?>
        <!-- HTML again -->
    
    <?php endif; ?>
    

    Таким образом, вам не нужно использовать так много printутверждений.

    Прочитайте примеры в PHP docs .