Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]update multirows
Forum PHP.pl > Forum > Przedszkole
grzechu2206
Witam,

Chcę zapisać do bazy (zaktualizować) wiele rekordów na raz klikając jednym przyciskiem.
mam skrypt, który powinien coś takiego realizować, ale chyba coś zrobiłem źle.
Proszę o pomoc w rozwiązaniu problemu. Nie są zapisywane (aktualizowane) rekordy na bazie.

  1. <?php
  2. $host="localhost"; // Host name
  3. $username="****"; // Mysql username
  4. $password="****"; // Mysql password
  5. $db_name="db"; // Database name
  6. $tbl_name="table"; // Table name
  7.  
  8. // Connect to server and select databse
  9. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  10. mysql_select_db("$db_name")or die("cannot select DB");
  11.  
  12.  
  13. $sql = "SELECT * FROM $tbl_name ORDER BY `ID` ASC";
  14. $result = MYSQL_QUERY($sql);
  15. $numberOfRows = MYSQL_NUM_ROWS($result);
  16.  
  17. if ($numberOfRows==0)
  18. {
  19. print("<h3>Nie znaleziono zrobionych procesów!</h3>");
  20. }
  21. else if ($numberOfRows>0) {
  22. $i=0;
  23. ?>
  24.  
  25. <html>
  26. <head>
  27. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  28. <LINK REL="stylesheet" TYPE="text/css" HREF="include/kolory.css">
  29. <title>Szczegóły procesu</title>
  30. </head>
  31.  
  32. <TABLE align="center" BORDER="0" WIDTH="60%">
  33. <TR>
  34. <TD><B>id</B></TD>
  35. <TD><B>opis</B></TD>
  36. <TD><B>Wynik KI</B></TD>
  37. <TD><B>Wynik KB</B></TD>
  38. <TD><B>JIRA</B></TD>
  39. <TD><B>Tester</B></TD>
  40.  
  41. </TR>
  42.  
  43. <?
  44.  
  45. while ($i<$numberOfRows)
  46. {
  47.  
  48. if (($i%2)==0) { $bgColor = "#E8F1FF"; } else { $bgColor = "#FFFFEC"; }
  49.  
  50. $id = MYSQL_RESULT($result,$i,"id");
  51. $opis = MYSQL_RESULT($result,$i,"opis");
  52. $KI = MYSQL_RESULT($result,$i,"KI");
  53. $KB = MYSQL_RESULT($result,$i,"KB");
  54. $JIRA = MYSQL_RESULT($result,$i,"JIRA");
  55. $tester = MYSQL_RESULT($result,$i,"tester");
  56.  
  57. ?>
  58.  
  59. <form name="form1" method="post" action="show.php">
  60. <TR BGCOLOR="<? echo $bgColor; ?>">
  61. <TD nowrap><? echo $id; ?></TD>
  62. <TD nowrap><? echo $opis; ?></TD>
  63. <td>
  64. <?
  65. if ($KI=="")
  66. {?>
  67.  
  68. <SELECT NAME="KI">
  69. <OPTION VALUE="0" selected="selected"> -
  70. <OPTION VALUE="1"> Good
  71. <OPTION VALUE="2"> Bad
  72. </SELECT>
  73. <?
  74. }
  75. else { echo $KI; }
  76. ?>
  77. </td>
  78. <TD nowrap><? echo $JIRA; ?></TD>
  79. <TD nowrap><? echo $tester; ?></TD>
  80. </TR>
  81.  
  82. <?
  83. $i++;
  84. } // koniec petli while
  85. ?>
  86. </TABLE>
  87. <input type="submit" name="Submit" value="Submit">
  88. </form>
  89.  
  90. <?
  91. // Check if button name "Submit" is active, do this
  92. if($Submit){
  93. for($i=0;$i<$count;$i++){
  94. $sql1="UPDATE $tbl_name SET KI='$KI[$i]', KB='$KB[$i]', JIRA='$JIRA[$i]' WHERE id='$id[$i]'";
  95. $result1=mysql_query($sql1);
  96. }
  97. }
  98.  
  99. if($result1){
  100. @header("location:show.php");
  101. echo "Dane zostaly zapisane. Po ponownym klik w Aktualizuj zostana wyswietlone wyniki.";
  102. }
  103.  
  104.  
  105. } // koniec petli w przypadku, gdy numberOfRows > 0
  106.  
  107. ?>
  108. </html>
  109.  
