Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Update table SQL problem
Forum PHP.pl > Forum > Przedszkole
odys123
Moja baza users SQL wygląda tak:
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id_users | int(11) | NO | PRI | NULL | auto_increment |
| wiek | int(2) | YES | | NULL | |
| nick | varchar(15) | YES | | NULL | |
| imie | varchar(15) | YES | | NULL | |
| id_grupy | int(11) | YES | | 3 | |
| id_ranga | int(11) | YES | | 3 | |
+----------+-------------+------+-----+---------+----------------+

Stworzyłem formularz z trzema polami na wpis. Oto kod opisujący moj formularz:

////////////////////////////////////////////////////////////////////// FORMULARZ////////////////////////////////////////////////////
  1. echo "<table><tr>";
  2. echo "<td>Wpisz nick:<br/><form action='aktualizuj.php' method='POST'>";
  3. echo "<input type='text' name='upusers'>";
  4. echo "</td>";
  5. echo "<td>Wpisz grupe:<br/>";
  6. echo "<input type='text' name='upgrupy'>";
  7. echo "</td>";
  8. echo "<td>Wpisz range:<br/>";
  9. echo "<input type='text' name='upranga'>";
  10. echo "</td>";
  11. echo "<input type='submit' value='AKTUALIZUJ'>";
  12. echo "</form>";
  13. echo "</tr></table>";



Następnie napisałem pliczek aktualizuj.php który pobiera dane z formularza za pomocą upusers,upgrupy,upranga następnie chce aby poprzez nick czy grupa czy range poprzez zapytanie wynika,wynikb,wynikc otrzymac id dla usera,grupy i rangi co z kolei pozwoli mi przypisac kolejno do tabeli users wybrana grupe i range. Oto jego kod:

  1. <body bgcolor=#33ff66></body>
  2. </html>


  1. <?php
  2.  
  3. $connection = @mysql_connect('localhost', 'root', 'pass')
  4.  
  5. or die('Brak połaczenia z serwerem MySQL.<br />Bład: '.mysql_error());
  6.  
  7. echo "<li><b>Udało się połaczyć z serwerem!</b></li><br />";
  8.  
  9. $db = @mysql_select_db('forum', $connection)
  10.  
  11. or die('Nie mogę połaczyć się z baza danych<br />Bład: '.mysql_error());
  12.  
  13. echo "<li><b>Udało się połaczyć z baza dancych!</b></li><br/>";
  14.  
  15. $upusers = $_POST['upusers'];
  16. $upgrupy = $_POST['upgrupy'];
  17. $upranga = $_POST['upranga'];
  18.  
  19. $wynika = @mysql_query("select id_users from users where nick='$upusers'")
  20. or die('Błąd zapytania lub zly nick');
  21.  
  22. $wynikb = @mysql_query("select id_grupy from grupy where grupa='$upgrupy'")
  23. or die('Błąd zapytania lub zla grupa');
  24.  
  25. $wynikc = @mysql_query("select id_ranga from ranga where ranga='$upranga'")
  26. or die('Błąd zapytania lub zla ranga');
  27.  
  28.  
  29. if ($upusers and $upgrupy and $upranga){
  30. $ins = @mysql_query("UPDATE users SET id_grupy='{$wynikb['id_grupy']}',id_ranga='{$wynikc['id_ranga']}' WHERE id_users='{$wynika['id_users']}'");
  31.  
  32. if($ins){ echo "<b>Aktualizacja danych zakonczona powodzeniem</b>";
  33. }
  34. else echo "<font color='red'>Blad nie zaktualizowano danych</font>";
  35. }
  36. else echo "BLAD!!! Wypełnij wszystkie pola 'nick', 'grupa', 'ranga' w formularzu";
  37. mysql_close($connection);
  38. ?>


