Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Update danych a sesja
Forum PHP.pl > Forum > PHP
asterix1983
Witam. Robie ostatnio sobie taki projekcik pt"obsługa sklepu -administracja" i natrafiłem na pewien problem. Użytkownik sie loguje do systemu (mechanizm sesji) i przechodzi do powiedniej zakładki z widokiem klientów, gdzie będzie wyświetlać sie plik - widok_dane_klienta.php

  1. <?php
  2. //widok_dane_klienta.php
  3. require('funkcje_sklep_gl.php');
  4.  
  5. tworz_naglowek_html("Widok Dane Klienta");
  6.  
  7.  
  8. if (sprawdz_uzyt_admin())
  9. {
  10. wyswietl_form_szukanie_klienta();
  11.  
  12. require_once("./tmp/index.php");
  13. }
  14. else
  15. echo 'Brak autoryzacji do wejscia na obszar administracyjny.';
  16.  
  17.  
  18. // jeżeli zalogowany jako administrator, pokaż łącza 
  19. if(isset($HTTP_SESSION_VARS['uzyt_admin']))
  20. {
  21.  
  22. wyswietl_przycisk('admin.php', 'menu-admin', 'Menu Administratora');
  23. }
  24. tworz_stopke_html();
  25. ?>


Plik index.php wyświetla dane wszystkich klientów chyba że się poda po przez formularz nazwisko, wtedy wyświetla wszystkich o danym nazwisku. Dodatkowo dla każdego klienta zrobiony został link do edycji jego danych.

