Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zaaktualizować wszystkie rekordy?
Forum PHP.pl > Forum > Przedszkole
woxala123
Witam.
Stworzyłem sobie formularz który wyświetla dane użytkowników. Chcę by po zmianie w polach i naciśnięciu wyslij aktualizował wszystkie rekordy. Jak na razie aktualizuje ostatni rekord. Myślę że błąd robię w zapytaniu update. Prosze o pomoc.

  1.  
  2. <?php require_once('../Connections/myconn.php'); ?>
  3. <?php
  4. if (!function_exists("GetSQLValueString")) {
  5. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  6. {
  7. if (PHP_VERSION < 6) {
  8. $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  9. }
  10.  
  11. $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  12.  
  13. switch ($theType) {
  14. case "text":
  15. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  16. break;
  17. case "long":
  18. case "int":
  19. $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  20. break;
  21. case "double":
  22. $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  23. break;
  24. case "date":
  25. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  26. break;
  27. case "defined":
  28. $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  29. break;
  30. }
  31. return $theValue;
  32. }
  33. }
  34.  
  35. $editFormAction = $_SERVER['PHP_SELF'];
  36. if (isset($_SERVER['QUERY_STRING'])) {
  37. $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  38. }
  39.  
  40. if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1"))
  41. {
  42. $updateSQL = sprintf("UPDATE admin SET name=%s, email=%s WHERE id=%s",
  43. GetSQLValueString($_POST['name'], "text"),
  44. GetSQLValueString($_POST['email'], "text"),
  45. GetSQLValueString($_POST['id'], "int"));
  46.  
  47. mysql_select_db($database_myconn, $myconn);
  48. $Result1 = mysql_query($updateSQL, $myconn) or die(mysql_error());
  49.  
  50. $updateGoTo = "reba.php";
  51. if (isset($_SERVER['QUERY_STRING'])) {
  52. $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
  53. $updateGoTo .= $_SERVER['QUERY_STRING'];
  54. }
  55. header(sprintf("Location: %s", $updateGoTo));
  56. }
  57.  
  58. mysql_select_db($database_myconn, $myconn);
  59. $query_Recordset1 = "SELECT * FROM `admin`";
  60. $Recordset1 = mysql_query($query_Recordset1, $myconn) or die(mysql_error());
  61. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  62. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  63. ?>
  64. <form name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  65. <p>&nbsp;</p>
  66. <table width="200" border="0" align="center" cellpadding="0" cellspacing="0">
  67. <tr>
  68. <td align="center"><strong>Id</strong></td>
  69. <td align="center"><strong>Name</strong></td>
  70. <td align="center"><strong>Email</strong></td>
  71. </tr>
  72. <?php do { ?>
  73. <tr>
  74. <td><label for="id"></label>
  75. <input name="id" type="text" id="id" value="<?php echo $row_Recordset1['id']; ?>" size="15" maxlength="15"></td>
  76. <td><label for="name"></label>
  77. <input name="name" type="text" id="name" value="<?php echo $row_Recordset1['name']; ?>" size="15" maxlength="15"></td>
  78. <td><label for="email"></label>
  79. <input name="email" type="text" id="email" value="<?php echo $row_Recordset1['email']; ?>" size="15" maxlength="15"></td>
  80. </tr>
  81. <input name="id" type="hidden" id="id" value="<?php echo $row_Recordset1['id']; ?>">
  82. <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
  83. </table>
  84. <p>
  85. <input type="submit" name="button" id="button" value="Wyślij">
  86. </p>
  87. <p>&nbsp;</p>
  88. <input type="hidden" name="MM_update" value="form1">
  89. </form>
  90. <?php
  91. mysql_free_result($Recordset1);
  92. ?>
  93.  
  94.  
nospor
No ale kazde pole ma miec swoje unikalne NAME tudziez NAME tablicowe a nie ty kazdemu ID przypisujesz NAME ID. PRzeciez one sie nadpisuja co latwo mozesz zobaczyc robiac print_r($_POST);
woxala123
Czyli coś takiego zrobić name=$name, email=$email WHERE id=%s
nospor
W formularzu pola mają miec unikalne nazwy dla kazdego rekordu albo zrob te pola jako tablice
name="id[]"
itd
woxala123
Zrobiłem coś takiego $updateSQL = sprintf("UPDATE admin SET name='name[]' , email='email[]' WHERE id=%s",
a w formularzu
<td><label for="name[]"></label>
<input name="name[]" type="text" id="name[]" value="<?php echo $row_Recordset1['name']; ?>" size="15" maxlength="15"></td>
<td><label for="email[]"></label>
<input name="email[]" type="text" id="email[]" value="<?php echo $row_Recordset1['email']; ?>" size="15" maxlength="15"></td>
</tr>
<input name="id" type="hidden" id="id" value="<?php echo $row_Recordset1['id']; ?>">
Ale teraz to juz nic nie update
Crozin
@nospor: Proszę się poprawić: http://sjp.pl/tudzie%C5%BC wink.gif
@woxala123: Popraw swój formularz, tak by w każdym wierszu znajdowały się pola formularza o nazwie przykładowo aktualizacja[%ID%][%POLE%], gdzie %ID% (z bazy danych) oraz %pole% (email/nazwa) są zmienne. Następnie po przesłaniu formularza daj sobie print_r($_POST) jak już zauważył @nospor - będziesz wiedział jak obchodzić się z danymi.
nospor
Cytat
@nospor: Proszę się poprawić: http://sjp.pl/tudzie%C5%BC
No przeciez dobrze napisalem.... no chyba ze patrzymy na dwa rozne wyrazy.

'name[]'
Przeciez ja ci to kazalem tylko w formie dawac a nie w zapytaniu.....
zrobze wkoncu print_r($_POST); i zobacz jak obsluzyc dane po zmanie co ci kazalem zrobic.
woxala123
CZy napisac cos takiego
"UPDATE admin SET name=$name, email=$email WHERE id=$id" ,

W forularzu poprawiłem na

<?php do { ?>
<tr>
<td><label for="id[]"></label>
<input name="id[]" type="text" id="id[]" value="<?php echo $row_Recordset1['id']; ?>" size="15" maxlength="15"></td>
<td><label for="name[]"></label>
<input name="name[]" type="text" id="name[]" value="<?php echo $row_Recordset1['name']; ?>" size="15" maxlength="15"></td>
<td><label for="email[]"></label>
<input name="email[]" type="text" id="email[]" value="<?php echo $row_Recordset1['email']; ?>" size="15" maxlength="15"></td>
</tr>
<input name="id" type="hidden" id="id" value="<?php echo $row_Recordset1['id']; ?>">
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
I po print_r($_POST); nie aktualizuje pól tylko robią się puste










nospor
Cytat
I po print_r($_POST); nie aktualizuje pól tylko robią się puste
facepalmxd.gif
Przy pomocy print_r($_POST); miales zobaczyc na wlasne oczy co idzie z forma a nie przy jego pomocy aktualizowac dane :/

Przenosze na przedszkole bo poziom twojej wiedzy jest na tym wlasnie poziomie
woxala123
W takim razie dobrze zdefiniowałem pola?
b4rt3kk
  1. <?php require_once('../Connections/myconn.php'); ?>
  2. <?php
  3. print_r($_POST);
  4. if (!function_exists("GetSQLValueString")) {
  5. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  6. {
  7. if (PHP_VERSION < 6) {
  8. $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  9. }
  10.  
  11. $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  12.  
  13. switch ($theType) {
  14. case "text":
  15. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  16. break;
  17. case "long":
  18. case "int":
  19. $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  20. break;
  21. case "double":
  22. $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  23. break;
  24. case "date":
  25. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  26. break;
  27. case "defined":
  28. $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  29. break;
  30. }
  31. return $theValue;
  32. }
  33. }
  34.  
  35. $editFormAction = $_SERVER['PHP_SELF'];
  36. if (isset($_SERVER['QUERY_STRING'])) {
  37. $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  38. }
  39.  
  40. if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1"))
  41. {
  42. foreach ($_POST['id'] as $item) {
  43. $updateSQL = sprintf("UPDATE admin SET name=%s, email=%s WHERE id=%s",
  44. GetSQLValueString($_POST['name'][$item], "text"),
  45. GetSQLValueString($_POST['email'][$item], "text"),
  46. GetSQLValueString($item, "int"));
  47.  
  48. mysql_select_db($database_myconn, $myconn);
  49. $Result1 = mysql_query($updateSQL, $myconn) or die(mysql_error());
  50. }
  51. $updateGoTo = "reba.php";
  52. if (isset($_SERVER['QUERY_STRING'])) {
  53. $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
  54. $updateGoTo .= $_SERVER['QUERY_STRING'];
  55. }
  56. header(sprintf("Location: %s", $updateGoTo));
  57. }
  58.  
  59. mysql_select_db($database_myconn, $myconn);
  60. $query_Recordset1 = "SELECT * FROM `admin`";
  61. $Recordset1 = mysql_query($query_Recordset1, $myconn) or die(mysql_error());
  62. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  63. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  64. ?>
  65. <form name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  66. <p>&nbsp;</p>
  67. <table width="200" border="0" align="center" cellpadding="0" cellspacing="0">
  68. <tr>
  69. <td align="center"><strong>Id</strong></td>
  70. <td align="center"><strong>Name</strong></td>
  71. <td align="center"><strong>Email</strong></td>
  72. </tr>
  73. <?php do { ?>
  74. <tr>
  75. <td><label for="id[]"></label>
  76. <input name="id[]" type="text" id="id[]" value="<?php echo $row_Recordset1['id']; ?>" size="15" maxlength="15"></td>
  77. <td><label for="name[]"></label>
  78. <input name="name[<?php echo $row_Recordset1['id']; ?>]" type="text" id="name[]" value="<?php echo $row_Recordset1['name']; ?>" size="15" maxlength="15"></td>
  79. <td><label for="email[]"></label>
  80. <input name="email[<?php echo $row_Recordset1['id']; ?>]" type="text" id="email[]" value="<?php echo $row_Recordset1['email']; ?>" size="15" maxlength="15"></td>
  81. </tr>
  82. <input name="id_hd[]" type="hidden" id="id_hd[]" value="<?php echo $row_Recordset1['id']; ?>">
  83. <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
  84. </table>
  85. <p>
  86. <input type="submit" name="button" id="button" value="Wyślij">
  87. </p>
  88. <p>&nbsp;</p>
  89. <input type="hidden" name="MM_update" value="form1">
  90. </form>
  91. <?php
  92. mysql_free_result($Recordset1);
  93. ?>
woxala123
Super. Wielkie dziękuje i dodaje Ciebie do moich guru php.
Crozin
Cytat
Cytat
@nospor: Proszę się poprawić: http://sjp.pl/tudzie%C5%BC
No przeciez dobrze napisalem.... no chyba ze patrzymy na dwa rozne wyrazy.
Wyraz napisałeś poprawnie, tylko sensu on nie ma. Sprawdź sobie jeszcze raz tą stronę i swój post - jest to dosyć popularny błąd. wink.gif

edit by nospor: no tak smile.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.