Php - błedne przekazywanie formularza

Php - błedne przekazywanie formularza
bartek164
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad rok
  • Postów:534
0

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

Kopiuj
<!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

Kopiuj

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ę";
    }
 } 
     
Sarrus
  • Rejestracja:około 14 lat
  • Ostatnio:2 dni
  • Postów:2512
0

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

edytowany 2x, ostatnio: Sarrus
bartek164
nie wiem o czym mówisz, to są całe 2 pliki, 1 w pilku mam tylko formularze i kod php dla wyswietelenia bazy
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:21 minut
  • Postów:3510
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.

Kopiuj
$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.

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

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

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

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

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

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

Kopiuj
```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

edytowany 4x, ostatnio: jurek1980
bartek164
nie jestem taki obyty w php
bartek164
i o co ci chodzi z tym że nie ma type?
jurek1980
"type" to jest. "typ" nie istnieje, nie masz litery e. A co do obycia w PHP, ja też się uczę:)
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:21 minut
  • Postów:3510
1
Kopiuj
echo '<input type="hidden" name="ilosc2" value='.$ilosc_nawozow.'/>';

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

edytowany 1x, ostatnio: jurek1980
bartek164
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad rok
  • Postów:534
0

dobra już wsyztko ok

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.