Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Piszę stronę do codziennego użytku i mam problem z odświeżeniem strony
Forum PHP.pl > Forum > Przedszkole
arstherapia
Witajcie,

piszę sobie taką prostą stronkę czytającą notatki z bazy danych + podstawowy CRUD. Bardzo ułatwi mi to życie.
Ta mini appka prawie działa - ale mam problem - po dodaniu lub edycji notatki do bazy muszę ręcznie odświeżać stronę, żeby była widoczna.
Błąd - headers already sent... A ja chciałbym, żeby pokazywała się ta sama strona, tylko zaktualizowana sad.gif

W urlu są dwie zmienne pochodzące z linka ze strony głównej - nazwa tabeli w bazie i typ operacji crud + pole id tej operacji.

Pomóżcie proszę. Kod jeszcze w rozsypce:

  1. <?php
  2.  
  3. include('partials/header.php');
  4.  
  5. define('_HOST_NAME','localhost');
  6. define('_DATABASE_NAME','pacjenci');
  7. define('_DATABASE_USER_NAME','root');
  8. define('_DATABASE_PASSWORD','hobbiton');
  9.  
  10. $MySQLiconn = new MySQLi(_HOST_NAME,_DATABASE_USER_NAME,_DATABASE_PASSWORD,_DATABASE_NAME);
  11.  
  12. if($MySQLiconn->connect_errno)
  13. {
  14. die("ERROR : -> ".$MySQLiconn->connect_error);
  15. }
  16.  
  17. ?>
  18.  
  19. <div class="col-lg-10">
  20.  
  21. <?php $table=$_GET['table'];?>
  22.  
  23. <hr><h3><?php echo $table?></h3><br>
  24.  
  25. <table class="table table-bordered">
  26.  
  27. <?php $res = $MySQLiconn->query("SELECT * FROM $table");
  28. while($row=$res->fetch_array())
  29. {
  30. ?>
  31.  
  32. <tr>
  33. <td class="col-md-1"><?php echo $row['id']; ?></td>
  34. <td class="col-md-2"><?php echo $row['data']; ?></td>
  35. <td class="col-md-7"><?php echo $row['sesja']; ?></td>
  36. <td class="col-md-1"><a href="?edit=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Edytuj</a></td>
  37.  
  38. <td class="col-md-1"><a href="?del=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Usuń</a></td>
  39. </tr>
  40. <?php
  41. }
  42. ?>
  43. </table>
  44.  
  45. <hr><h3>Dodaj nową sesję:</h3>
  46.  
  47. <div id="form">
  48. <form method="post">
  49.  
  50. <div class="form-group">
  51. <label for="data"></label>
  52. <input class="form-control" type="date" name="data" placeholder="data" value="<?php if(isset($_GET['edit'])) echo $getROW['data']; ?>">
  53. </div>
  54.  
  55. <div class="form-group">
  56. <label for="sesja"></label>
  57. <textarea class="form-control" rows="8" type="text" name="sesja" placeholder="sesja" value="<?php if(isset($_GET['edit'])) echo $getROW['sesja']; ?>"></textarea>
  58. </div>
  59.  
  60. <?php
  61. if(isset($_GET['edit']))
  62. {
  63. ?>
  64. <button class="btn btn-default" type="submit" name="update">Uaktualnij</button>
  65. <?php
  66. }
  67. else
  68. {
  69. ?>
  70. <button class="btn btn-default" type="submit" name="save">Zapisz</button>
  71. <?php
  72. }
  73. ?>
  74. </td>
  75. </tr>
  76. </table>
  77. </form>
  78.  
  79. </div>
  80.  
  81. </div>
  82.  
  83. <?php
  84.  
  85. include_once 'db.php';
  86.  
  87. /* code for data insert */
  88.  
  89. if(isset($_POST['save']))
  90. {
  91.  
  92. $data = $MySQLiconn->real_escape_string($_POST['data']);
  93. $sesja = $MySQLiconn->real_escape_string($_POST['sesja']);
  94.  
  95. $SQL = $MySQLiconn->query("INSERT INTO $table(data,sesja) VALUES('$data','$sesja')");
  96.  
  97. if(!$SQL)
  98. {
  99. echo $MySQLiconn->error;
  100. }
  101. }
  102. /* code for data insert */
  103.  
  104.  
  105. /* code for data delete */
  106.  
  107.  
  108. if(isset($_GET['del']))
  109.  
  110. {
  111. $SQL = $MySQLiconn->query("DELETE FROM $table WHERE id=".$_GET['del']);
  112.  
  113. ?>
  114. <script language="javascript" type="text/javascript">
  115. alert('Dziekujemy!');
  116.  
  117. </script><?php
  118.  
  119. }
  120.  
  121. /* code for data delete */
  122.  
  123.  
  124.  
  125. /* code for data update */
  126. if(isset($_GET['edit']))
  127. {
  128. $SQL = $MySQLiconn->query("SELECT * FROM $table WHERE id=".$_GET['edit']);
  129. $getROW = $SQL->fetch_array();
  130. }
  131.  
  132. if(isset($_POST['update']))
  133. {
  134. $SQL = $MySQLiconn->query("UPDATE $table SET data='".$_POST['data']."', sesja='".$_POST['sesja']."' WHERE id=".$_GET['edit']);
  135.  
  136.  
  137. }
  138. /* code for data update */
  139.  
  140. ?>
  141.  
  142. <?php
  143.  
  144. include('partials/footer.php');
  145.  
  146. ?>
