Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Aktualizacja danych w bazie poprzez formularz php
Forum PHP.pl > Forum > Przedszkole
dopal
Witam,

Mam stworzone dwie tabele ( training i worker_training ). W tabeli training mam załozone szkolenia, w w tabeli drugiej uzytkowników przypisanych do tego szkolenia.
Obecnie stworzyłem formularz, w którym jest mozliwość wybrania czy osoba zaliczyła szkolenie czy też nie ( wcześniejsza część skryptu działa mi bez problemów )

Oto część do formularzu:
  1. <table>
  2.  
  3. <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
  4.  
  5. <tr><td>Data:</td><td><input type="text" name="date" size="15" value="<?php echo $set['date']; ?>" readonly="readonly"/></td></tr>
  6.  
  7. <tr><td>Temat:</td><td><input type="text" name="title" size="60" value="<?php echo $set['title']; ?>" readonly="readonly"/></td></tr>
  8.  
  9. <tr><td>Ilość godzin:</td><td><input type="text" name="time" size="10" value="<?php echo $set['time']; ?>" readonly="readonly"/></td></tr>
  10.  
  11. <tr><td>Prowadzący:</td><td><input type="text" name="leader" size="20" value="<?php echo $set['leader']; ?>" readonly="readonly"/></td></tr>
  12.  
  13. <tr><td>Miasto:</td><td><input type="text" name="city" size="20" value="<?php echo $set['city']; ?>" readonly="readonly"/></td></tr>
  14.  
  15. <tr><td>Rodzaj szkolenia:</td><td><input type="text" name="type" size="35" value="<?php echo $set['type']; ?>" readonly="readonly"/></td></tr>
  16.  
  17. </table>
  18. <?php
  19. $number = 1;
  20. ?>
  21. <table border="0" >
  22. <h3>Pracownicy - ocena</h3>
  23.  
  24. <?php
  25. $sql = 'SELECT * FROM `worker_training` WHERE `training_id` = '.$set['id'].' ORDER BY worker asc';
  26. //w tym zapytaniu pobieram sobie pracowników, którzy zostali przydzieleni do danego szkolenia
  27.  
  28. $res = mysql_query($sql) or die(mysql_error());
  29. $i = 0;
  30. $is = false;
  31. while ($row = mysql_fetch_array($res)){
  32. if ($i % $number == 0){
  33. echo '<tr>';
  34. $is = true;
  35. }
  36. echo '<td bgcolor="#E0FFFF">'.$row['worker'].'</td><td>&nbsp;&nbsp; <b>Ocena:</b> Pozytywna <input type="checkbox" name="ocena" value="Pozytywna" /> Negatywna <input type="checkbox" name="ocena" value="Negatywna" /> <br /></td>';
  37.  
  38. //wynikiem jest lista osób,które były na danym szkoleniu. Przy każdej osobie jest ocena szkolenia
  39. //pozytywna lub negatywna, gdzie trzeba wybrac odpowiedni checkbox
  40.  
  41. if ($i % $number == $number -1){
  42. echo '</tr>';
  43. $is = false;
  44. }
  45. $i++;
  46. }
  47. if ($is)
  48. echo '</tr>';
  49. ?>
  50. </table>
  51. <br>&nbsp;
  52. <table>
  53. <tr><td></td><td><input type="submit" name="ocenaszkol" style="background-color:yellow" value="Oceń szkolenie"/></td></tr>
  54. </form>
  55. </table>


I teraz mam problem, jak po wybraniu odpowiedniej oceny prz danej osobie zaaktualizować dane w bazie.
Przerabiałem różne warianty, ale żaden nie działa.
Obecnie mam coś takiego:( ale źle to jest ) - to jest dalsza część kodu

  1. <?php }
  2.  
  3. if( isset( $_POST['ocenaszkol'])){
  4.  
  5. if( !empty( $_POST['ocena']) ){
  6.  
  7. foreach( $_POST['ocena'] as $ocena){
  8.  
  9. $wstaw="UPDATE `worker_training` SET `ocena`='po' WHERE `id`='2299'" ;
  10. //to tylko testowe na sztywno dane
  11. }
  12. }
  13. }
  14. ?>

