Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Przesyłanie danych z formularza i odczyt w skrypcie php
Forum PHP.pl > Forum > Przedszkole
Tomek20pl
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:/
johny_s
poczytaj o wysyłaniu tablic w formularzu
Damonsson
W skrócie:

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


zamiast

  1. <input name="tablica" ...>
Tomek20pl
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ć
Damonsson
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.
Tomek20pl
  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:/
golabow
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'] );
Tomek20pl
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
johny_s
bo nie idzie wyechować tablicy, musisz zrobić pętle na niej i dodać każdy element
Tomek20pl
biggrin.gif no nareszcie dzięki!!!, a ja tyle się nakąbinowałem sciana.gif
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.