Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]My SQL UPDATE
Forum PHP.pl > Forum > Przedszkole
marcinmil

Witam. Potrzebuję pomocy.

Mam taki projekt na zalicznie. Stworzyc baze danych a w niej tabele studentów. pola: id, imie, nazwisko, grupa , rok, zalicznie. //zrobiłem

W tabeli uzupełnic za pomocą polecenia INSERT wszystkie kolumny oprócz ostatniej. //zrobiłem

Wyswietlic dane na ekran za pomocą SELECT do kazdego studenta dodac checkbox i submit zaliczam; // zrobiłem za pomoca petli while ($row = mysqli_fetch_array($data)) w tej petli jest tez formularz z input type checkbox name = " check" value = "tak" i przyciskiem submit name submit value zalicz tak ze kazdy student ma swój checkbox i swój submit ( tak ma niby byc)

Za pomocą instrukcji UPDATE zaktualizowac pole zaliczenie w tabeli przypisując studentowi z zaliczeniem 1. studenci nie zaliczeni mają wartosc null.

I mój problem jest taki, ze jesli umieszcze ten kod co jest ponizej w petli to niezaleznie który chceckbox zaznacze i wcisne submit baza uzupełnia pole zaliczenie wartością '1' dla wszystkich studentow a musi tylko temu jednemu. a jak kod umieszczam pod petlą to nie uzupełnia nic, a jak na początku skryptu to nie zna zmiennej row bo ona pojawia sie dopiero w petli .

if(isset ($_POST['submit'])) // gdy nacisnieto przycisk submit
{
$zm=$row['student_id']; // przypisuje zmiennej wartosc id studenta bo zapytanie sql zapis $row['student_id'] traktuje jako błąd.
if(isset($_POST['tak'])) // jesli zaznaczono checkbox to:
{

$query1 = "UPDATE studenci SET zaliczenie = '1' WHERE student_id = '$zm' ";
mysqli_query($dbc, $query1) or die ('Error');
echo '<p>'. $zm .'</p>';
}
}

Jak to zrobic zeby uzupełniło pole tylko wybranemu studentowi a nie wszystkim moze źle przekazuje ze chceckbox jest check.
Przepraszam za błędy
dziekuje
jacobson
dodaj np jakies pole hidden ktore bedzie mialo name "student_id" a value - id uzytkownika. I przy wysylaniu daj $zm = $_POST['student_id'];
b4rt3kk
Po pierwsze, checkboxy jako tablica:

  1. <input type="checkbox" name="id_studenta[]" value="<?php echo $id; ?>"/>


teraz odczytujesz tablice w PHP, bedzie zawierala id studentow przy ktorych zaznaczono checkbox:

  1. foreach ( $_POST['id_studenta'] as $value ) {
  2. $query = "UPDATE tabela SET costam='costam' WHERE id='$value'";
  3. }

SmokAnalog
Tak jak kolega wyżej pisze, checkboxy jako tablica. Od siebie tylko dodam, że bardziej elegancko i wydajnie można pojedynczym zapytaniem:
  1. mysql_query('UPDATE tabela SET zaliczenie = 1 WHERE id_studenta IN ('.implode(', ', $_POST['id_studenta']).')');
  2. mysql_query('UPDATE tabela SET zaliczenie = NULL WHERE id_studenta NOT IN ('.implode(', ', $_POST['id_studenta']).')');

Przed wykonaniem tych zapytań sprawdź czy $_POST['id_studenta'] w ogóle istnieje, bo jeśli użytkownik nie zaznaczył żadnego checkboxa, to $_POST['id_studenta'] NIE będzie zawierała pustej tablicy, ale w ogóle nie będzie zdefiniowana. Poza tym ze względów bezpieczeństwa warto przed wykonaniem zapytań przefiltrować identyfikatory:
  1. foreach($_POST['id_studenta'] as $key => $value) {
  2. $_POST['id_studenta'][$key] = (int) $value;
  3. }

Nie jest to najbardziej elegancki sposób. Lepiej wrzucić te przefiltrowane identyfikatory do osobnej tablicy i tę nową tablicę użyć w zapytaniach.
marcinmil
  1. <?php
  2.  
  3.  
  4. $query = "SELECT * FROM studenci ORDER BY id DESC";
  5. $data = mysqli_query($dbc, $query);
  6.  
  7. while ($row = mysqli_fetch_array($data))
  8. {
  9.  
  10. echo '<div id="register" class="corners">';
  11. echo '<p>id: '. $row['student_id'] .'</p>';
  12. echo '<p>imię: '. $row['student_imie'] .'</p>';
  13. echo '<p>nazwisko: '. $row['student_nazwisko'] .'</p>';
  14. echo '<p>grupa: '.$row['student_grupa'] .'</p>';
  15.  
  16. echo '<form id="form" action="'.$_SERVER['PHP_SELF'].'" method="post">';
  17. echo '<div id ="aproved">';
  18. echo '<input type="checkbox" id="aprove" name="id_studenta[]" value="'.$id.'" class="check"/>';
  19. echo '<input type="submit" id="submit" name="submit" value="aproved" class="check-button"/>';
  20. echo '</div>';
  21. echo '</form>';
  22.  
  23. if(isset ($_POST['submit']))
  24. {
  25. if(isset ($_POST['id_studenta']))
  26. {
  27. foreach ( $_POST['id_studenta'] as $value )
  28. {
  29. $query1 = "UPDATE studenci SET zaliczenie = '1' WHERE id='$value'";
  30. mysqli_query($dbc, $query1) or die ('Error');
  31. }
  32. }
  33. }
  34.  
  35. echo '</div>';
  36. } else {echo '</div>';}
  37.  
  38.  
  39. } else {echo '</div>';}
  40.  
  41. }
  42.  
  43.  
  44. mysqli_close($dbc);
  45. ?>
  46.  


Postanowiłem umiescic duzą czesc tego skryptu bo moze mi pomozecie bardziej. Zrobiłem jak podpowiadał mi b4rt3kk ale nic z tego. Chcociaz rzuccie okiem
marcinmil
dzieki wszystkim za porady znalazłem błedy i poradziłem juz sobie z tym
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.