Select z zaznaczonymi opcjami

2010-10-27 12:50:05 Post #1 user76

 
1
2
3
4
5
6
7
CREATE TABLE `osoby` (
  `id` int(11) NOT NULL auto_increment,
  `imie` varchar(25) NOT NULL default '',
  `nazwisko` varchar(25) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM ;


1
2
3
4
5
6
7
CREATE TABLE `grupy` (
  `id` int(15) NOT NULL auto_increment,
  `nazwa` varchar(25) NOT NULL default '',
  `opis` text NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=47 ;


1
2
3
4
5
6
7
CREATE TABLE `grupy_osoby` (
  `id` int(11) NOT NULL auto_increment,
  `osoby` varchar(11) NOT NULL default '0',
  `grupy` varchar(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=164 ;


Formularz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
$id 
$_GET['id'];

include (
"baza/baza.php"); 
mysql_query("SET NAMES 'utf8'");

$wynik=mysql_query("SELECT * FROM grupy WHERE id='".$id."' ");

while (
$row mysql_fetch_array($wynikMYSQL_ASSOC)) {
    echo 
"<form method=\"post\" action=\"edycja.php\">";
    echo 
"Nazwa:<br /><input name=\"Nazwa\" size=\"45\" maxlength=\"40\" type=\"text\" value=\"{$row['nazwa']}\" /><br /><br />";
    echo 
"Opis:<br /><textarea name=\"Opis\" cols=\"42\" rows=\"7\" />{$row['opis']}</textarea><br /><br />";
    echo 
"<input type=\"hidden\" name=\"id\" value=\"{$row['id']}\"  />";
    echo 
"Osoby:<br />";
    echo 
"<br />";
    echo 
"<select name=\"Osoby[]\" multiple=\"multiple\" size=\"5\">";  }   ?>
<?

include ("baza/baza.php"); 

$query="SELECT DISTINCT osoby.id, osoby.imie, osoby.nazwisko, grupy_osoby.osoby, 
grupy_osoby.grupy FROM osoby left join grupy_osoby on 
(osoby.id=grupy_osoby.osoby and grupy_osoby.grupy=$id) "
;

     function 
sprawdz_grupy($id_pow$id_osoba2){
     if(
$id_pow==$id_osoba2) return 'selected';
     else return;
     }

$wynik=mysql_query($query);                               
while(
$r mysql_fetch_array($wynik)) {
  
$id_pow $r['grupy']; // id grupy z tabeli powiazanej

$id_osoba2 $id// -- id obecnej grupy

echo "<option value=\"{$r[0]}\" ".sprawdz_grupy($id_pow$id_osoba2).">{$r['nazwisko']} {$r['imie']} </option>";  

}
    echo 
"</select><br /><br />";
    echo 
"<br /><br /><input type=\"submit\" name=\"wyslij\" value=\"Zapisz &raquo;\" class=\"button\" /> ";
    echo 
"<br />";
    echo 
"</form>";

?>





skrypt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

<?php include ("baza/sesja_admin.php"); ?> 
<?php

include ("baza/baza.php"); 

$nazwa addslashes(trim($_POST['Nazwa']));
$opis addslashes(trim($_POST['Opis']));
$id addslashes(trim($_POST['id']));

$zapytanie "UPDATE grupy SET nazwa='$nazwa',opis='$opis' WHERE id='$id'";

$idzapytania mysql_query($zapytanie);

header("Location: komunikat.html");

//$id = mysql_insert_id();

?>

<?php

include ("baza/baza.php"); 

$zapytanie "DELETE FROM grupy_osoby WHERE grupy='$id' ";
$idzapytania mysql_query($zapytanie);

$osoby $_POST['Osoby'];

foreach(
$_POST['Osoby'] as $osoby => $idOsoby){
$zapytanie "INSERT INTO grupy_osoby SET osoby='$idOsoby', grupy='$id' "
$idOsoby mysql_query($zapytanie); 
}

header("Location: komunikat.html");
?>

2010-10-27 13:03:12 Post #2 nospor

 
Hej,
umieszczając tu kody, nie wklejaj całej Twojej strony (chyba ze to naprawdę konieczne)
Jeśli chciałeś pokazać jak zaznaczyć opcję w select, można się ograniczyć tylko do tego selecta, bez całej tej zbędnej otoczki. Z tym wszystkim kod robi się malo czytelny i trudno się go czyta.
W tym przypadku chodziło o pokazanie jak zaznaczać opcje, i kod powinien się ograniczyć do niezbędnych funkcji to realizujących. Na dodatek na przykładzie jednego selecta, a nie kilku.

2010-10-27 13:20:12 Post #3 user76

 
poprawiłem

Odpowiedz