Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zaznaczanie checkboxów na podstawie danych z mysl
Forum PHP.pl > Forum > Przedszkole
ghastblood
Witam,

mam taki problem potrzebuje zaznaczyć checkboxy z konkurencjami w których dany zawodnik bierze udział mam taki kod który wyświetla mi w 3 kolumnach checkboxy z konkurencjami

  1. <?php
  2. require_once "core.php";
  3.  
  4. $q = $_GET['dane'];
  5.  
  6. $wynik= dbquery("SELECT * FROM zawodnik WHERE id_zawodnika = '".$q."'");
  7.  
  8. $r = mysql_fetch_assoc($wynik);
  9. echo '<center><table cellpadding="2">';
  10. echo '<tr>';
  11. echo '<td>Imie:</td>';
  12. echo '<td><input type="textbox" value="'.$r['imie_zawodnika'].'" name="imie"></td>';
  13. echo '</tr><tr>';
  14. echo '<td>Nazwisko:</td>';
  15. echo '<td><input type="textbox" value="'.$r['nazwisko_zawodnika'].'" name="nazwisko"></td>';
  16. echo '</tr><tr>';
  17. echo '<td>Klub:</td>';
  18. echo '<td><input type="textbox" value="'.$r['klub_zawodnika'].'" name="klub"></td>';
  19. echo '</tr><tr>';
  20. echo '<td>Licencja:</td>';
  21. if($r['licencja_zawodnika'] == 0){
  22. echo '<td><input type="checkbox" value="0" name="licencja_zawodnika"></td>';
  23. } else {
  24. echo '<td><input type="checkbox" checked="checked" value="0" name="licencja_zawodnika"></td>';
  25. }
  26. $ilosc_konkurencji = mysql_num_rows($wynik);
  27. $wynik = dbquery("SELECT * FROM konkurencje WHERE status = '1'");
  28.  
  29. echo '<table width="100%" align="center" cellspacing="1" cellpadding="0"><tr>';
  30.  
  31. $i=0;
  32.  
  33. while ($r = mysql_fetch_assoc($wynik)) {
  34. if ($i > 0 && $i % 3 === 0)
  35. echo '</tr><tr>';
  36.  
  37. echo '<td><input type="checkbox" class="textbox" name="konkurencja['.$r['id_konkurencji'].']" value="'.$r['nazwa_konkurencji'].'" > - ' . $r['nazwa_konkurencji'] . '</td>';
  38.  
  39. $i++;
  40. }
  41.  
  42. echo '</table></td></tr></table>';
  43.  
  44. ?>


w tabeli mysql przechowuje id konkurencji w które zawodnik bierze udzial
1 rekord odpowiada za 1 konkurencje czyli np jest

jan kowalski 1
jan kowalski 2

wiec powinno być zaznaczone checkbox z id 1 i checkbox z id 2

jak sie za to zabrać? bo spędziłem nad tym już parę ładnych godzin i nic nie udało mi się zrobić doszedłem do tego ze ze zaznaczało mi np tylko konkurencje o id 1 albo pętla wyświetlała mi setki checkboxów.
kyku
albo zamiast value="nazwakonkurencji" zmien na value="id", i będzie Ci łatwiej to otrzymać albo sprawdź ten kod:
  1. <form action="" method="POST">
  2. <input type="checkbox" name="numer[1]" value="abcd" />
  3. <input type="checkbox" name="numer[5]" value="aaaa" />
  4. <input type="checkbox" name="numer[16]" value="nnnn" />
  5. <input type="checkbox" name="numer[44]" value="3333" />
  6. <input type="checkbox" name="numer[64]" value="1a1a1a1" />
  7. <input type="submit" />
  8. </form>
  9.  
  10. <?
  11. if($_POST){
  12. foreach($_POST['numer'] as $nr => $wartosc){
  13.  
  14. echo "NR: " . $nr . " Wartosc: " . $wartosc . " <br />";
  15.  
  16. }
  17. }
  18. ?>
ghastblood
ten kod wyświetli mi które konkurencje które zostały zaznaczone w formularzu a mi chodzi o zaznaczenie checkboxów przy edycji zawodnika. Biorę edycje zawodnika i wyświetla mi wszystkie konkurencje formie checkbox i te które zostały zaznaczone są zaznaczone odznaczenie powoduje delete z mysql a zaznaczenie Insert do mysql.
kyku
Czyli po prostu musisz sprawdzać czy konkurencje były zaznaczone i w checkboxie dodawać CHECKED="CHECKED"

przykład (użyłem "szybkiego ifa"):
  1. <form action="" method="POST">
  2. <?
  3. while(PETLA){
  4. <input type="checkbox" name="numer['.$Jakies_Id.']" value="'.$Wartosc.'" '.($Jezeli_Jest_W_Bazie?'checked="checked"':'').' />
  5.  
  6. <input type="submit" />
  7. </form>';
  8. }
  9.  
  10. // tutaj zapisywanie do bazy musisz zrobić wszystkich zaznaczonych
  11. if($_POST){
  12. foreach($_POST['numer'] as $nr => $wartosc){
  13.  
  14. echo "NR: " . $nr . " Wartosc: " . $wartosc . " <br />";
  15.  
  16. }
  17. }
  18. ?>
ghastblood
jejku ale ten if działa po wykonaniu formularza a mi chodzi o zaznaczenie checkbox'ow na podstawie bazy danych czyli pobiera dane z mysql

czyli mniej więcej tak

  1. if($r[id_konkurencji] == id_konkurencji_z_checkbox) {
  2. checked
  3. }else{
  4. pusty checkbox
  5. }


Proszę o pomoc
mmmmmmm
  1. $user_id=2;
  2. // uzytkownik, dla ktorego pobieam prawa
  3. $query="SELECT prawo_id FROM _prawa WHERE user_id=$user_id";
  4. $result=mysql_query($query) or die(mysql_error());
  5. if($result)
  6. {
  7. while($wynik[]=mysql_fetch_assoc($result)){}
  8. // zapisuje odczytane pawa do tablicy wynikow
  9. }
  10. $checkboxy='';
  11. $prawa=array(1,2,3,4,5,6);
  12. // wszystkie mozliwe prawa
  13.  
  14. foreach($prawa as $key=>$value)
  15. {
  16. $checkboxy.='<input type="checkbox" name="prawo['.$key.']" value="'.$value.'" ';
  17. if(in_array(array('prawo_id'=>$value),$wynik))$checkboxy.='checked';
  18. // sprawdzenie, czy odczytane pawo ma dany uzytownik, jesli tak, to zaznaczam przy nim 'checked'
  19. $checkboxy.= ' />';
  20. }
  21.  
  22. // wyswietlenie
  23.  
  24. ?>
  25. <html>
  26. <body>
  27. <?php
  28. echo $checkboxy;
  29. ?>
  30. </body>
  31. </html>
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.