Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Update danych przez formularz
Forum PHP.pl > Forum > PHP
kasjus
Mam problem: jest baza danych. Rekordy dodawane przez formularze. Usuwanie też działa ale problem z update - nie mam zielonego pojęcia jak zrobić.
Nie będę przedstawiał tutaj kodu, gdyż nie wiem jak podejść do tematu. Próbowałem "pakować" wybrany rekord w formularz dodawania nowego studenta - wartości pobrane z bazy były przypisywane w inputach - value="pole_rekordu"... Myślałem że zmiany dokonane ręcznie w takim formularzu będą przekazywane dalej do następnej strony. Niestety - chyba zły tok myślenia. Prosze o przykładowy kod, najprostszy jak sie da.
Załóżmy że: baza wps, user root, hasło mat,
jest 1 tabela: student - pola imie i nazwisko
Mamy w bazie studenta Marian Koniuszko
Chcemy mu zmienić imie na Stefan.
Wiem jak zrobić samo UPDATE na bazie, ale nie wiem jak zrobić by formularz
wyświetlił pobrane dane, pozwolił na zmiane ich i przekazał zmienione dane do następnej strony

Zadania:
1. wybranie rekordu z bazy (a.php).
2. wyświetenie ich na stronie z możliwością edycji (a.php)
3. zapis (strona b.php)
ActivePlayer
  1. <?
  2. if(isset($_POST['submit'])){
  3.  if(!empty($_GET['id'])){
  4. // update
  5.  }
  6.  else{
  7. // insert
  8.  }
  9. }
  10. else{
  11.  if(!empty($_GET['id'])){
  12. // pobranie danych do edycji, potem wstawiasz w formularz
  13.  }
  14. ?>
  15. Pokazanie forma
  16. <form action="?id=<?$_GET['id'];?>">
  17. ...
  18. <input type="submit" name="submit"/>
  19. </form>
  20. <?
  21. }


mam nadzieje ze sie nigdzie nie machnalem
kasjus
nie do końca wiem jak przekształcić to na mój kod więc zmienię pytanie na bardziej konkretne

selecta z bazy pomijam:
dane pobrane z bazy to: $imie=Marian, $nazwisko=Koniuszko
strona modyf.php; pomijam html.., form... itp

  1. <?
  2. echo '<tr><td align="right">Imie: </td>
  3. <td align="left"><input type="text" name="imie" size="15" maxlength="15" value="'.$imie.'"></td></tr>';
  4. echo '<tr><td align="right">Nazwisko: </td>
  5. <td align="left"><input type="text" name="nazwisko" size="15" maxlength="15" value="'.$nazwisko.'"></td></tr>';
  6. <tr><INPUT TYPE="button" VALUE="Dalej" onClick=" parent.location.href='potwierdz_zmiany.php ' "></tr>
  7. ?>


Czy w takiej postaci jest szansa na to by na stronie modyf.php kliknąć w pole, gdzie wyświetli się MARIAN i poprostu wpisać STEFAN a kliknięcie przycisku DALEJ prześle do strony potwierdz_zmiany.php dane po zmnianie.
Jeśli nie - to co trzeba zmienić - bo tak właśnie chcę żeby działało
nospor
moze bys tam kodem rzucil co update robisz?
thunderstorm
Oto moj kod. W pełni działający (((( a.php ))))
  1. <?
  2. $db = mysql_connect ("***", "***", "***");
  3. mysql_select_db ("stormnet");
  4. $result = mysql_query("SELECT * FROM users");
  5. echo "<table width = '800' align='center' border='1' cellpadding='0' cellspacing='0' bgcolor='#7C7C7C' bordercolor='#363634'>";
  6. echo "<tr><td>Nick<td>email<td>Wiek<td>GG<td>Stats<td>Miejscowosc<td>Ranga<td>Edytuj<td>Usun</a></td></tr>";
  7.  
  8. while ($rows = mysql_fetch_row($result))
  9. {
  10. echo "<form name='form2' method='post' action='b.php'>";
  11.  
  12. echo "<tr><td>
  13. <input name='id' type='hidden' value='$rows[0]' checked>
  14. <input name='nick' type='text' value='$rows[1]'><td>
  15. <input name='mail' type='text' value='$rows[2]'><td>
  16. <input name='wiek' type='text' value='$rows[3]' size='4'><td>
  17. <input name='gg' type='text' value='$rows[4]' size='5'><td>
  18. <input name='stats' type='text' value='$rows[5]'><td>
  19. <input name='city' type='text' value='$rows[6]'><td>
  20. <select name='rang'>
  21.   <option value='1'>W&oacute;dz</option>
  22.   <option value='2'>Szaman</option>
  23.   <option value='3'>Rekrut</option>
  24. </select>
  25. <td>
  26. <input name='Edytuj' type='submit'  value='Edytuj'>
  27. <td>
  28. <input name='Usun' type='submit'  value='Usun'>
  29. </a></td></tr>";
  30.  
  31. echo "</form>";
  32. }
  33. echo "</table>";
  34. ?>


