• 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?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
899 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,320 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 238 wizyt
pytanie zadane 26 stycznia 2020 w PHP przez franz Gaduła (4,940 p.)
0 głosów
1 odpowiedź 629 wizyt
pytanie zadane 20 listopada 2017 w Python przez Muhin Gaduła (4,120 p.)
0 głosów
2 odpowiedzi 248 wizyt
pytanie zadane 11 września 2018 w SQL, bazy danych przez matizuu Obywatel (1,100 p.)

93,164 zapytań

142,176 odpowiedzi

321,937 komentarzy

62,492 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 688p. - dia-Chann
  2. 676p. - CC PL
  3. 675p. - Łukasz Piwowar
  4. 664p. - Marcin Putra
  5. 662p. - Łukasz Eckert
  6. 649p. - Michal Drewniak
  7. 641p. - rucin93
  8. 641p. - rafalszastok
  9. 629p. - Piotr Aleksandrowicz
  10. 621p. - Dawid128
  11. 597p. - Hubert Chęciński
  12. 572p. - ssynowiec
  13. 498p. - Michał Telesz
  14. 437p. - nidomika
  15. 427p. - Adrian Wieprzkowicz
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...