piotrooo89
zainteresuj się klauzurą WHERE, podaj odpowiednie warunki i z głowy.
thek
Jeśli rekordy do zmiany posiadają bardzo różne wartości - nie da się. Jeśli zmiany są w jakimś stopniu proporcjonalne lub stałe, odpowiednia klauzula WHERE.
grzechu2206
Czytałem sporo, ale nie wiem gdzie jest błąd.
Mam przecież w moim update klauzule o where
  1. $sql1="UPDATE $tbl_name SET KI='$KI[$i]', KB='$KB[$i]', JIRA='$JIRA[$i]' WHERE id='$id[$i]'";

Czy możecie pomóc trochę modyfikując mój skrypt?
zordon
najprościej wyświetl sobie wszystkie zapytania na ekran i przeanalizuj, czy na pewno robią to, co chcesz - może sprawdzasz nie te kolumny, może zmieniasz nie to, co powinienes.
Możesz się też pobawić funkcjami mysql_affected_rows i mysql_error (sprawdzasz result tylko ostaniego zapytania, może poprzednie są błędne? )
grzechu2206
Pls o pomoc.

zrobiłem trochę inaczej... ale teraz też nie zapisuje poprawnie wyników...

  1. <?php
  2. $host="localhost"; // Host name
  3. $username="****"; // Mysql username
  4. $password="****"; // Mysql password
  5. $db_name="db"; // Database name
  6. $tbl_name="table"; // Table name
  7.  
  8. // Connect to server and select databse.
  9. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  10. mysql_select_db("$db_name")or die("cannot select DB");
  11.  
  12.  
  13. $sql="SELECT * FROM $tbl_name";
  14. $result=mysql_query($sql);
  15.  
  16. // Count table rows
  17. $count=mysql_num_rows($result);
  18. ?>
  19. <table width="500" border="0" cellspacing="1" cellpadding="0">
  20. <form name="form1" method="post" action="2.php">
  21.  
  22. <tr>
  23. <td>
  24. <table width="500" border="0" cellspacing="1" cellpadding="0">
  25.  
  26.  
  27. <tr>
  28. <td align="center"><strong>Id</strong></td>
  29. <td align="center"><strong>opis</strong></td>
  30. <td align="center"><strong>KI</strong></td>
  31. <td align="center"><strong>KB</strong></td>
  32. <td align="center"><strong>JIRA</strong></td>
  33.  
  34. </tr>
  35. <?php
  36. while($rows=mysql_fetch_array($result)){
  37. ?>
  38. <tr>
  39. <td align="center"><? $id[]=$rows['id']; ?><? echo $rows['id']; ?></td>
  40. <td align="center"><input name="opis[]" type="text" id="opis" value="<? echo $rows['opis']; ?>"></td>
  41.  
  42. <td align="center"><? if ($rows['KI']=="")
  43. {
  44. echo "<select name=\"KI\">";
  45. echo "<option value=\"-\">-</option>";
  46. echo "<option value=\"Good\">Good</option>";
  47. echo "<option value=\"Bad\">Bad</option>";
  48. echo "</select>";
  49. } else echo $rows['KI']; ?>
  50. </td>
  51.  
  52. <td align="center"><? if ($rows['KB']=="")
  53. {
  54. echo "<select name=\"KB\">";
  55. echo "<option value=\"-\">-</option>";
  56. echo "<option value=\"Good\">Good</option>";
  57. echo "<option value=\"Bad\">Bad</option>";
  58.  
  59. echo "</select>";
  60. } else echo $rows['KB']; ?>
  61. </td>
  62.  
  63. <td align="center"><input name="JIRA[]" type="text" id="JIRA" value="<? echo $rows['JIRA']; ?>"></td>
  64. </tr>
  65. <?php
  66. }
  67. ?>
  68. <tr>
  69. <td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
  70. </tr>
  71. </table>
  72. </td>
  73. </tr>
  74. </form>
  75. </table>
  76. <?php
  77. // Check if button name "Submit" is active, do this
  78. if($Submit){
  79. for($i=0;$i<$count;$i++){
  80. $sql1="UPDATE $tbl_name SET opis='$opis[$i]', KI='$KI[$i]', KB='$KB[$i]', JIRA='$JIRA[$i]' WHERE id='$id[$i]'";
  81. $result1=mysql_query($sql1);
  82. }
  83. }
  84.  
  85.  
  86. ?>


proszę o pomoc. czy ktoś mógłby mi zmodyfikować delikatnie kod, aby dane były zapisywane w tabeli podczas aktualizacji?
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.