Php - błedne przekazywanie formularza

0

Dodaje określoną liczbę formularzy, następnie chce pobrać z nich dane, i tu jest problem, do bazy się nic nie dopisuje,

<!DOCTYPE html>
<html>
 
    <head>
        <meta charset="utf-8">
        <title>Nadzorca Page</title>
        <link rel="stylesheet" href="css/style.css">
        <style>
/*            p{  display:inline-block; width: 180px;}*/
        </style>
    </head>
<body>
 
   
    <h3>Dodanie nowego doświadczenia</h3>
<form action=<?php echo $_SERVER['PHP_SELF'];?> method="post">
    <p><input name='ilosc_ros' type="text" placeholder="Dodaj ilość roślin"></p>
    <p><input name='ilosc_nawoz' type="text" placeholder="Podaj ilość nawozów"></p>
    <p><input name="add_form" type="submit" value="Dodaj"></p>
</form>
 
<?php
require("./connect.php");

 if(isset($_POST['add_form'])){
     $ilosc_roslin = $_POST['ilosc_ros'];
     $ilosc_nawozow = $_POST['ilosc_nawoz'];
     
     echo '<form action="dodanie_dosw.php" method="post">';
     for($i=1; $i <= $_POST['ilosc_ros']; ++$i)
        echo '<p><input name="roslina'.$i.'" typ="text" placeholder="roślina.."></p>';
     for($i=1; $i <= $_POST['ilosc_nawoz']; ++$i)
     echo '<p><input name="nawoz'.$i.'" typ="text" placeholder="nawoz."></p>';
     echo '<input type="hidden" name="ilosc1" value=$ilosc_roslin />';
     echo '<input type="hidden" name="ilosc2" value=$ilosc_nawozow />';
     echo '<p><input name="add_base" type="submit" value="Dodaj doświadczenie"></p>'; 
     echo '</form>';
 
 }
 
 
?>
 
</body>
</html>

plik dodanie_dosw.php


require("./connect.php");
//ten if poniżej wogóle się nie wykonuje
if(isset($_POST['add_base'])){
    for($i=1; $i <= $_POST['ilosc1']; ++$i){
        $temp = 'roslina'.$i;
        $query = 'INSERT INTO roslina values( NULL,'. $_POST[$temp].')';
        if(mysqli_query($conn, $query))
            echo "Udało się";
    }
 } 
     
0

Ten if się nie wykonuje czy ten for? Na sucho patrząc wygląda ok. Pokaż co masz w post: var_dump($_POST).

2

Ja nie wiem ale tak patrząc na to co wstawiłeś na forum to to nie ma prawa działać.
Najpierw pobierasz sobie ilość pól do formularza.

$ilosc_roslin = $_POST['ilosc_ros'];
     $ilosc_nawozow = $_POST['ilosc_nawoz'];

Potem robisz pętle for ze zmienną $i, która generuje Ci coś co nie jest HTMLem, nie ma czegoś takiego jak "typ".
Potem do pól hidden zamiast przypisywać pobraną wartość przypisujesz string : '$ilosc_nawozow' (dajesz to w pojedynczym cudzysłowie)do value.

echo '<input type="hidden" name="ilosc2" value=$ilosc_nawozow />';

Na koniec chcesz iterować pętle po tym pobranym stringu:

for($i=1; $i <= $_POST['ilosc1']; ++$i){

Po pierwsze to lepiej by chyba Ci było robić tablicę wartości jak robisz input np.

for ($i = 1; $i <= $_POST['ilosc_pol']; $i++) {
		echo '<input type="text" name="fieled[]">';
}

W rezultacie potem po odczycie```php
$_POST['fieled']

```php
$values  = implode(", ", $_POST['fieled']);
$sql = "INSERT INTO `mytable`($columns) VALUES ($values)";

Po testuj, popróbuj.

Ach i jeszcze jedno. Zastanów się, czy użytkownik jako ilość pól w pierwszym formularzu nie może Ci wpisać np. liczby ujemnej, nawet niechcący, lub jakiejś liczby np. 2000

1
echo '<input type="hidden" name="ilosc2" value='.$ilosc_nawozow.'/>';

Input nie kończy się "/>" tylko ">" .
To akurat wcześniej przeoczyłem.

0

dobra już wsyztko ok

1 użytkowników online, w tym zalogowanych: 0, gości: 1