• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Select w PHP - jak korzystać po przesłaniu post'em?

+1 głos
1,330 wizyt
pytanie zadane 2 października 2020 w PHP przez vingilot85 Obywatel (1,150 p.)

Witam,
używam w formularzu select'a, nie wiem jak po przesłaniu wybranych w formularzu danych, wykorzystać wybraną opcję z select.

<form action="calculate.php" method="post">
	<input type="text" name="first_variable"/>
							
	<select id="operation">
		<option value="plus">+</option>
		<option value="minus">-</option>
		<option value="iloczyn">*</option>
		<option value="iloraz">/</option>
		</select>
							
	<input type="text" name="second_variable"/>
	</br>
	</br>
	<input type="submit" value="OBLICZ"/>
</form>

Na chłopski rozum, sądziłem, że odbiorę dane w ten sposób:

<?php
	//I i II liczba
	$first_var=$_POST['first_variable'];
	$second_var=$_POST['second_variable'];
	//operacje matematyczne
	$operation_plus=$_POST['plus'];
	$operation_minus=$_POST['minus'];
	$operation_product=$_POST['iloczyn'];
	$operation_quotient=$_POST['iloraz'];
	$operation=$POST['operation'];
				
				
	if($operation=$operation_plus)
	{
	      $first_var+$second_var=$suma;
	}
        echo $suma;
?>

Rzecz jasna, tak łatwo nie jest.

Z przesłaniem liczb w zmiennych sobie radzę, ale jak operację matematyczną wybraną w form.select przesłać?

3 odpowiedzi

+1 głos
odpowiedź 4 października 2020 przez VBService Ekspert (256,600 p.)
edycja 6 października 2020 przez VBService
 
Najlepsza

Do przetworzenia danych z select-a, możesz użyć switch-a.

<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $first_var = (float) $_POST['first_variable'];
        $second_var = (float) $_POST['second_variable'];
        $operation = $_POST['operation'];

        switch ($operation) {
            case 'iloraz':
                if ($second_var != 0) {
                    $suma = $first_var / $second_var;
                } else {
                    $suma = "<span class='div-by-zero'>Dzielenie przez zero!</span>";
                }
                break;
            case 'iloczyn':
                $suma = $first_var * $second_var;
                break;
            case 'minus':
                $suma = $first_var - $second_var;
                break;
            case 'plus':
            default:
                $suma = $first_var + $second_var;
        }
    } else {
        $suma = "";
    }

    if (is_numeric($suma)) $suma = number_format($suma, 2, '.', '');
?>
   <style>
       .div-by-zero { color: red; }
   </style>
     <form action="calculate.php" method="post">
       <input type="text" name="first_variable" required>

       <select id="operation" name="operation">
         <option value="plus" selected>+</option>
         <option value="minus">-</option>
         <option value="iloczyn">*</option>
         <option value="iloraz">/</option>
       </select>

       <input type="text" name="second_variable" required>
       </br></br>
       <input type="submit" value="OBLICZ">
    </form>
    <pre>Wynik: <?php echo $suma; ?></pre>

 

komentarz 5 października 2020 przez vingilot85 Obywatel (1,150 p.)
Wypas! Dzieki!
+2 głosów
odpowiedź 2 października 2020 przez ScriptyChris Mędrzec (190,190 p.)

Elementowi <select> nie nadałeś atrybutu name, któremu będzie przypisana wartość z wybranego <option>. Do tego w PHP dostaniesz się analogicznie jak do pól first_variable i second_variable.

+1 głos
odpowiedź 4 października 2020 przez Exaliar Nowicjusz (160 p.)
<?php 

    function liczenie($operation = '', $first_var = 0, $second_var = 0){
        switch ($operation) {
            case 'iloraz':
                return $second_var != 0 ? $first_var / $second_var : "Dzielenie przez zero!";
            case 'iloczyn':
                return $first_var * $second_var;
            case 'minus':
                return $first_var - $second_var;
            case 'plus':
                return $first_var + $second_var;
            default:
                return "wpisz poprawne dane";
        }
    }
        
    $first = array_key_exists('first_variable', $_POST) ? (float)$_POST['first_variable'] : null;
    $second = array_key_exists('second_variable', $_POST) ? (float)$_POST['second_variable'] : null;
    $operation = array_key_exists('operation', $_POST) ? $_POST['operation'] : null;
    $wynik = liczenie($operation, $first, $second);
?>

<form action="calculate.php" method="post">
    <input type="number" name="first_variable"/>
    <select id="operation" name="operation">
        <option value="plus">+</option>
        <option value="minus">-</option>
        <option value="iloczyn">*</option>
        <option value="iloraz">/</option>
    </select>
    <input type="number" name="second_variable"/>
    </br>
    </br>
    <input type="submit" value="OBLICZ"/>
</form>
<span><?php echo $wynik?></span>

 

Podobne pytania

0 głosów
2 odpowiedzi 466 wizyt
pytanie zadane 26 stycznia 2020 w PHP przez franz Gaduła (4,940 p.)
0 głosów
1 odpowiedź 724 wizyt
pytanie zadane 20 listopada 2017 w Python przez Muhin Gaduła (4,120 p.)
0 głosów
2 odpowiedzi 361 wizyt
pytanie zadane 11 września 2018 w SQL, bazy danych przez matizuu Obywatel (1,100 p.)

93,691 zapytań

142,610 odpowiedzi

323,215 komentarzy

63,215 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...