Jak to prawidłowo zrobić?

Nie znajdzie się nikt do pomocy?
amii
To zapytanie z liniki 9 wysyłasz do serwera SQL ?
Po za tym jeśli iterujesz przez zmienną ocena to definuj to tak: name="ocena[]" tu masz info: http://www.plus2net.com/php_tutorial/array_checkbox.php
maniek.kos
Hej,
Tak jak wyżej, nie widać połączenia. Swoją droga jak ciągle coś powtarzamy to warto to wsadzić w jakieś funkcje.

np do bazy danych:

  1. function query($Query,$Num = false) {
  2. if($Num == true) {
  3. $Array[0] = mysql_query($Query);
  4. $Array[1] = mysql_num_rows($Array[0]);
  5. return $Array;
  6.  
  7.  
  8. }
  9. else {
  10. return mysql_query($Query);
  11. }
  12. }
  13.  
  14. function getResult($Q) {
  15. return mysql_fetch_assoc($Q);
  16. }


I wtedy w twoim kodzie możesz zrobić:

  1. query("UPDATE `worker_training` SET `ocena`='po' WHERE `id`='2299'",true);
dopal
Cytat(amii @ 4.01.2013, 23:00:22 ) *
To zapytanie z liniki 9 wysyłasz do serwera SQL ?
Po za tym jeśli iterujesz przez zmienną ocena to definuj to tak: name="ocena[]" tu masz info: http://www.plus2net.com/php_tutorial/array_checkbox.php

To zapytanie z 9 lini to przykład, gdzie już na sztywno wpisywałem dane do przesłania, generalnie w miejscu oceny powinna być zmienna z oceny danego pracownika, natomiast w id, zmienna dotycząca konkretnej osoby.
czyli zapis powinien być tak?
  1. <?php
  2. echo '<td bgcolor="#E0FFFF">'.$row['worker'].'</td><td>&nbsp;&nbsp; <b>Ocena:</b> Pozytywna <input type="checkbox" name="ocena[]" value="Pozytywna" /> Negatywna <input type="checkbox" name="ocena[]" value="Negatywna" /> <br /></td>';
  3.  
  4. ?>


Cytat(maniek.kos @ 4.01.2013, 23:07:43 ) *
Hej,
Tak jak wyżej, nie widać połączenia. Swoją droga jak ciągle coś powtarzamy to warto to wsadzić w jakieś funkcje.

np do bazy danych:

Mógłbyś to bardziej wyjaśnić, bo nie do końca rozumiem ten kod co podałeś.
maniek.kos
Cytat(dopal @ 4.01.2013, 23:21:31 ) *
Mógłbyś to bardziej wyjaśnić, bo nie do końca rozumiem ten kod co podałeś.



  1. function query($Query,$Num = false) {
  2. if($Num == true) {
  3. $Array[0] = mysql_query($Query);
  4. $Array[1] = mysql_num_rows($Array[0]);
  5. return $Array;
  6.  
  7.  
  8. }
  9. else {
  10. return mysql_query($Query);
  11. }
  12. }
  13.  
  14. function getResult($Q) {
  15. return mysql_fetch_assoc($Q);
  16. }


To jest funkcja, która ułatwia życie : Nie musisz za każdym razem pisać mysql_fetch_array, fetch_array itp..
Jeżeli chcesz użyć jej tylko do odczytu danych z bazy to używasz:
  1. $sql = query("ZAPYTANIE");
  2. $read = getResult($sql);
  3. echo $read['pole'];


lub

  1. $sql = query("ZAPYTANIE",true);
  2. $read = getResult($sql[0]);
  3. echo $read['pole'];
  4. // ile wynikow
  5. echo $sql[1];
dopal
Poradziłem sobie już
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.