-index.php

  1. <?php
  2. require_once "database.php";
  3. require_once "tools.php";
  4. require_once "fields.php";
  5. require_once "config.php";
  6.  
  7. $colCount = RECORDNUM;
  8.  
  9. if (isset($_GET["page"])) {
  10. $page = $_GET["page"];
  11. }
  12. else {
  13. $page = 1;
  14. }
  15.  
  16. if (isset($HTTP_POST_VARS["nazwisko"])) {
  17. $nazwisko = $HTTP_POST_VARS["nazwisko"];
  18. }
  19. elseif (isset($_GET["nazwisko"])) {
  20. $nazwisko = $_GET["nazwisko"];
  21. }
  22.  
  23.  
  24. $db = getDatabase("MySQL", DB_HOST, DB_USER, DB_PASSWORD, DB_DBNAME);
  25.  
  26. $html = file_get_contents(HTMLFILE);
  27.  
  28. $rowTMP = CutSection($html, "<!--[ROW_BEGIN]-->", "<!--[ROW_END]-->", false);
  29. $colsTMP = CutSection($html, "<!--[COL_BEGIN]-->", "<!--[COL_END]-->", false);
  30. $menuRowTMP = CutSection($html, "<!--[MENU_ROW_BEGIN]-->", "<!--[MENU_ROW_END]-->", false);
  31. $menuColTMP = CutSection($html, "<!--[MENU_COL_BEGIN]-->", "<!--[MENU_COL_END]-->", false);
  32.  
  33. $offset = ($page-1)*$colCount;
  34. $sql="SELECT 
  35. k.id_klienta, k.imie, k.nazwisko, k.nr_tel_dom, k.nr_tel_kom,
  36. z.id_zamowienia, z.data_zamowienia, z.data_finalizacji, z.stan, z.zlecenie, z.do
    datkowe_info, z.os_odbierajaca_zlecenie, z.os_modyfik_zlecenie,
  37. r.id_reklamacji, r.data_reklamacji, r.data_zwrotu, r.stan, r.opis_usterki, r.dod
    atkowe_info, r.os_przyj, r.os_modyf
  38. FROM klient k 
  39. left join zamowienia z on z.id_klienta=k.id_klienta
  40. left join reklamacja r on r.id_klienta=k.id_klienta ";
  41. if (!empty($nazwisko)) {
  42. $sql.= "WHERE k.nazwisko='".$nazwisko."' ";
  43. }
  44. $res = $db->getRecordset($sql);
  45. $allRecords = $res->numRows();
  46.  
  47. $pageTMP = CutSection($html, "<!--[PAGE_LIST_BEGIN]-->", "<!--[PAGE_LIST_END]-->", false);
  48. $pagesCount = ceil($allRecords/$colCount);
  49. $pages = "";
  50. for ($i=0; $i<$pagesCount; $i++)
  51. {
  52. $pages .= str_replace("#page#",$i+1,$pageTMP);
  53. }
  54. $html = str_replace($pageTMP,$pages,$html);
  55.  
  56. if ($offset >= $allRecords) {
  57. $offset = 0;
  58. $page  = 1;
  59. }
  60.  
  61.  
  62. $sql.="ORDER BY nazwisko, imie LIMIT $offset,$colCount";
  63.  
  64. $res = $db->getRecordset($sql);
  65.  
  66. if ($res->numRows()<$colCount) {
  67. $colCount = $res->numRows();
  68. }
  69.  
  70. $columns = "";
  71. $menu = "<TD></TD>";
  72. for ($i=0; $i<$colCount+1; $i++)
  73. {
  74. $columns .= $colsTMP;
  75. $columns = str_replace("#col#",$i,$columns);
  76.  
  77. if ($i != $colCount) {
  78. $menu .= $menuColTMP;
  79. $menu = str_replace("#offset#",$i,$menu);
  80. }
  81. }
  82. $colsTMP = CutSection($html, "<!--[COL_BEGIN]-->", "<!--[COL_END]-->", true);
  83. $rows = "";
  84. $fields = $res->fields();
  85. $cnt = count($fields);
  86. for ($i=0; $i<$cnt+1; $i++)
  87. {
  88. $rows .= str_replace($colsTMP,$columns,$rowTMP);
  89. $rows = str_replace("#row#",$i,$rows);
  90. }
  91. for ($i=1; $i<=$cnt; $i++)
  92. {
  93. $rows = str_replace("<!--[VALUE.$i.0]-->",$fieldNames[$fields[$i-1]],$rows);
  94. }
  95. for ($i=1; $i<=$colCount; $i++)
  96. {
  97. $rows = str_replace("<!--[VALUE.0.$i]-->",($page-1)*$colCount+$i,$rows);
  98. }
  99. $i = 1;
  100. while ($arr = $res->nextRow())
  101. {
  102. $menu = str_replace("#klient_id_".($i-1)."#",$arr["id_klienta"],$menu);
  103. for ($j=1; $j<=$cnt; $j++)
  104. {
  105. $rows = str_replace("<!--[VALUE.$j.$i]-->",$arr[$fields[$j-1]],$rows);
  106. }
  107. $i++;
  108. }
  109. $menu = str_replace($menuColTMP,$menu,$menuRowTMP);
  110. $html = str_replace($menuRowTMP,$menu,$html);
  111. $rows = str_replace("<!--[VALUE.0.0]-->","<BR><BR>",$rows);
  112. $html = str_replace($rowTMP,$rows,$html);
  113.  
  114. print($html);
  115. ?>


