Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Problem przy dodawniu do bazy
Forum PHP.pl > Forum > Przedszkole
aga323
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. ?>
Garrappachc
A ten semestr to jaki typ? Tinyint, int, char...
Hazel
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.
aga323
Zrobiłam tak jak mówiłeś Hazel, ale nadal nie wywala mi żadnego błędu a ocen po prostu nie dodaje blinksmiley.gif
Może błąd leży w pliku, który przekazuje wcześniej te dane... W razie co podam ten wcześniejszy:
  1. <?
  2.  
  3. include ("connect.php");
  4. $id = $_GET['id'];
  5. $klasa = $_SESSION['klasa'];
  6. //-------------------------
  7. //  Zapytanie
  8. //-------------------------
  9. $przedmioty = mysql_query("SELECT * FROM przedmioty WHERE id=$id");
  10. $row = mysql_fetch_assoc($przedmioty);
  11. //-------------------------
  12.  
  13. echo '<form name="ocen" action="up.php" method="POST">';
  14. echo '<input type="hidden" name="przedmiot" value="'.$id.'" />';
  15. echo 'Przedmiot: ';
  16. echo $row['Nazwa'];
  17.  
  18. echo '<table border="1"><tr><td>Przedmioty</td><td>Semestr 1</td><td>Semestr 2</td></tr>';
  19.  
  20.  
  21. //-------------------------
  22. //  Zapytanie
  23. //-------------------------
  24.  
  25. $query = "SELECT * FROM `users` WHERE klasa = '$klasa' AND ranga ='0'";
  26. $result = mysql_query ($query);
  27. $uczen = $wynik['id'];
  28. $klasa = $_GET['klasa'];
  29. //-------------------------
  30.  
  31. while($wynik=mysql_fetch_array($result))
  32. {
  33.  
  34. if($wynik['id'] != 1)
  35. {
  36.  
  37. echo "\n";
  38. echo '<tr>';
  39. echo '<td>';
  40.  
  41. echo $wynik['imie']. ' ' .$wynik['nazwisko'];
  42. echo '</td>';
  43. echo '<td>';
  44. $uczen = $wynik['id'];
  45. $klasa = $_GET['klasa'];
  46. //-------------------------
  47. //  Zapytanie
  48. //-------------------------
  49. $oceny = mysql_query("SELECT * FROM `oceny` WHERE id_user=$uczen AND id_przedmiot=$id AND semestr
    =1"
    );
  50. $ilosc = mysql_num_rows($oceny);
  51. //-------------------------
  52.  
  53. if($ilosc != 0)
  54. {
  55.  
  56. while($wiersz = mysql_fetch_assoc($oceny))
  57. {
  58.  
  59. echo $wiersz['ocena']. ', ';
  60. }
  61. echo '<br>';
  62. echo '<input type="hidden" name="U'.$cos.'" value="' .$wynik['id']. '" />';
  63.  
  64. echo "\n";
  65. echo '<input type="text" name="T' .$cos. '" value="" />';
  66. }
  67. else
  68. {
  69. echo 'Brak ocen.';
  70.  
  71. echo "\n";
  72. echo '<input type="hidden" name="U'.$cos.'" value="' .$wynik['id']. '" />';
  73. echo '<br>';
  74.  
  75. echo "\n";
  76. echo '<input type="text" name="T' .$cos. '" value="" />';
  77.  
  78. echo "\n";
  79. }
  80. $cos++;
  81. echo '</td>';
  82. echo '<td>';
  83. $uczen = $wynik['id'];
  84. $klasa = $_GET['klasa'];
  85. $cos2=1;
  86. //-------------------------
  87. //  Zapytanie
  88. //-------------------------
  89. $oceny2 = mysql_query("SELECT * FROM `oceny` WHERE id_user=$uczen AND id_przedmiot=$id AND semestr
    =2"
    );
  90. $ilosc2 = mysql_num_rows($oceny2);
  91. //-------------------------
  92.  
  93. if($ilosc2 != 0)
  94. {
  95.  
  96. while($wiersz2 = mysql_fetch_assoc($oceny2))
  97. {
  98.  
  99. echo $wiersz2['ocena']. ', ';
  100. }
  101. echo '<br>';
  102. echo '<input type="hidden" name="U2'.$cos2.'" value="' .$wynik['id']. '" />';
  103.  
  104.  echo "\n";
  105. echo '<input type="text" name="T2' .$cos2. '" value="" />';
  106. }
  107. else
  108. {
  109. echo 'Brak ocen.';
  110.  
  111. echo "\n";
  112. echo '<input type="hidden" name="U2'.$cos2.'" value="' .$wynik['id']. '" />';
  113. echo '<br>';
  114.  
  115. echo "\n";
  116. echo '<input type="text" name="T2' .$cos2. '" value="" />';
  117.  
  118. echo "\n";
  119. }
  120.  $cos++;
  121. echo '</td>';
  122. echo '</tr>';
  123.  
  124. echo "\n";
  125. }
  126. }
  127. echo '</table>';
  128. echo '<input type="submit" value="wyslij" />';
  129. echo '</form>';
  130. ?>


Jakby co to typ tego semestru to tinyint...

Pomimo tego, że nie wywala mi żadnego błędu doszłam do fragmentu, w którym może siedzieć przyczyna. Zaraz podam ten kawałek kodu tylko wyjasnię o co mi chodzi. Więc, gdy w drugim semestrze mam zmienną $cos to wtedy dodaje mi ocenę na pierwszy i drugi semestr, a gdy ta zmienna zmienie na $cos2 to wtedy mi w ogóle nie dodaje nigdzie oceny :/ to teraz podaje kod:
  1. <?php
  2. $cos=1;
  3. $oceny2 = mysql_query("SELECT * FROM `oceny` WHERE id_user=$uczen AND id_przedmiot=$id AND semestr
    =2"
    );
  4. $ilosc2 = mysql_num_rows($oceny2);
  5. //-------------------------
  6.  
  7. if($ilosc2 != 0)
  8. {
  9.  
  10. while($wiersz2 = mysql_fetch_assoc($oceny2))
  11. {
  12.  
  13. echo $wiersz2['ocena']. ', ';
  14. }
  15. echo '<br>';
  16. echo '<input type="hidden" name="U2'.$cos.'" value="' .$wynik['id']. '" />';
  17.  
  18.  echo "\n";
  19. echo '<input type="text" name="T2' .$cos. '" value="" />';
  20. }
  21. else
  22. {
  23. echo 'Brak ocen.';
  24.  
  25. echo "\n";
  26. echo '<input type="hidden" name="U2'.$cos.'" value="' .$wynik['id']. '" />';
  27. echo '<br>';
  28.  
  29. echo "\n";
  30. echo '<input type="text" name="T2' .$cos. '" value="" />';
  31.  
  32. echo "\n";
  33. }
  34.  $cos++;
  35. echo '</td>';
  36. echo '</tr>';
  37.  
  38. echo "\n";
  39. }
  40. ?>

Jakby co to w pierwszym semestrze jest zmienna $cos zrobiona i tam wszystko działa.
Na prawdę proszę o pomoc, bo zależy mi na tym, żeby to szybko zrobić.
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.