Formularz ładnie łączy się z bazą ale nie aktualizuje jej sad.gif sad.gif Czy moz ktoś mi podpoweidziec jak zrobic aby zupdatował baze?questionmark.gif?
Dla ułatwienia podaje cały układ database:
Spawnm
Proszę używać odpowiednich tagów , dla kodu php jest [php ] dla html [html ] .
odys123
Poprawiłem. Nikt nie wie co nie tak robie?
Moze jakieś pomysły jak zrobic aby zaktualizowała sie baza:(
zend
Usuń małpy z kodu, włącz wyświetlanie błędów, poczytaj jeszcze trochę o mysql_query co zwraca i kiedy, przed wykonaniem zapytania wyświetlaj je (nie pomijając if'ow), a potem wykonaj po kolei w phpMyAdminie, jak dalej nie dojdziesz to dopiero pisz
odys123
Małe pytanko jaka jest róznica w poleceniu gdy jest małpa?
@Edit zapytanie sie zgadza wiec cos musze miec pokopane ze zwracaniem wartości $wynik ;/
  1. UPDATE users SET id_grupy =1,
  2. id_ranga =2 WHERE id_users =1;

To zapytanie działa jeśli chodzi o update.
zend
Małpa wygasza błędy i przeważnie świadczy o tym że kod jest źle napisany. Kod nie działa tak jak chcesz, bo nie sprawdzasz czy znaleziono jakieś rekordy, tylko czy zapytanie wykonało się poprawnie nawet jak nie zwróciło danych mysql_fetch_row
  1. $okb = false;
  2. if($rowb = mysql_fetch_row($wynikb));
  3. $okb = true;
  4.  
  5. //ten kod też raczej nie ma nic związanego z wcześniejszymi selectami
  6. if ($upusers and $upgrupy and $upranga)


Poczytaj o zabezpieczeniach.
odys123
  1. if ($upusers and $upgrupy and $upranga)

ten kodzik zabezpiecza mi forme przed przypadkiem kiedy nie wpisze sie wszystkich danych. Jesli te 3 argumenty nie beda spełnione to nie uploadnie.
zend
No fajnie, ale jak nie wpisze danych to nie wkonają się selecty tzn wywoła to error, co łapiesz w zapytaniu co nie jest dobrym rozwiązaniem. Wybrałeś dane funkcją którą Ci podałem?
odys123
Tak mysql_fetch_row smile.gif
zend
Działa tak jak chciałeś? Pokaż kod
odys123
Działa Wszystko smile.gif tylko zmodyfikowałem troche ten kod bo mi nie pasował gdyż upadte odbywa sie dla jednej tabeli przy pobraniu danych z trzech tabel smile.gif

  1. <?php
  2.  
  3. $connection = mysql_connect('localhost', 'rootek', 'jakies haslo')
  4.  
  5. or die('Brak połaczenia z serwerem MySQL.<br />Bład: '.mysql_error());
  6.  
  7. echo "<li><b>Udało się połaczyć z serwerem!</b></li><br />";
  8.  
  9. $db = mysql_select_db('forum', $connection)
  10.  
  11. or die('Nie mogę połaczyć się z baza danych<br />Bład: '.mysql_error());
  12.  
  13. echo "<li><b>Udało się połaczyć z baza dancych!</b></li><br/>";
  14. ///////////////////////////////////////////////////////////////pobieranie danych z form//////////////////////////////////////
  15. $upusers = $_POST['upusers'];
  16. $upgrupy = $_POST['upgrupy'];
  17. $upranga = $_POST['upranga'];
  18.  
  19. /////////////////////////////////////////////////////////////wyodrebnianie id na podstawie formularza///////////////////////
  20.  
  21. $wynika = mysql_query("select id_users from users where nick='$upusers'")
  22. or die('Błąd zapytania lub zly nick');
  23.  
  24. $wynikb = mysql_query("select id_grupy from grupy where grupa='$upgrupy'")
  25. or die('Błąd zapytania lub zla grupa');
  26.  
  27. $wynikc = mysql_query("select id_ranga from ranga where ranga='$upranga'")
  28. or die('Błąd zapytania lub zla ranga');
  29.  
  30.  
  31. //////////////////////////////////////////////tabele sprawdzajace///////////////////////////////////
  32. /* 1 TABELA Z ALL users ///////////////////////////////////////////
  33. */
  34. if(mysql_num_rows($wynika) > 0) {
  35. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  36. echo "<table cellpadding=\"2\" border=1 bgcolor='#33ccff'>";
  37. while($r = mysql_fetch_assoc($wynika)) {
  38. echo "<tr>";
  39. echo "<td>".$r['id_users']."</td>";
  40. echo "<td>
  41. <a href=\"delUsers.php?a=del&amp;id={$r['id_users']}\">DELETE</a>
  42. </td>";
  43. $id_us=$r['id_users'] ; ////////// przydzielanie na podstawie tabeli users id_users do id_us dla wybranego nicku//////////////
  44. echo "</tr>";
  45. }
  46. echo "</table><br/>";
  47. }
  48. ///////////////////////////////////////////////////////////////////////////////////////////////
  49. /* 2 TABELA Z ALL grupy ///////////////////////////////////////////
  50. */
  51. if(mysql_num_rows($wynikb) > 0) {
  52. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  53. echo "<table cellpadding=\"2\"border=1 bgcolor='#33ccff'>";
  54. while($r = mysql_fetch_assoc($wynikb)) {
  55. echo "<tr>";
  56. echo "<td>".$r['id_grupy']."</td>";
  57. echo "<td>
  58. <a href=\"delUsers.php?a=del&amp;id={$r['id_users']}\">DELETE</a>
  59. </td>";
  60. $id_gr=$r['id_grupy']; ////////////////////////jak wyzej dla grupy//////////////////////////
  61. echo "</tr>";
  62. }
  63. echo "</table><br/>";
  64. }
  65.  
  66. ///////////////////////////////////////////////////////////////////////////////////////////////////
  67. ///////////////////////////////////////////////////////////////////////////////////////////////
  68. /* 3 TABELA Z ALL rangi ///////////////////////////////////////////
  69. */
  70. if(mysql_num_rows($wynikc) > 0) {
  71. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  72. echo "<table cellpadding=\"2\"border=1 bgcolor='#33ccff'>";
  73. while($r = mysql_fetch_assoc($wynikc)) {
  74. echo "<tr>";
  75. echo "<td>".$r['id_ranga']."</td>";
  76. echo "<td>
  77. <a href=\"delUsers.php?a=del&amp;id={$r['id_users']}\">DELETE</a>
  78. </td>";
  79. $id_ra=$r['id_ranga']; //////////////////////ranga//////////////////////////
  80. echo "</tr>";
  81. }
  82. echo "</table><br/>";
  83. }
  84.  
  85. ///////////////////////////////////////////////////////////////////////////////////////////////////
  86.  
  87.  
  88.  
  89. if ($upusers and $upgrupy and $upranga){
  90. $dodaj ="UPDATE users SET id_grupy='$id_gr',id_ranga='$id_ra' WHERE id_users='$id_us'"; /////////////////update na podstawie id_gr,id_ra,id_us///
  91. $results = mysql_query($dodaj) or die (mysql_error());
  92.  
  93. if($dodaj){ echo "<b>Aktualizacja danych zakonczona powodzeniem</b>";
  94. }
  95. else echo "<font color='red'>Blad nie zaktualizowano danych</font>";
  96. }
  97. else echo "<font color='red'>BLAD!!! Wypełnij wszystkie pola 'nick', 'grupa', 'ranga' w formularzu</font>";
  98. mysql_close($connection);
  99. ?>


THX zend for help exclamation.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.