Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]edycja rekordow PHP, przy edycji, dodaje sie nowy rekord
areal
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 7.07.2015

Ostrzeżenie: (0%)
-----


  1. <form action="index.php" method="post">
  2. imię:<br />
  3. <input type="text" name="imie" /><br />
  4. e-mail:<br />
  5. <input type="text" name="email" /><br />
  6. <input type="submit" value="dodaj" />
  7. </form>
  8.  
  9.  
  10.  
  11.  
  12. <?php
  13. // odbieramy dane z formularza
  14. $imie = $_POST['imie'];
  15. $email = $_POST['email'];
  16. require("connection.php");
  17. // ładujemy plik z połączeniem
  18. connection();
  19. if($imie and $email) {
  20.  
  21. // łączymy się z bazą danych
  22.  
  23.  
  24. // dodajemy rekord do bazy
  25. $ins = @mysql_query("INSERT INTO test SET imie='$imie', email='$email'");
  26.  
  27. if($ins) echo "Rekord został dodany poprawnie";
  28. else echo "Błąd nie udało się dodać nowego rekordu";
  29.  
  30. mysql_close($connection);
  31. }
  32.  
  33.  
  34.  
  35. /*
  36.   połączenie z bazą sobie darujemy
  37.   opisane jest ono w tej poradzie
  38.   <a href="http://www.kess.com.pl/?sid=10&pid=32" target="_blank">http://www.kess.com.pl/?sid=10&pid=32</a>
  39.   */
  40.  
  41. /* zapytanie do konkretnej tabeli */
  42. $wynik = mysql_query("SELECT * FROM test")
  43. or die('Błąd zapytania');
  44.  
  45. /*
  46.   wyświetlamy wyniki, sprawdzamy,
  47.   czy zapytanie zwróciło wartość większą od 0
  48.   */
  49. if(mysql_num_rows($wynik) > 0) {
  50. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  51. echo "<table cellpadding=\"2\" border=1>";
  52. while($r = mysql_fetch_object($wynik)) {
  53. echo "<tr>";
  54. echo "<td>".$r->imie."</td>";
  55. echo "<td>".$r->email."</td>";
  56. echo "<td>
  57. <a href=\"index.php?a=del&amp;id={$r->id}\">DEL</a>
  58. <a href=\"index.php?a=edit&amp;id={$r->id}\">EDIT</a>
  59. </td>";
  60. echo "</tr>";
  61. }
  62. echo "</table>";
  63. }
  64.  
  65. $a = trim($_REQUEST['a']);
  66. $id = trim($_GET['id']);
  67.  
  68. if($a == 'edit' and !empty($id)) {
  69. /* zapytanie do tabeli */
  70. $wynik = mysql_query("SELECT * FROM test WHERE
  71. id='$id'")
  72. or die('Błąd zapytania');
  73. /*
  74.   wyświetlamy wyniki, sprawdzamy,
  75.   czy zapytanie zwróciło wartość większą od 0
  76.   */
  77. if(mysql_num_rows($wynik) > 0) {
  78. /* odczytujemy zawartość wiersza z tabeli */
  79. $r = mysql_fetch_assoc($wynik);
  80. /* wczytujemy dane do formularza */
  81. /*
  82.   w formularz znajdują się ukryte pola "a"
  83.   z wartością "save" i pole "id" z wartością
  84.   zmiennej id
  85.   */
  86. echo '<form action="index.php" method="post">
  87. <input type="hidden" name="a" value="save" />
  88. <input type="hidden" name="id" value="'.$id.'" />
  89. imię:<br />
  90. <input type="text" name="imie"
  91. value="'.$r['imie'].'" /><br />
  92. e-mail:<br />
  93. <input type="text" name="email"
  94. value="'.$r['email'].'" /><br />
  95. <input type="submit" value="popraw" />
  96. </form>';
  97. }
  98. }
  99. elseif($a == 'save') {
  100. /* odbieramy zmienne z formularza */
  101. $id = $_POST['id'];
  102. $imie = trim($_POST['imie']);
  103. $email = trim($_POST['email']);
  104. /* uaktualniamy tabelę test */
  105. mysql_query("UPDATE test SET imie='$imie',
  106. email='$email' WHERE id='$id'")
  107. or die('Błąd zapytania');
  108. echo 'Dane zostały zaktualizowane';
  109. }
  110.  
  111.  
  112.  
  113. ?>



Co nie działa z edycją, że gdy edytuje, oprócz zedytowanego rekordu, tworzy inny, nowy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
areal
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 7.07.2015

Ostrzeżenie: (0%)
-----


Dzięki za poradę z warunkami, ale w sumie odnośnie pytania, to zadziałały po prostu zmiana nazwy z formularza, bo najwidoczniej się dublowała.
Jeszcze, żeby nie zakładać nowego wątku, znacie jakiś sposób na automatyczne odświerzenie rezultatów,, inaczej niż poprzez f5 czy po prostu jakiś reload strony?

Coś tam wiem, że ajax itd. Ale może jest jakiś inny sposób? (łstwiejszy) btw. na kontente.bl.ee można sprawdzić jak to działa.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 12:00