Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mysql update tabeli + foreach
Forum PHP.pl > Forum > PHP
hettmix
Witam.

Mam taki formularz, dzięki któremu pobieram w formie tabeli dane z bazy:
  1. <?php
  2. header("Pragma: no-cache");
  3. header("Expires: 0");
  4. header("Cache-Control: must-revalidate");
  5.  
  6. define( '_JEXEC', 1 ) or die('Direct Access to this location is not allowed.');
  7.  
  8. require "/volume1/web/Joomla_1.5/connection/connection.php";
  9. include "/volume1/web/Joomla_1.5/joomla-config-porzadkowe.php";
  10.  
  11. connection();
  12.  
  13.  
  14. $wynik = mysql_query("SELECT * FROM tbl_straznicy_porz order by straznik_nazwisko") or die('Błąd zapytania select');
  15. ?>
  16.  
  17. <form id="formularz_straznik_add" name="formularz_straznik_add" action="straznik_add_update.php" method="post">
  18.  
  19. <?php
  20.  
  21. if(mysql_num_rows($wynik) > 0) {
  22.  
  23. echo "<table bgcolor=#C6CFE7 align=center width=100% cellpadding=\"2\" border=1>";
  24. echo "<tr style=\"font-size: 0.85em; font-weight: bold; resize: none;\">";
  25. echo "<th>&nbsp;</th>";
  26. echo "<th>Nazwisko strażnika</th>";
  27. echo "<th>Imię strażnika</th>";
  28. echo "<th>Stopień</th>";
  29. echo "<th>Identyfikator</th>";
  30. echo "<th>Uwagi</th>";
  31. echo "</tr>";
  32.  
  33. $bgcolor="#F3F3F3";
  34. $bgr_color2="#F3F3F3";
  35. $j=0;
  36. $lp=0;
  37.  
  38. echo "<tr style=\"vertical-align: middle;\" valign=middle bgcolor=$bgcolor>";
  39. echo "<td width=8% align=\"center\">nowy</td>";
  40. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"width: 130px;\" name=\"new_straznik_nazwisko\" value=\"\"></input></td>";
  41. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"width: 130px;\" name=\"new_straznik_imie\" value=\"\"></input></td>";
  42. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px;\" name=\"new_straznik_stopien\" value=\"\"></input></td>";
  43. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px;\" name=\"new_straznik_identyfikator\" value=\"\"></input></td>";
  44. echo "<td width=28% align=\"center\"><textarea onblur='this.style.height=18; this.style[\"background\"]=\"#ffffff\";' onfocus='this.style.height=74; this.style[\"background\"]=\"#eeffee\";' type=\"tekst\" style=\"width: 300px; height: 21px;\" name=\"new_straznik_uwagi\" value=\"\"></textarea></td>";
  45. echo "</tr>";
  46.  
  47. $i=0;
  48. $lp=0;
  49. while($r = mysql_fetch_array($wynik)) {
  50. $lp++;
  51. $i++;
  52.  
  53. echo "<tr style=\"vertical-align: middle;\" valign=middle bgcolor=$bgcolor>";
  54. if ($bgcolor==$bgr_color2) { $bgcolor="#FFFFFF"; } else { $bgcolor=$bgr_color2; }
  55. echo "<td width=8% align=\"center\"><a style=\"text-decoration: none;;\" href=\"del.php?id=".$r['id']."\" onclick=\"setTimeout('document.location.href=document.location.href;',1000);\"><img src=\"../../../modules/mod_porzadkowe/images/x.png\" border=0>&nbsp;usuń</a></td>";
  56. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"font-size: 0.75em; width: 130px;\" name=\"".mysql_field_name($wynik,1)."['".$lp."']\" id=\"".mysql_field_name($wynik,1)."['".$lp."']\" value=\"".$r['straznik_nazwisko']."\"></input></td>";
  57. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"font-size: 0.75em; width: 130px;\" name=\"".mysql_field_name($wynik,2)."['".$lp."']\" id=\"".mysql_field_name($wynik,2)."['".$lp."']\" value=\"".$r['straznik_imie']."\"></input></td>";
  58. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px; font-size: 0.75em;\" name=\"".mysql_field_name($wynik,3)."['".$lp."']\" id=\"".mysql_field_name($wynik,3)."['".$lp."']\" value=\"".$r['straznik_stopien']."\"></input></td>";
  59. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px; font-size: 0.75em;\" name=\"".mysql_field_name($wynik,4)."['".$lp."']\" id=\"".mysql_field_name($wynik,4)."['".$lp."']\" value=\"".$r['straznik_identyfikator']."\"></input></td>";
  60. echo "<td width=28% align=\"center\"><textarea onblur='this.style.height=18; this.style[\"background\"]=\"#ffffff\";' onfocus='this.style.height=74; this.style[\"background\"]=\"#eeffee\";' style=\"width: 300px; font-size: 0.9em;\" name=\"".mysql_field_name($wynik,5)."['".$lp."']\" id=\"".mysql_field_name($wynik,5)."['".$lp."']\" rows=1>".$r['uwagi']."</textarea></td>";
  61. echo "</tr>";
  62. }
  63. echo "</table>";
  64. echo "<br><br>";
  65. }
  66. echo "<br><table width=99%><td align=right><input type=button onclick='formularz_straznik_add.submit();' value='Zapisz'></td></table><br>";
  67. ?>
  68. </form>
  69.  


