Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Przesyłanie danych z formularza i odczyt w skrypcie php
Tomek20pl
post 16.07.2014, 22:13:09
Post #1





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

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


Witam
Z góry przepraszam za pewnie mało fachowy opis mojego problemu, ale jestem dość surowy w php a to mój pierwszy post.
Mam skrypt php który wyświetla mi listę produktów obok każdego z nich wstawiłem puste pole tekstowe, teraz chciałbym aby po wpisaniu do niego jakiejś wartości przesłać ją do innego skryptu. Problem jest z tym że odczytuję tylko wartość z ostatniego pola a poprzednie nie:/ jak wysłąć pod jedną zmienną i potem je odczytać w innym skrypcie wartości z wszystkich pól tekstowych?(niewiem ilu bo lista produktów i pól do wypełnienia jest niewiadoma) chyba że można jakoś dynamicznie tworzyć kolejne zmienne i je wysłać i potem odczytać. Bo jeśli mam wiadomą liczbę pól do wypełnienia i wysłania to wiem jak to zrobić, ale już przy niewiadomej liczbie mam problem:/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
johny_s
post 16.07.2014, 22:28:42
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


poczytaj o wysyłaniu tablic w formularzu
Go to the top of the page
+Quote Post
Damonsson
post 16.07.2014, 22:52:54
Post #3





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


W skrócie:

  1. <input name="tablica[]" ...>


zamiast

  1. <input name="tablica" ...>


Ten post edytował Damonsson 16.07.2014, 22:53:18
Go to the top of the page
+Quote Post
Tomek20pl
post 20.07.2014, 09:28:55
Post #4





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

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


Wysłałem w tablicy te moje zmienne
  1. <input type="text" name= "o_ile[]" value=0 size="5" />
jeden problem z głowy, ale chciałbym wysłać jeszcze drugą tablicę z kluczami tych produktów, w tej samej pętli wrzuciłem
  1. $tab[$j]=$row['0'];
i teraz jak wysłać obie tablicę? muszę utworzyć drugi "input" jeśli tak to jakiego typu?próbowałem coś takiego ale to nie działa:
  1. echo"<type= hidden name=tab[] >";
proszę o pomoc bo próbowałem na różne sposoby ale niemogę sobie z tym poradzić
Go to the top of the page
+Quote Post
Damonsson
post 20.07.2014, 12:09:07
Post #5





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


No dobrze kombinujesz, value musisz tam jakieś podać i oczywiście odpowiednie apostrofy. Wyświetl sobie później var_dump($tab). I napisz co pokazało.

Ten post edytował Damonsson 20.07.2014, 12:09:32
Go to the top of the page
+Quote Post
Tomek20pl
post 20.07.2014, 14:42:05
Post #6





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

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


  1. <?php
  2. echo("<form action=dodaj_ilosc.php method=get />");
  3.  
  4. echo("<input type= submit name=zmien ilosc>");
  5. $j=0;
  6. $i=0;
  7. while ($row= mysql_fetch_row($wynik)) {
  8.  
  9. $i++;
  10. echo("<tr>");
  11. echo("<td>$i : </td>");
  12. echo("<td>".$row['0']."</td>");// id produktu
  13. $tab[$j]=$row['0']; // tutaj wrzucam do tablicy id produktu
  14. $j++;
  15. echo("<td>".$row['1']."</td>");
  16. echo("<td>".$row['2']."</td>");
  17. echo("<td>".$row['3']."</td>");
  18. echo("<td>".$row['4']."</td>");
  19. $y = $row['6'];
  20. $x = $row['5'];
  21. if ($x >= $y){
  22. echo("<td>".$row['5']."</td>");
  23. echo("<td> OK min : $y</td>");
  24.  
  25. }
  26. else{
  27. echo("<td bgcolor=red>".$row['5']."</td>");
  28. echo("<td> mało minimum : $y</td>");
  29. }
  30. echo"<td align=center>".'<input type="text" name= "o_ile[]" value=0 size="5" />'."</td>";
  31.  
  32. echo("</tr>");
  33.  
  34. }
  35. echo"<td >".'<input type="hidden" name= "tab[]"/>'."</td>";// a tutaj próbuje wysłać tablice z id produktu
  36. echo("</form>");
  37. mysql_close($mysql_id);
  38.  
  39. ?>