nospor
Najpierw wyswietlasz rekordy a dopiero potem edytujesz i wielce zdziwiony ze wyswietlone rekordy nie zawieraja zmian... Toz to logika na poziomie zlobka jest. Warto abys sam zastosowal sie do swojego avatara wink.gif
Najpierw masz edytowac/kasowac/dodawac a dopiero potem wyswietlac - wowczas bedziesz widzial zmiany od razu.
arstherapia
Cytat(nospor @ 23.08.2015, 13:25:23 ) *
Najpierw wyswietlasz rekordy a dopiero potem edytujesz i wielce zdziwiony ze wyswietlone rekordy nie zawieraja zmian... Toz to logika na poziomie zlobka jest. Warto abys sam zastosowal sie do swojego avatara wink.gif
Najpierw masz edytowac/kasowac/dodawac a dopiero potem wyswietlac - wowczas bedziesz widzial zmiany od razu.


Dopiero się uczę, próbowałem też tak, ale teraz to już w ogóle nie działa...

  1. <?php
  2.  
  3. include('partials/header.php');
  4.  
  5. define('_HOST_NAME','localhost');
  6. define('_DATABASE_NAME','pacjenci');
  7. define('_DATABASE_USER_NAME','root');
  8. define('_DATABASE_PASSWORD','hobbiton');
  9.  
  10. $MySQLiconn = new MySQLi(_HOST_NAME,_DATABASE_USER_NAME,_DATABASE_PASSWORD,_DATABASE_NAME);
  11.  
  12. if($MySQLiconn->connect_errno)
  13. {
  14. die("ERROR : -> ".$MySQLiconn->connect_error);
  15. }
  16.  
  17. ?>
  18.  
  19. <?php
  20.  
  21.  
  22.  
  23. /* code for data insert */
  24.  
  25. if(isset($_POST['save']))
  26. {
  27.  
  28. $data = $MySQLiconn->real_escape_string($_POST['data']);
  29. $sesja = $MySQLiconn->real_escape_string($_POST['sesja']);
  30.  
  31. $SQL = $MySQLiconn->query("INSERT INTO $table(data,sesja) VALUES('$data','$sesja')");
  32.  
  33. if(!$SQL)
  34. {
  35. echo $MySQLiconn->error;
  36. }
  37. }
  38. /* code for data insert */
  39.  
  40.  
  41. /* code for data delete */
  42.  
  43.  
  44. if(isset($_GET['del']))
  45.  
  46. {
  47. $SQL = $MySQLiconn->query("DELETE FROM $table WHERE id=".$_GET['del']);
  48.  
  49. ?>
  50. <script language="javascript" type="text/javascript">
  51. alert('Dziekujemy!');
  52.  
  53. </script><?php
  54.  
  55. }
  56.  
  57. /* code for data delete */
  58.  
  59.  
  60.  
  61. /* code for data update */
  62. if(isset($_GET['edit']))
  63. {
  64. $SQL = $MySQLiconn->query("SELECT * FROM $table WHERE id=".$_GET['edit']);
  65. $getROW = $SQL->fetch_array();
  66. }
  67.  
  68. if(isset($_POST['update']))
  69. {
  70. $SQL = $MySQLiconn->query("UPDATE $table SET data='".$_POST['data']."', sesja='".$_POST['sesja']."' WHERE id=".$_GET['edit']);
  71.  
  72.  
  73. }
  74. /* code for data update */
  75.  
  76. ?>
  77.  
  78. <div class="col-lg-10">
  79.  
  80. <?php $table=$_GET['table'];?>
  81.  
  82. <hr><h3><?php echo $table?></h3><br>
  83.  
  84. <table class="table table-bordered">
  85.  
  86. <?php $res = $MySQLiconn->query("SELECT * FROM $table");
  87. while($row=$res->fetch_array())
  88. {
  89. ?>
  90.  
  91. <tr>
  92. <td class="col-md-1"><?php echo $row['id']; ?></td>
  93. <td class="col-md-2"><?php echo $row['data']; ?></td>
  94. <td class="col-md-7"><?php echo $row['sesja']; ?></td>
  95. <td class="col-md-1"><a href="?edit=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Edytuj</a></td>
  96.  
  97. <td class="col-md-1"><a href="?del=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Usuń</a></td>
  98. </tr>
  99. <?php
  100. }
  101. ?>
  102. </table>
  103.  
  104. <hr><h3>Dodaj nową sesję:</h3>
  105.  
  106. <div id="form">
  107. <form method="post">
  108.  
  109. <div class="form-group">
  110. <label for="data"></label>
  111. <input class="form-control" type="date" name="data" placeholder="data" value="<?php if(isset($_GET['edit'])) echo $getROW['data']; ?>">
  112. </div>
  113.  
  114. <div class="form-group">
  115. <label for="sesja"></label>
  116. <textarea class="form-control" rows="8" type="text" name="sesja" placeholder="sesja" value="<?php if(isset($_GET['edit'])) echo $getROW['sesja']; ?>"></textarea>
  117. </div>
  118.  
  119. <?php
  120. if(isset($_GET['edit']))
  121. {
  122. ?>
  123. <button class="btn btn-default" type="submit" name="update">Uaktualnij</button>
  124. <?php
  125. }
  126. else
  127. {
  128. ?>
  129. <button class="btn btn-default" type="submit" name="save">Zapisz</button>
  130. <?php
  131. }
  132. ?>
  133. </td>
  134. </tr>
  135. </table>
  136. </form>
  137.  
  138. </div>
  139.  
  140. </div>
  141.  
  142.  
  143.  
  144. <?php
  145.  
  146. include('partials/footer.php');
  147.  
  148. ?>




