Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UPDATE tabeli SQL w php
Forum PHP.pl > Forum > PHP
kempas
Witam,
mam problem, poprawiony rekord nie zapisuje się do bazy ani tez nie daje żadnego komunikatu
Ota kod:
  1. <?
  2. include("includes/db.php");
  3. $a = trim($_REQUEST['a']);
  4. $id = trim($_GET['id']);
  5.  
  6. if($a == 'edit' and !empty($id)) {
  7. /* zapytanie do tabeli */
  8. $wynik = mysql_query("SELECT * FROM users WHERE
  9. user_id='$id'")
  10. or die('Błąd zapytania');
  11. /*
  12.   wyświetlamy wyniki, sprawdzamy,
  13.   czy zapytanie zwróciło wartość większą od 0
  14.   */
  15. if(mysql_num_rows($wynik) > 0) {
  16. /* odczytujemy zawartość wiersza z tabeli */
  17. $r = mysql_fetch_assoc($wynik);
  18. /* wczytujemy dane do formularza */
  19. /*
  20.   w formularz znajdują się ukryte pola "a"
  21.   z wartością "save" i pole "id" z wartością
  22.   zmiennej id
  23.   */
  24. echo '<form action="zapytanie.php" method="post">
  25. <input type="hidden" name="a" value="save" />
  26.  
  27. <input type="hidden" name="id" value="'.$id.'" />
  28. imię:<br />
  29. <input type="text" name="imie"
  30. value="'.$r['imie'].'" /><br />
  31.  
  32. e-mail:<br />
  33. <input type="text" name="email"
  34. value="'.$r['email'].'" /><br />
  35. <input type="submit" value="popraw" />
  36. </form>';
  37. }
  38. }
  39. elseif($a == 'save') {
  40. /* odbieramy zmienne z formularza */
  41. $id = $_POST['id'];
  42. $imie = trim($_POST['imie']);
  43. $email = trim($_POST['email']);
  44. /* uaktualniamy tabelę test */
  45. mysql_query("UPDATE users SET imie='$imie',
  46. email='$email' WHERE user_id='$id'")
  47. or die('Błąd zapytania');
  48. echo 'Dane zostały zaktualizowane';
  49. }
  50. ?>
  51.  
  52.  


Baza danych
  1.  
  2. CREATE TABLE `users` (
  3. `user_id` INT NOT NULL AUTO_INCREMENT ,
  4. `user_login` VARCHAR( 30 ),
  5. `user_haslo` VARCHAR( 30 ),
  6. `tekst` TEXT,
  7. `imie` VARCHAR( 30 ),
  8. `email` VARCHAR( 30 ),
  9.  
  10. PRIMARY KEY ( `user_id` )
  11. );
  12.  


Dane z bazy są wyświetlane, po kliknięciu EDIT pokazuje się formularz z polami do edycji ale po kliknięciu Popraw wraca do strony poprzedniej ( na ta z której pobiera wyniki)
Gdzie może leżeć przyczyna ?
pozdrawiam
konri24
zamiast tego:
  1. $a = trim($_REQUEST['a']);

spróbuj:
  1. switch($_SERVER['REQUEST_METHOD'])
  2. {
  3. case 'GET': $a = trim($_GET['a']); break;
  4. case 'POST': $a = trim($_POST['a']); break;
  5. default: $a = trim($_GET['a']);
  6. }
kempas
Niestety efekt taki sam,

Zauważyłem też iż niechodną mi inne pola które dodawały dane do tabeli,
orginalna tabela jest taka
  1. CREATE TABLE `users` (
  2. `user_id` INT NOT NULL AUTO_INCREMENT ,
  3. `user_login` VARCHAR( 30 ),
  4. `user_haslo` VARCHAR( 30 ),
  5. PRIMARY KEY ( `user_id` )
  6.  
  7. );
  8.  
  9.  

jeżeli dodam poprzez
  1. ALTER TABLE users ADD tekst TEXT
w phpMyAdmin jakąś tabelę to właśnie wtedy przestaje działać opcja dodnia pole do rekordu z php.
Jeżeli usunę ten nowy rekord to chodzi znowu dobrze, co jest grane ?
Zmiana typu rekordu np na varchar nic nie daje.


Armstrong
  1. $id = trim($_GET['id']);
$_POST raczej według formularza

Nie daje żadnych komunikatów ponieważ, warunek:
  1. if($a == 'edit' and !empty($id))

ani
  1. elseif($a == 'save')


nie zostaje spełniony.

Chyba, że sam tworzysz link z ?a=edit&id=1
kempas
Podaje jeszcze raz pliki które to bbsługuję z zawartością tabeli na trzech rekordach ( user_id, user_login, user_haslo )
plik zapytanie.php

  1.  
  2. <?
  3. include("includes/db.php");
  4.  
  5. $wynik = mysql_query("SELECT * FROM `users")
  6. or die('Blad zapytania');
  7. echo "<table cellpadding=\"4\" border=0>";
  8. echo "<tr>";
  9. echo "<td width=\"30\">".id."</td>";
  10. echo "<td width=\"95\">".imie."</td>";
  11. echo "<td width=\"95\">".tekst."</td>";
  12. echo "<td width=\"95\">".email."</td>";
  13.  
  14. echo "</tr>";
  15. echo "</table>";
  16.  
  17. echo "<table cellpadding=\"4\" border=0>";
  18. while($r = mysql_fetch_assoc($wynik)) {
  19.  
  20. echo "<tr>";
  21. echo "<td width=\"30\">".$r['user_id']."</td>";
  22. echo "<td width=\"95\">".$r['imie']."</td>";
  23. echo "<td width=\"95\">".$r['tekst']."</td>";
  24. echo "<td width=\"95\">".$r['email']."</td>";
  25.  
  26. echo "<td>
  27. <a href=\"del_user.php?a=del&id={$r['user_id']}\">Usun wpis</a><br>
  28.  
  29. <a href=\"edit_user.php?a=edit&id={$r['user_id']}\">EDIT</a>
  30.  
  31. </td>";
  32. echo "</tr>";
  33. }
  34. echo "</table>";
  35.  
  36.  
  37.  
  38. ?>
  39.  

plik edit_user.php
  1. <?
  2. include("includes/db.php");
  3. switch($_SERVER['REQUEST_METHOD'])
  4. {
  5. case 'GET': $a = trim($_GET['a']); break;
  6. case 'POST': $a = trim($_POST['a']); break;
  7. default: $a = trim($_GET['a']);
  8. }
  9. $id = trim($_GET['id']);
  10.  
  11. if($a == 'edit' and !empty($id)) {
  12. /* zapytanie do tabeli */
  13. $wynik = mysql_query("SELECT * FROM users WHERE
  14. user_id='$id'")
  15. or die('BĹ?Ä?d zapytania');
  16. /*
  17.   wyĹ?wietlamy wyniki, sprawdzamy,
  18.   czy zapytanie zwrĂłciĹ?o wartoĹ?Ä? wiÄ?kszÄ? od 0
  19.   */
  20. if(mysql_num_rows($wynik) > 0) {
  21. /* odczytujemy zawartoĹ?Ä? wiersza z tabeli */
  22. $r = mysql_fetch_assoc($wynik);
  23. /* wczytujemy dane do formularza */
  24. /*
  25.   w formularz znajdujÄ? siÄ? ukryte pola "a"
  26.   z wartoĹ?ciÄ? "save" i pole "id" z wartoĹ?ciÄ?
  27.   zmiennej id
  28.   */
  29. echo '<form action="zapytanie.php" method="post">
  30. <input type="hidden" name="a" value="save" />
  31.  
  32. <input type="hidden" name="id" value="'.$id.'" />
  33. imiÄ?:<br />
  34. <input type="text" name="imie"
  35. value="'.$r['user_login'].'" /><br />
  36.  
  37. e-mail:<br />
  38. <input type="text" name="email"
  39. value="'.$r['user_haslo'].'" /><br />
  40. <input type="submit" value="popraw" />
  41. </form>';
  42. }
  43. }
  44. elseif($a == 'save') {
  45. /* odbieramy zmienne z formularza */
  46. $id = $_POST['id'];
  47. $imie = trim($_POST['imie']);
  48. $email = trim($_POST['email']);
  49. /* uaktualniamy tabelÄ? test */
  50. mysql_query("UPDATE users SET user_login='$imie',
  51. user_haslo='$email' WHERE user_id='$id'")
  52. or die('BĹ?Ä?d zapytania');
  53. echo 'Dane zostaĹ?y zaktualizowane';
  54. }
  55. ?>
  56.  


Cytat(Armstrong @ 5.01.2010, 21:56:02 ) *
  1. $id = trim($_GET['id']);
$_POST raczej według formularza


Jeżeli dam _POST dane z formularza się niewyświetlają gdy mamy okna w edycji ( po pliknięciu EDIT)


PROBLEM ROZWIĄZANY
błąd był w linii gdzie echo '<form action="zapytanie.php" method="post"> a powinno być edit_user.php

pozdro
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.