Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP]Zapis rekrdów pobranych przez pętlę while
Forum PHP.pl > Forum > Przedszkole
eurosoft
Witam, mam problem przy zapisie rekordów pobranych do tabeli poprzez petlę while. Do bazy zapisuje mi się właściwa ilość rekordów, ale wszystkie posiadają dane z ostatniego rekordu, jak to można zróżnicowć. dziękuję za poradę.
Tak pobieram dane do tabeli:
  1. {
  2. echo '<form action="skladki.php" method="post">';
  3. echo '<input type="hidden" name="a" value="save">';
  4. echo "<input type=\"hidden\" name=\"rodzaj\" value=SK>";
  5.  
  6. echo "<input type=\"image\" style=\"width: 30px; height: 30px\" src=\"img/ikony/Save.png\" alt=\"Zapisz\" title=\"Zapisz\" onClick=\"java script:submit();\">&nbsp;&nbsp;&nbsp;&nbsp;</input>";
  7. echo "<input type=\"image\" style=\"width: 30px; height: 30px\" src=\"img/ikony/wyloguj.png\" alt=\"Rejestr Wpłat / Wypłat\" title=\"Rejestr Wpłat / Wypłat\" onClick=\"self.close()\"></input>";
  8. echo "Obciążenie dotyczy:<br><input type=text name=opis size=\"50\"></input><br>";
  9. echo "Podstawowa kwota obciążenia:<br><input type=text name=\"kwota\" size=\"20\"></input></p>";
  10. echo "Obciążenia";
  11. echo "<br><br>";
  12. echo "<table border=1 cellspacing=0 cellpadding=1 bgcolor=#ADB79E bordercolor=grey>";
  13. echo "<tr>";
  14. echo "<th>L.p.</th>";
  15. echo "<th>Nazwisko i Imię</th>";
  16. echo "<th>Treść</th>";
  17. echo "<th>Data</th>";
  18. echo "<th>% wpłaty</th>";
  19. echo "</tr>";
  20.  
  21. $k = 0; while($r = mysql_fetch_array($wynikkasa))
  22. {
  23. $k++;
  24. echo "<tr>";
  25. echo "<td>".$k."</td>";
  26. echo "<td><input type=\"text\" name=\"imie_nazwisko\" value=\"$r[login]\"></td>";
  27. echo "<td>w/g opisu powyżej</td>";
  28. echo "<td>$data</td>";
  29. echo "<td><input type=\"text\" size=\"5\" value=\"100\" maxlength=\"3\" name=\"procent\" onkeyup=\"CheckIsFloat(this);\"/></td>";
  30. echo "</tr>";
  31. }
  32. echo "</table></center></form>";
  33. }


