Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Edytowanie rekordów z bazy
Forum PHP.pl > Forum > Przedszkole
user767
Witam

Mam formularz i skrypt, który wrzuca dane do bazy.
  1. <form method="post" action="skrypt.php">
  2. <legend>Dane personalne</legend>
  3. Imię:<br /><input name="Imie" type="text" /><br />
  4. Nazwisko:<br /><input name="Nazwisko" type="text" /><br />
  5. Urodziny:<br /><input name="Urodziny" type="text" /><br />
  6. Grupa:<br /><input name="Grupa" type="text" /><br />
  7. <input type="submit" name="wyslij" value="Zapisz &raquo;" class="button" />
  8. </form>


  1. <?php
  2.  
  3. mysql_connect('127.0.0.1', 'login', 'pass') OR die("Błąd!");
  4. mysql_select_db('baza') OR die("Błąd!");
  5.  
  6. $imie = addslashes(trim($_POST['Imie']));
  7. $nazwisko = addslashes(trim($_POST['Nazwisko']));
  8. ...
  9. $zapytanie = "INSERT INTO osoby SET imie='$imie',nazwisko='$nazwisko'";
  10.  
  11. $idzapytania = mysql_query($zapytanie);
  12.  
  13. ?>


A jak zrobić, żeby edytować dane w formularzu i z powrotem wysłać do bazy zmienione?
Chciałbym, aby wiersz do edycji z bazy był wybierany z listy rozwijanej SELECT, np po nazwisku.
zordon
O ile dobrze zrozumiałem, co chcesz zrobić:
1. ładujesz wszystkie rekordy z bazy do tablicy, petla foreach wrzucasz dane do selecta
2. piszesz funkcje onchange w javascript dla każdego optiona która wstawia dane z tego wiersza do odpowiednich pól formularza
3. dodatkowo ustawiłbym w formularzu dodatkowe pole hidden(ustawiane w poprzednim kroku, domyślnie puste), które mówiłoby Ci, czy rekord jest nowy i ma zostać dodany do bazy (pole hidden puste) , czy pochodzi z selecta i ma zostać uaktualniony (pole hidden rowne id rekordu z bazy)
4. w skrypcie odbierajacym formularz sprawdzasz czy pole hidden jest puste, wtedy dodajesz normalnie nowy rekord, jesli nie jest puste, uaktualniasz ($zapytanie = "UPDATE ... ") rekord o takim id danymi z formularza
user767
Ja znalazłem prostszy sposób, ale nie wiem czy działa.
Posklejałem trochę kodu, który i tak jest w rozsypce

1)Pobranie wszystkich Janów Kowalskich i edytuj przy nazwisku
2)Przekazanie w adresie id do zapytania
3)Wygenerowanie formularza z danymi z mysql i zamiana
4)Wysłanie do aktualizacji

W bazie tworzymy id, imie, nazwisko nazywamy osoby.
Tworzymy osoby_edycja.php i osoby_edycja2.php.

  1. <?
  2.  
  3. mysql_connect('127.0.0.1', 'user', 'pass') ;
  4. mysql_select_db('baza') ;
  5.  
  6.  
  7. $query="SELECT * FROM osoby";
  8. $wynik=mysql_query($query);
  9.  
  10. if(mysql_num_rows($wynik) > 0) {
  11. echo "<table>";
  12. while($r = mysql_fetch_array($wynik)) {
  13. echo "<tr>";
  14. echo "<td>".$r[1]."</td>"; // Pierwsza kolumna imie
  15. echo "<td>".$r[2]."</td>"; // Druga kolumna nazwisko
  16. echo "<td><a href=\"osoby_edycja2.php?id={$r[0]}\">Edytuj</a></td>"; // odsyłacz z id osoby do następnej strony z formularzem edycji
  17. echo "</tr>";
  18. }
  19. echo "</table>";
  20. }
  21.  
  22.  
  23.  
  24. ?>




  1. <?
  2.  
  3. $id = $_GET['id'];
  4.  
  5. mysql_connect('127.0.0.1', 'user', 'pass') ;
  6. mysql_select_db('baza') ;
  7.  
  8. $wynik=mysql_query("SELECT * FROM osoby WHERE id='".$id."' "); // Szukaj w bazie osoby o id
  9.  
  10. while ($row = mysql_fetch_array($wynik, MYSQL_ASSOC)) {
  11. echo "Edycja dla: {$row['nazwisko']} {$row['imie']} <br /><br />";
  12. echo "<form method=\"post\" action=\"edyc_osoby.php\" />";
  13. echo "<input type=\"text\" value=\"{$row['imie']}\">\n";
  14. echo "<input type=\"text\" value=\"{$row['nazwisko']}\">\n";
  15. echo "<input type=\"hidden\" name=\"id\" value=\"{$row['id']}\" />"; //musi być, inaczej nadpisze wszystkie
  16. echo "<br /><br /><input type=\"submit\" name=\"wyslij\" value=\"Zapisz &raquo;\" class=\"button\" /> ";
  17. echo "<input type=\"reset\" value=\"Wyczyść\" class=\"button\" />";
  18. echo "<br />";
  19. echo "</form>";
  20. }
  21.  
  22.  
  23. ?>


Teraz plik edyc_osoby.php ze skryptem, którego treści nie zobaczysz dzięki header:
  1. mysql_connect('127.0.0.1', 'user', 'pass') OR die("Błąd w połączeniu z serwerem!");
  2. mysql_select_db('baza') OR die("Błąd w połączeniu z bazą danych!");
  3.  
  4. $imie = addslashes(trim($_POST['Imie']));
  5. $nazwisko = addslashes(trim($_POST['Nazwisko']));
  6. $id = addslashes(trim($_POST['id']));
  7.  
  8. $zapytanie = "UPDATE osoby SET id='$id',imie='$imie',nazwisko='$nazwisko'";
  9.  
  10. $idzapytania = mysql_query($zapytanie);
  11.  
  12. header("Location: komunikat.html"); //strona, którą zobaczysz
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.