Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]petla while i przeslanie wwynikow do drugiej tabeli wraz z dopisanymi wartosciami
Forum PHP.pl > Forum > Przedszkole
malamut_kalahan
Witam,
mam taki problem podczas tworzenia formularza do obsługi bazy danych.
Sprawa wygląda tak: sa dwie tabele w bazie

jedna slownikowa(modyfikowana z poziomu formularza ze strony www) struktura:
id | nazwa
1. warszawa
2. poznan
3. gdansk
4. wroclaw
z tej tabeli pętlą „while” pobieram nazwy do formularza i w tym formularzu dopisuje do pobranych nazw wartości np. 1,3,4,
chciałbym z poziomu formularza nazwy wraz z wartościami dopisywać do drugiej tabeli, ale poki co dopisuje mi tylko nazwe i wartość z ostatniego „przebiegu” pętli while , jak to "przeskoczyć"? dopiero zaczynam zabawe z php i moze "while" to nie tedy droga ....
rocktech.pl
Witam.

Kod będzie przydatny.
malamut_kalahan
<?


$miasto=mysql_query("select * from miasto ");
echo"<br><br><form action='bezdod.php' method='post'>
<table align='left'border='3'><tr><td><b>miasto</td><td><b>ilosc</td></tr>";
while($x=mysql_fetch_assoc($miasto)){
$td=$x['miasto'];
echo"<tr><td>$td</td><td><input type='text' name='ilosc'></td></tr>";
}

echo"<tr><td colspan='2' align='center'><input type='submit' value='dodaj' name='dodaj'></td></tr></table></form>";


?>
b4rt3kk
Cytat(malamut_kalahan @ 19.10.2012, 11:04:10 ) *
<?


$miasto=mysql_query("select * from miasto ");
echo"<br><br><form action='bezdod.php' method='post'>
<table align='left'border='3'><tr><td><b>miasto</td><td><b>ilosc</td></tr>";
while($x=mysql_fetch_assoc($miasto)){
$td=$x['miasto'];
echo"<tr><td>$td</td><td><input type='text' name='ilosc'></td></tr>";
}

echo"<tr><td colspan='2' align='center'><input type='submit' value='dodaj' name='dodaj'></td></tr></table></form>";


?>


Nie zbyt precyzyjnie objaśniłeś swój problem, ale domyślam się o co chodzi.

  1. $miasto=mysql_query("select * from miasto ");
  2.  
  3. echo"<br><br><form action='bezdod.php' method='post'><table align='left'border='3'><tr><td><b>miasto</td><td><b>ilosc</td></tr>";
  4.  
  5. while($x=mysql_fetch_assoc($miasto)){
  6.  
  7. $td=$x['miasto'];
  8. echo"<tr><td>$td</td><td><input type='text' name='ilosc[{$x['id']}]'></td></tr>"; // tutaj jest różnica z Twoim kodem.
  9.  
  10. }
  11.  
  12. echo"<tr><td colspan='2' align='center'><input type='submit' value='dodaj' name='dodaj'></td></tr></table></form>";


Rzecz w tym, że przesyłając swój formularz miałeś tylko jedną zmienną $_POST['ilosc'] prawda? Zmienna była kolejno nadpisywana aż do wartości w ostatnim obrocie pętli. Zastosuj tutaj nazwę tablicową, tak jak zaprezentowałem to w przykładzie powyżej. Odczytujesz ją poprzez $_POST['ilosc']['id_miasta']. A zresztą dopisz linijkę:

  1. print_r($_POST);


w pliku wynikowym (bezdod.php?) i wszystko powinno być jasne.
malamut_kalahan
ok fajnie zdaje sie ze zalapaem teraz tylko pytanie jak w pliku wynikowym zaleznie od ilosci pozycji pobranych z tabeli nazw wykonac polecenie insert do nowej tabeli
b4rt3kk
Choćby tak:

  1. foreach ($_POST['ilosc'] as $key => $value) {
  2. $query = "INSERT INTO tabela (id, ilosc) VALUES ('$key', '$value')";
  3. // wykonanie zapytania (już nie piszę, bo nie wiem czy używasz PDO, mysqli czy jeszcze czegoś innego).
  4. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.