No i niestety utknąłem na etapie tworzenia skryptu, który pobierze dane po wysłaniu formularza z tablicy $_POST i zaktualizuje/wstawi właściwe dane do tabeli. Kombinuję już któryś dzień z pętlami foreach ale nie mogę ogarnąć tematu.
Może mnie ktoś bardziej zaznajomiony z tym tematem naprowadzi na właściwe tory.
KotWButach
Zanim zadasz pytanie sformatuj treści... Prosisz użytkowników o pomoc to szanuj ich oczy smile.gif Rozumiem że jesteś na początku zabawy w programowanie.

Więc kilka podpowiedzi widać że kod jest pisany proceduralnie ale mimo to przyzwyczaj się do myśli na temat PDO zamiast mysql.

do tego nie mówiąc że kombinacja klawiszy formatujących to dla np netBeans-a alt+shift+f i kod się ładnie układa.

Joomla_1.5 <-- ?
hettmix
Cytat(KotWButach @ 28.10.2012, 01:29:20 ) *
Zanim zadasz pytanie sformatuj treści... Prosisz użytkowników o pomoc to szanuj ich oczy smile.gif Rozumiem że jesteś na początku zabawy w programowanie.

Więc kilka podpowiedzi widać że kod jest pisany proceduralnie ale mimo to przyzwyczaj się do myśli na temat PDO zamiast mysql.

do tego nie mówiąc że kombinacja klawiszy formatujących to dla np netBeans-a alt+shift+f i kod się ładnie układa.

Joomla_1.5 <-- ?


Co do formatowania, to mnie ono jakoś szczególnie nie razi, natomiast PDO póki co nie jest na tyle popularne by się na tą bibliotekę przesiadać. Wszystko fajnie, ale nie to jest meritum sprawy, która zaprząta mi głowę od kilku dni.
Joomla_1.5 to system zarządzania treścią który służy mi za środowisko uruchomieniowe dla mojego programu.

Pozdrawiam...
spacja
Witam, jak kolega wyżej - proszę, popraw formatowanie sad.gif
Ew. jak masz dużo html'a w php zamykaj tagi php

