Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MSSQL][PHP]Zapis rekrdów pobranych przez pętlę while
eurosoft
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 5.11.2010

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


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. }

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krzesik
post
Post #2





Grupa: Zarejestrowani
Postów: 517
Pomógł: 1
Dołączył: 25.08.2012

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


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.  


(IMG:style_emoticons/default/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.....
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 05:49