Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Bo wystarczy, że pojawi się $imie i $email i już... Dodaj więcej warunków...


--------------------
Go to the top of the page
+Quote Post
areal
post
Post #3





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

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


Tak dla przykładu jakie warunki ?
Go to the top of the page
+Quote Post
KsaR
post
Post #4





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(areal @ 8.07.2015, 18:47:21 ) *
Tak dla przykładu jakie warunki ?

Ktos wpisze samo imie i juz powinno wyslac.

Sprawdzaj czy zmienna/indeks istnieje przez isset();

Zamiast:
  1. // odbieramy dane z formularza
  2. $imie = $_POST['imie'];
  3. $email = $_POST['email'];
  4. require("connection.php");
  5. // ładujemy plik z połączeniem
  6. connection();
  7. if($imie and $email) {

Zrób:
  1. require 'connection.php';
  2. // ładujemy plik z połączeniem
  3. connection();
  4. if(isset($_POST['imie'],$_POST['email']))
  5. {
  6. // odbieramy dane z formularza
  7. $imie = $_POST['imie'];
  8. $email = $_POST['email'];


Sprawdzi to czy zostaly wyslane pola (imie, email).

Ten post edytował Ksar 8.07.2015, 17:57:00


--------------------
Go to the top of the page
+Quote Post
areal
post
Post #5





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
Kshyhoo
post
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Błąd. Możesz przecież generować jeden formularz i w zależności od "add" lub "edit" wykonywać polecenia. Co, jeśliby opcji było więcej? Niepotrzebnie powielasz kod...


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 11:48