Oj, chyba coś mylę. Logika:

1. Wyświetlić tabelę z notatkami pacjentów.
2. Obok rekordów - data - notatka - przyciski edytuj / usuń.
3. Umieścić pod spodem formularz dodawania nowej notatki

4. Jeśli dodaj nową notatkę - to wpis do bazy i przeładuj all.
5. Jeśli kliknięcie na usuń - to usuń z bazy i przeładuj all.
6. Jeśli edycja, to w polach formularza dodawania wyświetl pola wg id,
zmień przycisk na uaktualnij i insert to do bazy. Potem przeładuj.

Chyba nie rozumiem, jak mam najpierw edytować, a potem wyświetlić, jeśli to jest na jednej stronie:(
nospor
Cytat
Chyba nie rozumiem, jak mam najpierw edytować, a potem wyświetlić, jeśli to jest na jednej stronie
Ja nie mowie o formularzu do edycji... Ja mowie o kodzie, gdzie w bazie juz zmieniasz dane. Ten wlasnie kod ma byc wykonany przed wyswieteniem listy. Tak samo jak kod odpowiedzialny za skaowanie z bazy czy za dodanie z bazy.
arstherapia
Cytat(nospor @ 23.08.2015, 13:41:17 ) *
Ja nie mowie o formularzu do edycji... Ja mowie o kodzie, gdzie w bazie juz zmieniasz dane. Ten wlasnie kod ma byc wykonany przed wyswieteniem listy. Tak samo jak kod odpowiedzialny za skaowanie z bazy czy za dodanie z bazy.


Ale czy to oznacza konieczność posiadania dwóch stron? Np.

/notatki.php --> wyświetlanie tabeli z danymi, formularz do edycji, etc.
/crud.php --> tutaj dzieją się operacje, po których jest powrót do strony notatki.php ?

Myślałem o tym, ale jest problem. Otóż:

1. Strona index.php - tutaj listuję przyciski z nazwami tabel, nazwę tabeli przekazuję do urla .

  1.  
  2. <?
  3. error_reporting(E_ALL ^ E_DEPRECATED);
  4.  
  5. mysql_connect ('localhost', 'root', 'hobbiton');
  6. mysql_select_db ('pacjenci');
  7.  
  8. $result = mysql_query("show tables");
  9. while($table = mysql_fetch_array($result)) {
  10. echo('<p><a class="btn btn-default btn-block" href="sesje.php?table=' . $table[0] . '"role="button">'. $table[0] . '</a></p>');
  11. }
  12.  
  13. // Close the connection
  14. ?>


2. Strona notatki.php - wyświetla mi tabelę z danymi wg urla + formularz, plus przyciski do edycji.


  1. <table class="table table-bordered">
  2.  
  3. <?php $res = $MySQLiconn->query("SELECT * FROM $table");
  4. while($row=$res->fetch_array())
  5. {
  6. ?>
  7.  
  8. <tr>
  9. <td class="col-md-1"><?php echo $row['id']; ?></td>
  10. <td class="col-md-2"><?php echo $row['data']; ?></td>
  11. <td class="col-md-7"><?php echo $row['sesja']; ?></td>
  12. <td class="col-md-1"><a href="?edit=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Edytuj</a></td>
  13.  
  14. <td class="col-md-1"><a href="?del=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Usuń</a></td>
  15. </tr>
  16. <?php
  17. }
  18. ?>
  19. </table>


3. Strona crud.php - tutaj musiałbym już przekazać i poprzednią zmienną $table oraz nowe, wysłane z formularza, żeby powrócić...
Na tym etapie już się gubię. Nie mam pojęcia, jak to zrobić sad.gif Dodatkowo, musiałbym pewnie jakoś zapamiętać url z punktu 2. Czarna magia.



nospor
Cytat
Ale czy to oznacza konieczność posiadania dwóch stron? Np.
Kurcze, ale ja ci nie kaze pisac zadnych nowych stron. Owszem, wypadaloby by to bylo wszystko ladnie i pieknie, ale ja ci teraz mowie jak masz to zrobic z tym co masz teraz bez danego dodawania nowych rzeczy...

Poprostu kod, ktory cos robi w bazie (dodaje, edytuje, usuwa) masz przeniesc przed kod, ktory wyswietla dane z bazy. Tu NIE MA zadnej filozofii.
arstherapia
Cytat(nospor @ 23.08.2015, 13:52:59 ) *
Kurcze, ale ja ci nie kaze pisac zadnych nowych stron. Owszem, wypadaloby by to bylo wszystko ladnie i pieknie, ale ja ci teraz mowie jak masz to zrobic z tym co masz teraz bez danego dodawania nowych rzeczy...

Poprostu kod, ktory cos robi w bazie (dodaje, edytuje, usuwa) masz przeniesc przed kod, ktory wyswietla dane z bazy. Tu NIE MA zadnej filozofii.


Proszę o litościwe traktowanie.

Rozumiem, że ten kod:

  1. <?php
  2. if(isset($_GET['edit']))
  3. {
  4. ?>
  5. <button class="btn btn-default" type="submit" name="update">Uaktualnij</button>
  6. <?php
  7. }
  8. else
  9. {
  10. ?>
  11. <button class="btn btn-default" type="submit" name="save">Zapisz</button>
  12. <?php
  13. }
  14. ?>
  15. </td>
  16. </tr>
  17. </table>
  18. </form>
  19.  
  20. </div>
  21.  
  22. </div>
  23.  
  24. <?php
  25.  
  26.  
  27.  
  28. /* code for data insert */
  29.  
  30. if(isset($_POST['save']))
  31. {
  32.  
  33. $data = $MySQLiconn->real_escape_string($_POST['data']);
  34. $sesja = $MySQLiconn->real_escape_string($_POST['sesja']);
  35.  
  36. $SQL = $MySQLiconn->query("INSERT INTO $table(data,sesja) VALUES('$data','$sesja')");
  37.  
  38. if(!$SQL)
  39. {
  40. echo $MySQLiconn->error;
  41. }
  42. }
  43. /* code for data insert */
  44.  
  45.  
  46. /* code for data delete */
  47.  
  48.  
  49. if(isset($_GET['del']))
  50.  
  51. {
  52. $SQL = $MySQLiconn->query("DELETE FROM $table WHERE id=".$_GET['del']);
  53.  
  54. ?>
  55. <script language="javascript" type="text/javascript">
  56. alert('Dziekujemy!');
  57.  
  58. </script><?php
  59.  
  60. }
  61.  
  62. /* code for data delete */
  63.  
  64.  
  65.  
  66. /* code for data update */
  67. if(isset($_GET['edit']))
  68. {
  69. $SQL = $MySQLiconn->query("SELECT * FROM $table WHERE id=".$_GET['edit']);
  70. $getROW = $SQL->fetch_array();
  71. }
  72.  
  73. if(isset($_POST['update']))
  74. {
  75. $SQL = $MySQLiconn->query("UPDATE $table SET data='".$_POST['data']."', sesja='".$_POST['sesja']."' WHERE id=".$_GET['edit']);
  76.  
  77.  
  78. }
  79. /* code for data update */
  80.  
  81. ?>


mam wkleić gdzieś w poniższy - ale nie wiem, gdzie. Próbowałem w kilka miejsc i nie działa...

  1. <?php
  2.  
  3. include('partials/header.php');
  4.  
  5. define('_HOST_NAME','localhost');
  6. define('_DATABASE_NAME','pacjenci');
  7. define('_DATABASE_USER_NAME','root');
  8. define('_DATABASE_PASSWORD','hobbiton');
  9.  
  10. $MySQLiconn = new MySQLi(_HOST_NAME,_DATABASE_USER_NAME,_DATABASE_PASSWORD,_DATABASE_NAME);
  11.  
  12. if($MySQLiconn->connect_errno)
  13. {
  14. die("ERROR : -> ".$MySQLiconn->connect_error);
  15. }
  16.  
  17. ?>
  18.  
  19.  
  20.  
  21. <div class="col-lg-10">
  22.  
  23. <?php $table=$_GET['table'];?>
  24.  
  25. <hr><h3><?php echo $table?></h3><br>
  26.  
  27. <table class="table table-bordered">
  28.  
  29. <?php $res = $MySQLiconn->query("SELECT * FROM $table");
  30. while($row=$res->fetch_array())
  31. {
  32. ?>
  33.  
  34. <tr>
  35. <td class="col-md-1"><?php echo $row['id']; ?></td>
  36. <td class="col-md-2"><?php echo $row['data']; ?></td>
  37. <td class="col-md-7"><?php echo $row['sesja']; ?></td>
  38. <td class="col-md-1"><a href="?edit=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Edytuj</a></td>
  39.  
  40. <td class="col-md-1"><a href="?del=<?php echo $row['id'];?>&table=<?php echo $table?>" class="btn btn-default" role="button">Usuń</a></td>
  41. </tr>
  42. <?php
  43. }
  44. ?>
  45. </table>
  46.  
  47. <hr><h3>Dodaj nową sesję:</h3>
  48.  
  49. <div id="form">
  50. <form method="post">
  51.  
  52. <div class="form-group">
  53. <label for="data"></label>
  54. <input class="form-control" type="date" name="data" placeholder="data" value="<?php if(isset($_GET['edit'])) echo $getROW['data']; ?>">
  55. </div>
  56.  
  57. <div class="form-group">
  58. <label for="sesja"></label>
  59. <textarea class="form-control" rows="8" type="text" name="sesja" placeholder="sesja" value="<?php if(isset($_GET['edit'])) echo $getROW['sesja']; ?>"></textarea>
  60. </div>
  61.  
  62.  
  63.  
  64. <?php
  65.  
  66. include('partials/footer.php');
  67.  
  68. ?>
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.