Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] sprawdzanie wartośći i zaznaczenie przez checked
Forum PHP.pl > Forum > Przedszkole
!*!
Kod
<input type="radio" name="dno" value="1" /> prywatne<br />
<input type="radio" name="dno" value="0" /> publiczne<br />


Szukając na forum jednak niczego nie znalazłem w tym temacie... zabardzo nie wiem jak sprawdzić które pole jest zaznaczone

Kod
<input type="radio" checked>


tak jest zaznaczone tylko jak to sprawdzić przez baze?
Hazel
Jak przez bazę?!

W pliku php odczytujesz po prostu $_POST['dno'] i wartość tej zmiennej mówi Ci, które pole jest zaznaczone - jeśli to jest pole prywatne, to w Twoim przypadku ta zmienna będzie mieć wartość 1, jeśli zaznaczone zostało pole publiczne, zmienna otrzyma wartość 0. Oczywiście, musisz przed tymi inputami dodać <form method="post" action="jakisplik.php"> i zamknąć znacznik na końcu.
!*!
Nie chodzi mi o przesłanie danych do bazy, tylko odczyt z bazy czy jest 0 lub 1 i pokazanie które pole jest zaznaczone na podstawie danych pobranych z bazy
Hazel
no to pobierasz z bazy, potem stosujesz mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual i odczytujesz na przykład $row['prywatne']:
  1. <?php
  2. echo '<input type="radio" name="dno" value="1"';
  3. if ($row['prywatne'] == 1) echo ' checked';
  4. echo '>';
  5. ?>


Coś w tym rodzaju, to $row['prywatne'] zależy oczywiście od tego, jaką nazwę nadasz zmiennej pobierającej rekord z bazy, i jak się nazywa odpowiednia kolumna w tej bazie.
!*!
hmm coś takiego?

  1. <?php
  2. $zapytanie = "SELECT status_gg, status_tlen, status_jabber FROM prywata WHERE login = '$ids'";
  3. $idzdo = mysql_query($zapytanie) or die(mysql_error());
  4.  
  5. ?>
  6. <form action="ttt.php" method="POST">
  7. <?php
  8. while ($zapytanie = mysql_fetch_array($idzdo)) 
  9. {
  10.  
  11. echo '<input type="radio" name="status_gg" value="1"';
  12. if( (int)$zapytanie['status_gg'] !== 1) { echo ' checked';}
  13. echo '>';
  14.  
  15. echo '<input type="radio" name="status_tlen" value="1"';
  16. if( (int)$zapytanie['status_tlen'] !== 1) { echo ' checked';}
  17. echo '>';
  18.  
  19. echo '<input type="radio" name="status_jabber" value="1"';
  20. if( (int)$zapytanie['status_jabber'] !== 1) { echo ' checked';}
  21. echo '>';
  22.  
  23.  
  24. }
  25.  
  26. ?>
  27. <input type="submit" value="zmien dane">


tylko że nic nie jest wyświetlane
Hazel
No bo widzisz. Jeśli chcesz to tak zrobić, to nie radio tylko checkbox. Pamiętaj, że radio ma tylko jedną możliwą opcję wyboru. A jak zrobisz 3 checkboxy to możesz miec zaznaczone wszystkie, żaden, 1 lub 2, full total wypas. Tutaj zdecydowanie bardziej pasują checkboxy na logikę.
Po drugie to zmień raczej nazwę $zapytanie, bo występuje w dwóch miejscach i jest dość myląca.
Skoro nic nie wyświetla, to zrób echo mysql_num_rows($idzdo) i zobacz, czy w ogóle z bazy są wyniki.
Ale ten submit na końcu strony to chyba jednak wyświetla? Nie za bardzo widzę inną opcję.
!*!
tak submit jest wyświeltany bo znajduje sie poza. Tylko widzisz, checkbox jak sam napisałeś może być zaznaczany kilka razy, radio było dla mnie odpowiednie ponieważ chce aby to wyglądało tak:

Kod
[]prywatne []publiczne


i sprawdzanie z bazy która wartość jest zaznaczona

jeśli prywatna to wyglada to tak

Kod
[x]prywatne []publiczne


je śli publiczna to tak

Kod
[]prywatne [x]publiczne


z checkbox jest o tyle niewygodnie że moge zaznaczyć

Kod
[x]prywatne [x]publiczne


a to już będzie błedne... Ważne aby była wybrana tylko jedna opcja..
Hazel
No to w takim razie zupełnie inaczej.
  1. $zapytanie = "SELECT status_gg, status_tlen, status_jabber FROM prywata WHERE login = '$ids'";
  2. $idzdo = mysql_query($zapytanie) or die(mysql_error());
  3.  
  4. ?>
  5. <form action="ttt.php" method="POST">
  6. <?php
  7. $zapytanie = mysql_fetch_array($idzdo);
  8. $gg['pub'] = '';
  9. $gg['priv'] = '';
  10. if( (int)$zapytanie['status_gg'] !== 1) $gg['pub'] .= ' checked';
  11. else $gg['priv'] .= ' checked';
  12. echo '<input type="radio" name="status_gg" value="1"'.$gg['priv'].'>';
  13. echo '<input type="radio" name="status_gg" value="0"'.$gg['pub'].'>';
  14. echo '<input type="submit" value="zmien dane">';


Analogicznie dla Jabbera i Tlenu. Musisz se dostosować zmienne $gg['priv'] i $gg['pub'], bo nie wiem czy u Ciebie w bazie 1 oznacza publiczny czy prywatny smile.gif
-!*!-
Kod
Fatal error: Cannot use assign-op operators with overloaded objects nor string offsets in /var/www/prv.php on line 14


Kod
if( (int)$zapytanie['status_gg'] !== 1) $gg['pub'] .= ' checked';


to co jest w tym źle?
leniu
Strzelam, ze nie ma takiego operatora logicznego jak "!==", a jedynie "!=".
!*!
sprawdziłem też to jednak bład jest nadal

emm możnaby było jeszcze zrobić to na takiej zasadzie

  1. <?php
  2. $zapytanie = "SELECT status_gg, status_tlen, status_jabber FROM prywata WHERE login = '$ids'";
  3. $idzdo = mysql_query($zapytanie) or die(mysql_error());
  4.  
  5. while ($zapytanie2 = mysql_fetch_array($idzdo)) 
  6. {
  7.  
  8. if ((int)$zapytanie2[status_gg] !== 1) {
  9.  $html[1] = ' checked';
  10. } else {
  11.  $html[0] = ' checked';
  12. }
  13.  
  14. }
  15. ?>
  16.  
  17. <form action="npanel.php?gog=oep" method="POST">
  18.  
  19. gg:<br />
  20. <input type="radio" name="status_gg" value="1" <?=$html[1]?> /> prywatny<br />
  21. <input type="radio" name="status_gg" value="0" <?=$html[0]?>/> publiczny<br />
  22. <br /><br />


jednak tu też coś jest nie tak...
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.