wynik jest wyświetlany poprzez html z pliku index.html:

  1. <!--[MENU_ROW_BEGIN]-->
  2. <!--[MENU_COL_BEGIN]-->
  3. <TD>
  4. <A HREF="edycja_klient.php?id_klienta=#klient_id_#offset##"><IMG SRC=""></A>
  5. </TD>
  6. <!--[MENU_COL_END]-->
  7. <!--[MENU_ROW_END]-->
  8.  
  9. <!--[ROW_BEGIN]-->
  10. <TR>
  11. <!--[COL_BEGIN]-->
  12. <TD>
  13. <!--[VALUE.#row#.#col#]-->
  14. </TD>
  15. <!--[COL_END]-->
  16. </TR>
  17. <!--[ROW_END]-->
  18. </TABLE>
  19. <!--[PAGE_LIST_BEGIN]-->
  20. <A HREF="index.php?page=#page#">#page#</A>
  21. <!--[PAGE_LIST_END]-->
  22. </BODY>


Następnie zrobiłem sobie taki oto formularz, który umieściłem w pliku z funkcjami wyświetl. a który jest wyświetlany przez plik edycja_klient_form.php
  1. <?php
  2. //widok_dane_klienta.php
  3. require('funkcje_sklep_gl.php');
  4.  
  5. tworz_naglowek_html("Widok Dane Klienta");
  6.  
  7.  
  8. if (sprawdz_uzyt_admin())
  9. {
  10. wyswietl_form_edycja_klienta();
  11. }
  12. else
  13. echo 'Brak autoryzacji do wejscia na obszar administracyjny.';
  14.  
  15.  
  16. // jeżeli zalogowany jako administrator, pokaż łącza 
  17. if(isset($HTTP_SESSION_VARS['uzyt_admin']))
  18. {
  19.  
  20. wyswietl_przycisk('admin.php', 'menu-admin', 'Menu Administratora');
  21. }
  22. tworz_stopke_html();
  23. ?>


wygląd formularza:
  1. <FORM action='edycja_klient_wynik.php' method='POST' >
  2. <table style="text-align: left; width: 91%;" border="0" frame="hsides" cellpadding="3" cellspacing="3">
  3. <tr>
  4. <td align="undefined" valign="undefined"></td>
  5. <td align="center" valign="undefined"><b>DANE OSOBOWE KLIENTA</b></td>
  6. <td align="undefined" valign="undefined"></td>
  7. </tr>
  8. <tr>
  9. <td align="justify" valign="undefined" ><b><br/>IMIE:</b></td>
  10. <td align="left" valign="undefined" ><INPUT type="text" align="middle" maxlength="32" name="imie"></td>
  11. </tr>
  12. <tr>
  13. <td align="justify" valign="undefined"><b><br/>NAZWISKO:<b/></td>
  14. <td align="left" valign="undefined"><INPUT type="text" align="middle" maxlength="32" name="nazwisko" ></td>
  15. </tr>
  16. <tr>
  17. <td align="justify" valign="undefined"><b><br/>NR TEL DOM:</b></td>
  18. <td align="left" valign="undefined"><INPUT type="text" align="middle" maxlength="14" name="nr_tel_dom" ></td>
  19. </tr>
  20. <tr>
  21. <td align="justify" valign="undefined"><b><br/>NR TEL KOM:<b/></td>
  22. <td align="left" valign="undefined"><INPUT type="text" align="middle" maxlength="14" name="nr_tel_kom" ></td>
  23. </tr>
  24.  
  25. <tr>
  26. <td align="undefined" valign="undefined"></td>
  27. <td align="center" valign="undefined"><br/><br><b>DANE REKLAMACJI KLIENTA<b/></td>
  28. <td align="undefined" valign="undefined"></td>
  29. </tr>
  30. <tr>
  31. <td align="undefined" valign="undefined"></td>
  32. <td align="center" valign="undefined"><b>OPIS USTERKI:<b/></td>
  33. <td align="undefined" valign="undefined"></td>
  34. <tr align="right">
  35. <td align="undefined" valign="undefined"></td>
  36. <td align="right" valign="undefined""><TEXTAREA type="text" align="center" size="255" name="opis_usterki" rows="7" cols="45"> </TEXTAREA></td>
  37. <tr/>
  38. </tr>
  39. <tr>
  40. <td align="undefined" valign="undefined"></td>
  41. <td align="center" valign="undefined"><b>INFO DLA KLIENTA:<b/></td>
  42. <td align="undefined" valign="undefined"></td>
  43. <TR align="right">
  44. <td align="undefined" valign="undefined"></td>
  45. <td align="right" valign="undefined"><TEXTAREA type="text" align="middle" size="255" name="r_dodatkowe_info" rows="7" cols="45"></TEXTAREA>></td>
  46. <tr/>
  47. </tr>
  48. <tr>
  49.  
  50. <td align="justify" valign="undefined"><b>OS MODYFIK.<b/></td>
  51. <td align="left" valign="undefined"><INPUT type="text" align="middle" maxlength="32" name="os_modyf" ></td>
  52. </tr>
  53.  
  54. <td align="undefined" valign="undefined"></td>
  55. <td align="center" valign="undefined"><br/><br/><b>DANE ZAMÓWIEŃ KLIENTA<b/></td>
  56. <td align="undefined" valign="undefined"></td>
  57. </tr>
  58. <tr>
  59. <td align="undefined" valign="undefined"></td>
  60. <td align="left" valign="undefined"><b>ZAMÓWIENIE:<b/></td>
  61. <td align="undefined" valign="undefined"></td>
  62. <TR align="right">
  63. <td align="undefined" valign="undefined"></td>
  64. <td align="right" valign="undefined"><TEXTAREA type="text" align="middle" size="255" name="zlecenie" rows="7" cols="45"></TEXTAREA>></td>
  65. <tr/>
  66. </tr>
  67. <tr>
  68. <td align="undefined" valign="undefined"></td>
  69. <td align="left" valign="undefined"><b>INFO DLA KLIENTA:<b/></td>
  70. <td align="undefined" valign="undefined"></td>
  71. <tr align="right">
  72. <td align="undefined" valign="undefined"></td>
  73. <td align="right" valign="undefined"><TEXTAREA type="text" align="middle" size="255" name="z_dodatkowe_info" rows="7" cols="45"></TEXTAREA></td>
  74. <tr/>
  75. </tr>
  76. <tr>
  77. <td align="justify" valign="undefined"><b>OS MODYFIK.<b/></td>
  78. <td align="left" valign="undefined"><INPUT type="text" align="middle" maxlength="32" name="os_modyfik_zlecenie" ></td>
  79.  
  80. </tr>
  81. <tr>
  82. <td align="undefined" valign="undefined" width="10%"></td>
  83. <td align="justify" valign="undefined">Upewnij się czy wszystko dobrze wpisałeś !!</td>
  84. <td align="undefined" valign="undefined"></td>
  85. </tr>
  86. </tbody>
  87.  
  88. <input type="submit" value="aktualizuj" onclick="confirm('Na pewno ?')">
  89. <input type="reset">
  90.  
  91. <BR/>
  92. </FORM>


I teraz wkońcu sedno sprawy: jak zrobić update poszczególnych wybranych pól(nie koniecznie zawsze muszą być wszystkie wypełnione), tak aby pola, które nie zostały wypełnione nie zmieniały swojej wartości. Dodam że ma to być dla danego klienta(id_klienta z tabeli klient, id_reklamacji z tabeli reklamacja oraz id_zamowienia z tabeli zamowienia) wybranego z pliku index.php przy założeniu że jeżeli zmieniamy dane o reklamacji/zamówieniu musi być wpisana osoba modyfikująca wpis.

Prosze o pomoc withstupidsmiley.gif bardzo porsze
AxZx
moze wystarczy warunek
  1. <?php
  2.  
  3. if($_POST['pole'] != ''){
  4. //teraz update bazy
  5. }
  6. ?>
asterix1983
dz sprawdze, ale jak ułożyć np. zapytanie update dla przypadków wpisów o opisie usterki, jej dodatkowych informacjach jeżeli dane te znajdują się w innej tabeli niż dane klienta

klient: | reklamacja:
-id_klienta | -id_reklamacji
-imie | -opis_usterki
-nazwisko | -dodatkowe_info
-nr_tel_dom | -os_modyf
-nr_tel_kom | -id_klienta

a przecierz przypisanych id_reklamacji do danego id_klienta może być dużo, a tu by trzeba rozróżnić dokładną reklamacje.

Przy czym przy wybieraniu klienta po przez index.php wybieramy konkretną sytuację (np. klient o nazwisku k1 który ma akurat taką a taką reklamacje)
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.