A tak próbowałem dokonać zapisu do bazy:

  1. $imie_nazwisko = $_POST['imie_nazwisko'];
  2. $data = $data;
  3. $opis = $_POST['opis'];
  4. $rodzaj = $_POST['rodzaj'];
  5. $kwota = $_POST['kwota']*($_POST['procent'])/100;
  6.  
  7.  
  8. for ($ile = 0; $ile < $n; $ile++){
  9. if (!empty($imie_nazwisko) and !empty($data) and !empty($opis) and !empty($kwota))
  10.  
  11. {
  12. $ins = @mysql_query("INSERT INTO kasa SET
  13. imie_nazwisko='$imie_nazwisko',
  14. rodzaj='$rodzaj',
  15. opis='$opis',
  16. kwota='-$kwota',
  17. data = '$data'");
  18. }
  19. }

CuteOne
google -> mysql insert

zobacz jak powinien wyglądać taki zapis bo twój wygląda jak UPDATE..
toaspzoo
Dlaczego jak update ?
Tak też można, tylko jest to wolniejsze rozwiązanie od typowego wstawiania (...) values (...)
krzesik
Cytat(CuteOne @ 25.08.2012, 16:05:56 ) *
google -> mysql insert

zobacz jak powinien wyglądać taki zapis bo twój wygląda jak UPDATE..

Tak masz rację, sekwensja była zła, jednak poprawiłem na:
  1. $ins = @mysql_query("INSERT INTO kasa (imie_nazwisko,data,opis,rodzaj,kwota) VALUES (`$imie_nazwisko`,
  2. `$data`,`$opis`,`$rodzaj`,`-$kwota`)");

i nie zapisuje mi nic....
CuteOne
  1. $ins = mysql_query("INSERT INTO kasa (imie_nazwisko,data,opis,rodzaj,kwota) VALUES (`$imie_nazwisko`,
  2. `$data`,`$opis`,`$rodzaj`,`-$kwota`)")or die(mysql_error());


nie tłum błędów (chodzi o @ przed funkcją)
krzesik
otrzymję taki błąd:
Unknown column 'xxx' in 'field list'

nie mam kolumny xxx, jest to imie_nazwisko w ostatnim rekordzie
CuteOne
powinno być na odwrót - nazwy kolumn objęte ` ` a wartości ' '
krzesik
teraz zapisało, ale tak samo jak poprzednio czyli 13 razy ostatni rekord pobrany z tabeli wypełnionej sposobem opisanym powyżej, gdzie mam jeszcze błąd? powinienem mieć chyba jakiś wyróżnik że każdy kolejny rekord ma jakiś identyfikator? proszę o pomoc
zegarek84
nie dałeś całego kodu PHP, gdzie w tej pętli zmieniasz wartości zmiennych które podajesz do insert'a - ja nie widzę, jeśli tak masz w swoim kodzie to co się dziwisz, że wstawia Ci te same wartości skoro to sa te same wartości zmiennych...
krzesik
Cytat(zegarek84 @ 26.08.2012, 11:24:15 ) *
nie dałeś całego kodu PHP, gdzie w tej pętli zmieniasz wartości zmiennych które podajesz do insert'a - ja nie widzę, jeśli tak masz w swoim kodzie to co się dziwisz, że wstawia Ci te same wartości skoro to sa te same wartości zmiennych...


Nie właśnie nie mam nigdzi epodanego parametru zmiany wartości, gdzie powinienem go wstawić?

podczas odbierania danych z forma? np tak:
  1. ...
  2. $k = 0;
  3. $n = 0;
  4. while($r = mysql_fetch_array($wynikkasa))
  5. {
  6. $k++;
  7. echo "<tr>";
  8. echo "<td>".$k."</td>";
  9. echo "<td><input type=\"text\" name=\"imie_nazwisko[$n]\" value=\"$r[login]\"></td>";
  10. echo "<td>w/g opisu powyżej</td>";
  11. echo "<td>$data</td>";
  12. echo "<td><input type=\"text\" size=\"5\" value=\"100\" maxlength=\"3\" name=\"procent\" onkeyup=\"CheckIsFloat(this);\"/></td>";
  13. echo "</tr>";
  14. }
  15. echo "</table></center></form>";
  16.  
  17.  
  18.  
  19.  
  20.  
  21. $imie_nazwisko = $_POST['imie_nazwisko'][$n];
  22. $data = $data;
  23. $opis = $_POST['opis'];
  24. $rodzaj = $_POST['rodzaj'];
  25. $kwota = $_POST['kwota']*($_POST['procent'])/100;
  26. ...
  27.  


questionmark.gif

Już sobie częściowo poradziłem zmieniłem kod w taki sposób:
  1. ....
  2. {
  3. $k++;
  4. echo '<tr>';
  5. echo "<td>".$k."</td>";
  6. echo "<td><input readonly type=\"text\" name=\"imie_nazwisko[]\" value=\"$r[login]\"></td>";
  7. echo '<td>wg opisu powyżej</td>';
  8. echo "<td>$data</td>";
  9. echo "<td><input type=\"text\" size=\"5\" value=\"100\" maxlength=\"3\" name=\"procent\" onkeyup=\"CheckIsFloat(this);\"/></td>";
  10. echo '</tr>';
  11. }
  12. echo "</table></center></form>";
  13. }
  14.  
  15. $imie_nazwisko = $_POST['imie_nazwisko'];
  16. $data = $data;
  17. $opis = $_POST['opis'];
  18. $rodzaj = $_POST['rodzaj'];
  19. $kwota = $_POST['kwota']*($_POST['procent'])/100;
  20.  
  21. foreach($imie_nazwisko AS $imie_nazwisko)
  22.  
  23. {
  24. if (!empty($imie_nazwisko) and !empty($data) and !empty($opis) and !empty($kwota))
  25.  
  26. {
  27. $ins = mysql_query("INSERT INTO kasa (imie_nazwisko,data,opis,rodzaj,kwota) VALUES ('$imie_nazwisko','$data','$opis','$rodzaj','-$kwota')")or die(mysql_error());
  28. }
  29.  


iość rekordów się zgadza, nazwiska są dobrze wpisywane, ale do każdego rekordu zmienia się również pole procen wykorzystywane do obliczenia kwoty, a to mi nie przechodzi.....
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.