np. for($i=0;$i<10;$i++){
?>
<td><?php $i;?>

<?php
dalszy kod:

Ale dobra, no masz formularz tak, wysyłasz go do : straznik_add_update.php - ok, ale co dalej ?
W czym dokładnie tkwi problem ?

Żeby odebrać POST'a
w straznik_add_update.php :

print_r($_POST) lub var_dump($_POST) - zobaczysz co gdzie siedzi, później pobrać i zapisać.
hettmix
OK. Rozwiązałem ten problem w następujący sposób:

a) rozbiłem formularz pobierający dane z bazy na dwa osobne formularze - jeden służy dodawaniu rekordów, a drugi ich aktualizacji:

  1. <?php
  2. header("Pragma: no-cache");
  3. header("Expires: 0");
  4. header("Cache-Control: must-revalidate");
  5.  
  6. define( '_JEXEC', 1 ) or die('Direct Access to this location is not allowed.');
  7.  
  8. require "/volume1/web/Joomla_1.5/connection/connection.php";
  9. include "/volume1/web/Joomla_1.5/joomla-config-porzadkowe.php";
  10.  
  11. connection();
  12.  
  13.  
  14. $wynik = mysql_query("SELECT * FROM tbl_straznicy_porz order by straznik_nazwisko") or die($wynik."<br/>Błąd zapytania typu select: <br/>".mysql_error());
  15. ?>
  16.  
  17. <form id="formularz_straznik_new_add" name="formularz_straznik_new_add" action="straznik_add_update.php" method="post">
  18. <input type="hidden" name="new_straznik_id" value="1">
  19. <?php
  20.  
  21. if(mysql_num_rows($wynik) > 0) {
  22.  
  23. echo "<table bgcolor=#64E986 align=center width=100% cellpadding=\"2\" border=1>";
  24. echo "<tr style=\"font-size: 0.85em; font-weight: bold; resize: none;\">";
  25. echo "<th>&nbsp;</th>";
  26. echo "<th>Nazwisko strażnika</th>";
  27. echo "<th>Imię strażnika</th>";
  28. echo "<th>Stopień</th>";
  29. echo "<th>Identyfikator</th>";
  30. echo "<th>Uwagi</th>";
  31. echo "</tr>";
  32.  
  33. $bgcolor="#F3F3F3";
  34. $bgr_color2="#F3F3F3";
  35.  
  36. echo "<tr style=\"vertical-align: middle;\" valign=middle bgcolor=$bgcolor>";
  37. echo "<td width=8% align=\"center\"><img align=\"top\" src=\"../../../modules/mod_porzadkowe/images/legend_image_2.png\" border=0>&nbsp;nowy</td>";
  38. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"width: 130px;\" name=\"new_straznik_nazwisko\" value=\"\"></input></td>";
  39. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"width: 130px;\" name=\"new_straznik_imie\" value=\"\"></input></td>";
  40. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px;\" name=\"new_straznik_stopien\" value=\"\"></input></td>";
  41. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px;\" name=\"new_straznik_identyfikator\" value=\"\"></input></td>";
  42. echo "<td width=28% align=\"center\"><textarea onblur='this.style.height=18; this.style[\"background\"]=\"#ffffff\";' onfocus='this.style.height=74; this.style[\"background\"]=\"#eeffee\";' type=\"tekst\" style=\"width: 300px; height: 21px;\" name=\"new_straznik_uwagi\" value=\"\"></textarea></td>";
  43. echo "</tr>";
  44. echo "<tr>";
  45. echo "<td align=\"right\" colspan=\"6\" border=1><input type=button onclick='formularz_straznik_new_add.submit();' value='Dodaj nowego strażnika'></td>";
  46. echo "</tr>";
  47. ?>
  48. </form>
  49.  
  50. <script>
  51. function confirmDelete(link) {
  52. if (confirm("Jesteś pewien, że chcesz usunąć dane tego strażnika ?.")) {
  53. doAjax(link.href, "POST");
  54. }
  55. return false;
  56. }
  57. </script>
  58.  
  59. <form id="formularz_straznik_add" name="formularz_straznik_add" action="straznik_add_update.php" method="post">
  60. <input type="hidden" name="new_straznik_id" value="2">
  61. <?php
  62.  
  63. $i = 0;
  64.  
  65. while($r = mysql_fetch_array($wynik)) {
  66.  
  67. echo "<tr style=\"vertical-align: middle;\" valign=middle bgcolor=$bgcolor>";
  68. if ($bgcolor==$bgr_color2) { $bgcolor="#FFFFFF"; } else { $bgcolor=$bgr_color2; }
  69. echo "<input type='hidden' name='id[$i]' value='{$r['id']}' />";
  70. echo "<td width=8% align=\"center\"><a style=\"text-decoration: none;;\" href=\"straznik_del.php?id=".$r['id']."&straznik_nazwisko=".$r['straznik_nazwisko']."&straznik_imie=".$r['straznik_imie']."&straznik_stopien=".$r['straznik_stopien']." \" onclick=\"return confirmDelete(this);\"><img src=\"../../../modules/mod_porzadkowe/images/x.png\" border=0>&nbsp;usuń</a></td>";
  71. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"font-size: 0.75em; width: 130px;\" name='straznik_nazwisko[$i]' id='straznik_nazwisko[$i]' value=\"".$r['straznik_nazwisko']."\"></input></td>";
  72. echo "<td width=15% align=\"center\"><input type=\"tekst\" style=\"font-size: 0.75em; width: 130px;\" name='straznik_imie[$i]' id='straznik_imie[$i]' value=\"".$r['straznik_imie']."\"></input></td>";
  73. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px; font-size: 0.75em;\" name='straznik_stopien[$i]' id='straznik_stopien[$i]' value=\"".$r['straznik_stopien']."\"></input></td>";
  74. echo "<td width=10% align=\"center\"><input type=\"tekst\" style=\"width: 90px; font-size: 0.75em;\" name='straznik_identyfikator[$i]' id='straznik_identyfikator[$i]' value=\"".$r['straznik_identyfikator']."\"></input></td>";
  75. echo "<td width=28% align=\"center\"><textarea onblur='this.style.height=18; this.style[\"background\"]=\"#ffffff\";' onfocus='this.style.height=74; this.style[\"background\"]=\"#eeffee\";' style=\"width: 300px; font-size: 0.9em;\" name='uwagi[$i]' id='uwagi[$i]' rows=1>".$r['uwagi']."</textarea></td>";
  76. echo "</tr>";
  77. ++$i;
  78. }
  79. echo "<tr>";
  80. echo "<td align=\"right\" colspan=\"6\" border=1><input type=button onclick='formularz_straznik_add.submit();' value='Zapisz zmiany'></td>";
  81. echo "</tr>";
  82. echo "</table>";
  83. }
  84. ?>
  85. </form>



