Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Zapis do bazy ustawienia Radiobuttona
Forum PHP.pl > Forum > Przedszkole
rja
Witam,
Mam bazę danych z listą stron i chciałbym za pomocą formularza ustawiać która strona ma się wyświetlać jako główna. W bazie danych domyślnie dla pola "strona_g" jest zero. Po zaznaczeniu w formularzu chciałbym przypisać tej stronie 1.
Nie wiem do końca jak mam przesyłać tę tablicę.
  1. <?php
  2. if (isset($_GET["akcja"])=='ustaw'){
  3.  
  4.  //tu są jakieś błędy
  5.  
  6. for($i=0;$i<count($_POST['sg']);$i++) {
  7. $id = $_POST['sg'][$i];
  8. if ($_POST['sg']=checked){
  9.  
  10. $g="1";
  11. }else{
  12. $g="0";
  13. }
  14. mysql_query("UPDATE menu SET strona_g='$g' WHERE id='$id'");
  15. }
  16.  
  17. }
  18. ?>
  19. <form action="?akcja=ustaw" method="post" enctype="multipart/form-data" name="form3">
  20. <table width="773" border="0" cellspacing="2" cellpadding="1">
  21. <tr bgcolor="#FF3300" >
  22. <td height="24" colspan="3" bgcolor="#99CC00">:: Istniejące pozycje menu</td>
  23. </tr>
  24. <tr>
  25. <td width="15%" height="20" bgcolor="#BCFE63"><div align="center" class="div_bold">Lp.</div></td>
  26. <td width="70%" height="20" bgcolor="#BCFE63"><div align="center" class="div_bold">Nazwa strony</div></td>
  27. <td width="15%" height="20" bgcolor="#BCFE63" align="center" class="text9">Ustaw stronę główną</td>
  28. </tr>
  29. <?php
  30.  
  31.  
  32. $sql="SELECT * FROM menu order by id";
  33. $wynik=mysql_query($sql,$db);
  34.  
  35. if (mysql_num_rows($wynik)==0){
  36. ?>
  37. <table border="0" width="100%" cellspacing="2" cellpadding="0">
  38. <tr>
  39. <td width="100%" bgcolor="#FFF6ED" align="center">Brak pozycji.</td>
  40. </tr>
  41. </table><br>
  42. <?php
  43. }else{
  44.  
  45. $i=1;
  46. while($dane = mysql_fetch_array($wynik)) {
  47.  
  48. if ($dane["strona_g"]="1"){
  49. $znak="checked";
  50. }
  51.  
  52. ?>
  53. <tr>
  54. <td ><?php echo $i;?>.</td>
  55. <td >&nbsp;<?php echo $dane["nazwa"];?></td>
  56. <td ><input type="radio" name="sg[]" value="<?php echo $dane["id"];?><?php echo $znak;?>></td>
  57. </tr>
  58. <?php
  59. $i++;
  60. }
  61. }
  62. ?>
  63. <tr>
  64. <td colspan="3">&nbsp;</td>
  65. <td align="center"><input type="submit" name="Submit" value="Ustaw"></td>
  66. </tr>
  67.  
  68. </table>

Struktura bazy:
  1. <?php
  2. CREATE TABLE `menu` (
  3. `id` int(3) NOT NULL auto_increment,
  4. `nazwa` varchar(100) NOT NULL,
  5. `strona_g` char(1) NOT NULL default '0',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB ;
  8. ?>
uli
Skoro to jest radiobutton to przecież nie jest tablica tylko value. Tablice masz dla checkboxów.
rja
Ok. Tu się zgodzę. Na początku myślałem o checkboxach, ale to musi być na radio. Temat jest może zły. W każdym bądź razie jak to poprawić.
Tzn. dla jednaego ID nie jest dla mnie problemem przypisania 1, ale chciałbym przy zmianie, tam gdzie była 1 przypisac 0. NIe wiem jak zrobić tam pętlę, bo rozumiem że jak jej nie będzie to po kilku zmianach wszędzie będę miał 1.

Chyba zamotałem.
uli
Pokaż w takim razie wycinek kodu z tym radio...
rja
Przecież jest cały kod.
mrjozo
Rozumiem, że masz tylko jedną wartośc 1, więc po prostu wykonujesz:

  1. mysql_query("UPDATE menu SET strona_g=0 WHERE strona_g=1 ");


a potem ustawiasz gdzie potrzeba wartość 1
uli
Autora przepraszam, przeoczyłem.

Kod:

Zamiast 'sg[]' w linii 57:

  1. <td ><input type="radio" name="sg" value="<?php echo $dane["id"];?>" <?php echo $znak;?>></td>


Zamiast linii od 6 do 16:

  1. <?php
  2. $sg = $_POST["sg"];
  3.  
  4. mysql_query("UPDATE menu SET strona_g=0 WHERE strona_g=1 "); 
  5. mysql_query("UPDATE menu SET strona_g=1 WHERE id='$sg'");
  6. ?>
rja
Przepraszam za zamieszanie już wszystko jasne. To przez to że o Radio myślałem jak o tablicy.

dzięki wielkie wszystkim za pomoc i oświecenie.
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.