Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Formularz wysyła dane tylko z ostatniej linii tabeli
marcin_s_marki
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.08.2008

Ostrzeżenie: (0%)
-----


Tworze formularz zamowien pizzy, pobierajacy informacje z bazy danych. Problem polega na tym, ze po kliknieciu "zamawiam" zostaja wyslane tylko wartosci z ostatniej linii tabeli.

zamowienie.php:

Kod
$pizza = "select * from pizza";
                   $wpizza = mysql_query($pizza);
                  
                   $ile_znalezionych = mysql_num_rows($wpizza);
                  
                  
                  
                       echo '<form action="dodaniezamowienia.php" method="post">';
                       echo '<table>';
                       echo '<tr><th colspan="8">Pizza</th></tr>';
                      
                                                      
                   for ($i=1; $i<=$ile_znalezionych; $i++)
                   {
                      
                       $wiersz = mysql_fetch_array($wpizza);
                                                      
                       echo '<tr>';
                       echo '<th>',$wiersz['nazwa'],'</th>';
                       echo '<td>',$wiersz['opis'],'</td>';
                       echo '<td><input type="text" name="mala" size="1"></td>';
                       echo '<td>',$wiersz['mala'],'</td>';
                       echo '<td><input type="text" name="srednia" size="1"></td>';
                       echo '<td>',$wiersz['srednia'],'</td>';
                       echo '<td><input type="text" name="duza" size="1">
                                   <input type="hidden" name="nazwapizzy" value='.$wiersz['nazwa'].'></td>';
                       echo '<td>',$wiersz['duza'],'</td>';
                       echo '</tr>';
                      
                   }
                      
                       echo '<tr><th colspan="8"><input type="submit" value="Zamawiam"></th></tr>';
                       echo '</table>';
                       echo '</form>';
                  
                   }
                   else
                   {
                       echo 'Niepoprawne dane.';
                   }


dodaniezamowienia.php:

Kod
<?php
  
      
  
       if ($mala >= 1)
       {
       echo $mala, ' mała ', $nazwapizzy;
       }
      
       if ($srednia >= 1)
       {
       echo $srednia, ' srednia ', $nazwapizzy;
       }
      
       if ($duza >= 1)
       {
       echo $duza, ' duza ', $nazwapizzy;
       }
      
   ?>
Go to the top of the page
+Quote Post
deceq
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 3
Dołączył: 5.05.2007
Skąd: Łańcut

Ostrzeżenie: (0%)
-----


musisz zastosować coś takiego przy każdej wartości którą chcesz wysłać:
  1. <input type="hidden" name="nazwapizzy" value='.$wiersz['nazwa'].'>


Przecież formularz samego <tr>'a nie wyśle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował deceq 2.08.2008, 15:34:52
Go to the top of the page
+Quote Post
marcin_s_marki
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.08.2008

Ostrzeżenie: (0%)
-----


Niestety opcja z "hidden" w tym przypadku nie wychodzi. Problem polega na tym że wszystkie dane są przesyłane do następnej strony ale niestety pętla nie rozpoznaje wierszy i zawsze przesyła ostatni wiersz niezależnie ile by ich było. Wydaje mi się że potrzebuje coś w rodzaju "kotwicy" żeby każdy wiersz miał swój oddzielny identyfikator.
Go to the top of the page
+Quote Post
Kicok
post
Post #4





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


  1. <?php
  2. echo '<input type="hidden" name="nazwapizzy[' . $wiersz['id'] . ']" value="' . $wiersz['nazwa'] . '"></td>';
  3. ?>


Ten post edytował Kicok 3.08.2008, 08:46:59
Go to the top of the page
+Quote Post
JoShiMa
post
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(marcin_s_marki @ 2.08.2008, 16:10:29 ) *
Tworze formularz zamowien pizzy, pobierajacy informacje z bazy danych. Problem polega na tym, ze po kliknieciu "zamawiam" zostaja wyslane tylko wartosci z ostatniej linii tabeli.

zamowienie.php:

Nic dziwnego. Uruchom skrypt i wywołaj ten formularz, a potem zobaczysz, że w każdym wierszu tabeli powtarzają Ci się nazwy zmiennych w inputach. Ponieważ wartości się przekrywają zostaje tylko ta z ostatniego wiersza. Zgadza się? Żeby tego uniknąć należy zrobić tak:

  1. <?php
  2. for ($i=1; $i<=$ile_znalezionych; $i++)
  3.  {
  4.  
  5.  $wiersz = mysql_fetch_array($wpizza);
  6.  
  7.  echo '<tr>';
  8.  echo '<th>',$wiersz['nazwa'],'</th>';
  9.  echo '<td>',$wiersz['opis'],'</td>';
  10.  echo '<td><input type="text" name="mala[$i]" size="1"></td>';
  11.  echo '<td>',$wiersz['mala'],'</td>';
  12.  echo '<td><input type="text" name="srednia[$i]" size="1"></td>';
  13.  echo '<td>',$wiersz['srednia'],'</td>';
  14.  echo '<td><input type="text" name="duza[$i]" size="1">
  15.  <input type="hidden" name="nazwapizzy[$i]" value='.$wiersz['nazwa'].'></td>';
  16.  echo '<td>',$wiersz['duza'],'</td>';
  17.  echo '</tr>';
  18.  
  19.  }
  20. ?>


Następnie do wysłanych danych odwołujesz się jak do tablicy.
$_POST['mala'][1], $_POST['mala'][2],...,$_POST['duża'][1], $_POST['nazwapizzy'][1] itd.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 15:48