Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]edycja rekordow PHP
Forum PHP.pl > Forum > Przedszkole
areal
  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?
Kshyhoo
Bo wystarczy, że pojawi się $imie i $email i już... Dodaj więcej warunków...
areal
Tak dla przykładu jakie warunki ?
KsaR
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).
areal
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.
Kshyhoo
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...
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.