Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] Problem przy dodawniu do bazy
aga323
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

Ostrzeżenie: (0%)
-----


Witam. Otóż mój problem wygląda następująco: mam zrobiony dziennik internetowy z ocenami w bazie tabele userzy, oceny itd. w tabeli oceny mam kolumny id_user, id_przedmiot, semestr i ocena. I mam problem przy kolumnie semestr. Gdy przez skrypt dodaje ocenki na pierwszy semestr wszystko ładnie działa bez zastrzeżeń, ale gdy dodaję na drugi semestr to wcześniej mi dodawało na oba semestry tą ocenę, a teraz to mi nawet w ogóle nie dodaje... proszę o pomoc
Oto mój kod:
  1. <?
  2.  
  3. include ("connect.php");
  4. //------------------
  5. // Tablica post
  6. //---------------
  7. $ilosc = count($_POST);
  8. $powtuzen = $ilosc /2;
  9. //--------------------
  10. $id_przedmiot = $_POST['przedmiot'];
  11. $query = "SELECT id FROM `users`";
  12. $result = mysql_query ($query);
  13. for ($i=$ilosc; $i>=1; $i--)
  14. {
  15. $t = 'T'.$i;
  16. $t2 = 'T2'.$i;
  17. $b = $_POST[$t];
  18. $b2 = $_POST[$t2];
  19. $u = 'U'.$i;
  20. $u2 = 'U2'.$i;
  21. $user = $_POST[$u];
  22. $user2 = $_POST[$u2];
  23. $semestr = 1;
  24. $semestr2 = 2;
  25. if(!empty($b))
  26. {
  27. $a = explode(',', $b);
  28. $cos = count($a);
  29. for ($j=0; $j<$cos; $j++)
  30. {
  31. $ocena = $a[$j];
  32. if(!empty($ocena))
  33. {
  34. //-------------------------
  35. //  Zapytanie
  36. //-------------------------
  37. $query = "INSERT INTO `oceny` (id_user, id_przedmiot, semestr, ocena) VALUES ('$user', '$id_przedmiot', '1', '$ocena')" or die(mysql_error());
  38. $result = mysql_query ($query);
  39. //-------------------------
  40. }
  41. }
  42. }
  43.  
  44.  
  45.  
  46. else if(!empty($b2))
  47. {
  48. $a = explode(',', $b2);
  49. $cos = count($a);
  50. for ($k=0; $k<$cos; $k++)
  51. {
  52. $ocena2 = $a[$k];
  53. if(!empty($ocena2))
  54. {
  55. //-------------------------
  56. //  Zapytanie
  57. //-------------------------
  58. $query = "INSERT INTO `oceny` (id_user, id_przedmiot, semestr, ocena) VALUES ('$user2', '$id_przedmiot', '2', '$ocena2')" or die(mysql_error()) ;
  59. $result = mysql_query ($query);
  60.  
  61.  
  62. //-------------------------
  63. }
  64. }
  65. }
  66. }
  67. header( 'Location: ses.php?co=lista_p' );
  68. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


No to tak. Przede wszystkim zapis
  1. <?php
  2. $query = "INSERT INTO `oceny` (id_user, id_przedmiot, semestr, ocena) VALUES ('$user2', '$id_przedmiot', '2', '$ocena2')" or die(mysql_error()) ;
  3. ?>

bije po oczach, bo błąd MySQL nie może wyskoczyć, dopóki w ogóle nie ma zapytania do bazy. W tym wierszu przypisujesz do zmiennej $query łańcuch znaków, będący nawiasem mówiąc zapytaniem do bazy. Nic się tutaj nie dzieje z MySQL. Dopiero wiersz kolejny, to jest $result = mysql_query($query) wykonuje zapytanie i dopiero on ma prawo wygenerować błąd MySQL. Poprawnym zapisem jest zatem:
  1. <?php
  2. $query = "INSERT INTO `oceny` (id_user, id_przedmiot, semestr, ocena) VALUES ('$user2', '$id_przedmiot', '2', '$ocena2')";
  3. $result = mysql_query($query) or die(mysql_error());
  4. ?>

Teraz funkcja mysql_error() ma szansę zwrócić cokolwiek. No i nie ma sensu zagłębiac się w kod, dopóki nie uruchomisz tego co jest i nie zobaczysz, co takiego wypluwa zapytanie do bazy. Na oko innych poważnych błędów nie widać, dlatego najlepiej będzie, jak zobaczysz przy odpowiednim wywołaniu mysql_error(), co jest nie tak.
Pozdrawiam.

Ten post edytował Hazel 28.12.2007, 15:02:18
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 21:58