cool.gif a skrypt przetwarzający dane z tych formularzy wygląda następująco:

  1. <?php
  2. header("Pragma: no-cache");
  3. header("Expires: 0");
  4. header("Cache-Control: must-revalidate");
  5.  
  6. define( '_JEXEC', 1 ) or die('Direct Access to this location is not allowed.');
  7.  
  8. require "/volume1/web/Joomla_1.5/connection/connection.php";
  9. include "/volume1/web/Joomla_1.5/joomla-auth-porzadkowe.php";
  10.  
  11. connection();
  12.  
  13. if ($_SERVER['REQUEST_METHOD']=='POST') {
  14.  
  15. $adres="straznik_add.php";
  16.  
  17. $new_straznik_id = trim($_POST['new_straznik_id']);
  18. $new_straznik_nazwisko = mysql_real_escape_string(trim($_POST['new_straznik_nazwisko']));
  19. $new_straznik_imie = mysql_real_escape_string(trim($_POST['new_straznik_imie']));
  20. $new_straznik_stopien = mysql_real_escape_string(trim($_POST['new_straznik_stopien']));
  21. $new_straznik_identyfikator = mysql_real_escape_string(trim($_POST['new_straznik_identyfikator']));
  22. $new_straznik_uwagi = mysql_real_escape_string(trim($_POST['new_straznik_uwagi']));
  23. $straznik = "/ ".$new_straznik_stopien." ".$new_straznik_imie." ".$new_straznik_nazwisko." - ".$new_straznik_identyfikator." /";
  24.  
  25. if ($new_straznik_id=='1') {
  26.  
  27. if (($new_straznik_nazwisko!='') && ($new_straznik_imie!='') && ($new_straznik_stopien!='') && ($new_straznik_identyfikator!='')) {
  28. mysql_query("INSERT into tbl_straznicy_porz (straznik_nazwisko,straznik_imie,straznik_stopien,straznik_identyfikator,uwa
    gi) values ('"
    .$new_straznik_nazwisko."','".$new_straznik_imie."','".$new_straznik_stopien."','".$new_straznik_identyfikator."','".$new_straznik_uwagi."');") or die('Błąd zapytania typu insert'); }
  29.  
  30. else {
  31. echo "<BR /><div style=\"background-color: #F5F5F5; height: 45px; padding-top: 7px; text-align: center;\"><b>ABY WPROWADZIĆ DO BAZY DANE NOWEGO STRAŻNIKA<br />PODAJ JEGO NAZWISKO, IMIĘ, STOPIEŃ ORAZ IDENTYFIKATOR !!!<b></div>";
  32. echo "<a style=\"text-decoration: none;\" href=\"#\" onclick=\"history.back(); return false;\"><span style=\"margin-left: 420px;\">POWRÓT...</span></a>"; exit;
  33. };
  34.  
  35. };
  36.  
  37. if ($new_straznik_id=='2') {
  38.  
  39. $sql=("SELECT * FROM tbl_straznicy_porz") or die('Błąd zapytania select');
  40. $result=mysql_query($sql);
  41. $count=mysql_num_rows($result);
  42.  
  43. $i = 0;
  44. while ($i < $count) {
  45. $id = $_POST['id'][$i];
  46. $straznik_nazwisko= $_POST['straznik_nazwisko'][$i];
  47. $straznik_imie= $_POST['straznik_imie'][$i];
  48. $straznik_stopien= $_POST['straznik_stopien'][$i];
  49. $straznik_identyfikator= $_POST['straznik_identyfikator'][$i];
  50. $uwagi= $_POST['uwagi'][$i];
  51.  
  52. $query = "UPDATE tbl_straznicy_porz SET straznik_nazwisko='$straznik_nazwisko', straznik_imie='$straznik_imie', straznik_stopien='$straznik_stopien', straznik_identyfikator='$straznik_identyfikator', uwagi='$uwagi' WHERE id = '$id' LIMIT 1";
  53. mysql_query($query) or die($query."<br/>Błąd zapytania typu update: <br/>".mysql_error());
  54. ++$i;
  55. }
  56.  
  57. };
  58. }
  59. ?>


Jak widać aktualizacja rekordów następuje w pętli while w odniesieniu do indexu tablicy zawierającej poszczególne wiersze formularza. Kombinowałem wcześniej z pętlami foreach, ale wykorzystanie while i indexów jest dużo prostszym rozwiązaniem, które spełnia swoje zadanie. Być może się to komuś przyda w przyszłości do wielowierszowej aktualizacji danych w bazie.
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.