Select z zaznaczonymi opcjami

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

 
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 ;


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 ;


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
<?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($wynik, MYSQL_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
<?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

Ostatnio na forum

  1. PHP Developer - Gdań... moze kobieta
  2. PHP Developer - Gdań... Tomek ARforce
  3. Hackathon Distribute... aleksandra_c
  4. Klasa obsługi szablo... freeboc
  5. PHP [Symfony] Develo... NewPerspective
  6. [Wrocław][PHP Develo... Software house Amsterdam Standard sp. z o.o.
  7. Senior PHP Developer... Kingit

Skrypty użytkowników

  1. Klasa obsługi szablo... Lirdoner
  2. Sekcje user76
  3. Klasa walidująca for... user76
  4. Licznik Gości online korey
  5. Form Builder Comandeer
  6. Dynamiczny licznik z... korey
  7. Captcha Comandeer