a to skrypt do którego próbuje przesłać te dwie tablice, wiem że kilka rzeczy jest tu wogóle nie potrzebnych ale to tylko dla sprawdzenia, istotne jest to że nadal niemogę tej drugiej tablicy przesłać

  1. <?php
  2. $o_ile = $_GET ['o_ile'];
  3. $o_il = $_GET ['o_ile'][1];
  4. $tab = $_GET ['tab'];
  5. $tab2 = $_GET ['tab'][1];
  6.  
  7. $mysql_id = mysql_connect('localhost', 'root', '');
  8. mysql_select_db('kontur', $mysql_id);
  9.  
  10. $zapytanie = "UPDATE `tektura` SET `ilosc` = ilosc+$o_il WHERE `tektura`.`id` =$o_il LIMIT 1";
  11.  
  12. mysql_query($zapytanie);
  13.  
  14. mysql_close($mysql_id);
  15.  
  16.  
  17. foreach($o_ile as $v){
  18. echo ("$v <br>");
  19. }
  20. echo ("<br>");
  21. var_dump($tab);
  22. foreach($tab as $c){
  23. echo ("$c <br>");
  24. }
  25.  
  26. ?>


Po wysłaniu i wyświetleniu var_dump($tab) dostałem : array(1) { [0]=> string(0) "" } czyli nadal coś robie źle:/

Ten post edytował Tomek20pl 20.07.2014, 14:42:47
Go to the top of the page
+Quote Post
golabow
post 20.07.2014, 18:45:34
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 17
Dołączył: 4.07.2014

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


Możliwe rozwiązanie:

W pierwszym piliku przerób inputa przekazującego tablica tak:
  1. '<input type="hidden" name="tab" value= "'.serialize($tab).'"/>'


Natomiast w drugim pliku gdzie odbierasz dane:
  1. $tab = unserialize( $_GET ['tab'] );
Go to the top of the page
+Quote Post
Tomek20pl
post 21.07.2014, 21:51:51
Post #8





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

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


Pomóżcie bo ja już nic nie mogę wymyślić, próbowałem na różne sposoby i niemam pojęcia co robie źle:/
Serializacja nie pomogła chyba że coś źle zrobiłem, ale kabinowałem na różne sposoby.
Dla testu utworzyłem sobie zmienną i w ten sam sposób co tablice próbowałem wysłać i jest ok a tablicy dalej nie
  1. .
  2. .
  3. $test=777;
  4. $tab=array("1","2","3");
  5. .
  6. .
  7. .
  8. echo"<td >".'<input type="hidden" name="tab[]" value="'.$tab.'"/>'."</td>";
  9. echo"<td >".'<input type="hidden" name="test" value="'.$test.'"/>'."</td>";

wysyłam do tego skryptu:
  1. $tab = $_POST ['tab'];
  2. $test=$_POST ['test'];
  3. .
  4. .
  5. var_dump($tab);
  6. echo ("<br>");
  7.  
  8. echo ("test : ");
  9. echo($test);
  10. echo ("<br>");
  11.  
  12. foreach($tab as $c){
  13. echo ("$c <br>");
  14. }

i coś takiego wyświetla mi w przeglądarce:
array(1) { [0]=> string(5) "Array" }
test : 777
Array
Go to the top of the page
+Quote Post
johny_s
post 21.07.2014, 22:00:15
Post #9





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


bo nie idzie wyechować tablicy, musisz zrobić pętle na niej i dodać każdy element
Go to the top of the page
+Quote Post
Tomek20pl
post 21.07.2014, 22:25:22
Post #10





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

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


biggrin.gif no nareszcie dzięki!!!, a ja tyle się nakąbinowałem sciana.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:04