I (((( b.php ))))
  1. <?
  2. $db = mysql_connect ("****", "****", "****");
  3. mysql_select_db ("stormnet");
  4. //zmienne
  5. $id = $_POST['id'];
  6. $nick = $_POST['nick'];
  7. $mail = $_POST['mail'];
  8. $wiek = $_POST['wiek'];
  9. $gg = $_POST['gg'];
  10. $stats = $_POST['stats'];
  11. $city = $_POST['city'];
  12. //JEZELI USUN
  13. if($_POST['Usun'])
  14. {
  15.  
  16. mysql_query("DELETE FROM users WHERE id= $id");
  17. print '<p algin="center">Dane zostaly Usuniete!</p>';
  18.  
  19. }
  20. //JEZELI EDYTUJ
  21. else if ($_POST['Edytuj'])
  22. {
  23. mysql_query("UPDATE users SET nick = '$nick' WHERE id= $id");
  24. mysql_query("UPDATE users SET mail = '$mail' WHERE id= $id");
  25. mysql_query("UPDATE users SET wiek = '$wiek' WHERE id= $id");
  26. mysql_query("UPDATE users SET gg = '$gg' WHERE id= $id");
  27. mysql_query("UPDATE users SET URL = '$stats' WHERE id= $id");
  28. mysql_query("UPDATE users SET city = '$city' WHERE id= $id");
  29. mysql_query("UPDATE users SET Ranga = '$rang' WHERE id= $id");
  30.  
  31. print '<p algin="center">Dane zostaly Zmienione!</p>';
  32. }
  33. else
  34. {
  35. print ("Nie zmieniono zadnych danych!");
  36. }
  37.  
  38. ?>
timmy
Thunderstorm - fajny update i ladnie chodzi.

Mam co do niego jedno pytanie:

Jak dodac tam w przyciskach obok przyciskow usun i edytuj, pole akceptuj, po ktorego kliknieciu rekord bylby przenoszony do drugiej tabeli o takiej samej konstrukcji-schemacie.
mike
A może by tak poczytać manuala i sładnię poznać :?:

  1. <?php
  2.  
  3. // ...
  4. mysql_query("UPDATE users SET nick = '$nick' WHERE id= $id");
  5. mysql_query("UPDATE users SET mail = '$mail' WHERE id= $id");
  6. mysql_query("UPDATE users SET wiek = '$wiek' WHERE id= $id");
  7. mysql_query("UPDATE users SET gg = '$gg' WHERE id= $id");
  8. mysql_query("UPDATE users SET URL = '$stats' WHERE id= $id");
  9. mysql_query("UPDATE users SET city = '$city' WHERE id= $id");
  10. mysql_query("UPDATE users SET Ranga = '$rang' WHERE id= $id");
  11. // ...
  12.  
  13. ?>
-->
  1. <?php
  2.  
  3. //...
  4. mysql_query("UPDATE users SET nick = '$nick', mail = '$mail', wiek = '$wiek', gg = '$gg', URL = '$stats', city = '$city', Ranga = '$rang' WHERE id= $id");
  5. // ...
  6.  
  7. ?>
timmy
Mike_mech uwierz mi ze probowalem to zrobic samemu ale nie bardzo mnie to szlo, wiec wolalem zapytac na forum.

do pliku b.php dorobilem cos takiego

  1. <?php
  2.  
  3.  
  4. //JEZELI Akceptuj
  5. if ($_POST['Akceptuj'])
  6. {
  7. mysql_query("INSERT INTO news SET a= '$a' ");
  8. mysql_query("INSERT INTO news SET b= '$b' ");
  9. mysql_query("INSERT INTO news SET c= '$c' ");
  10. mysql_query("INSERT INTO news SET d = '$d' ");
  11. mysql_query("INSERT INTO news SET e = '$e' ");
  12. mysql_query("INSERT INTO news SET f = '$f' ");
  13. mysql_query("INSERT INTO news SET g = '$g' ");
  14.  
  15.  
  16. print '<p algin="center">Dane zostaly Zmienione!</p>';
  17.  
  18. }
  19. else
  20. {
  21. print ("Nie zmieniono zadnych danych!");
  22. }
  23.  
  24.  
  25. ?>


Dodawac dodaje rekordy do drugiej takiej samej tabeli, ale bardzo to rozrzuca i nie wiadomo co wlasciwie gdzie wkleja.

Moze ktos mnie powiedziec w jaki sposob to przerobic zeby wrzucal wszystko do konkretnych wierszy i kolumn po koleji?




Badzcie pozdrowieni, Ci ktorzy tak dzielnie zmierzaja z pomoca. biggrin.gif
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.