webForumDet fria alternativet

Förvalt alternativ i rullgardin

PHP

2 svar · 356 visningar · startad av Blockqoute

Medlem sedan dec. 200380 inlägg
Frågan#1

Jag skulle vilja göra en rullgardin där ett tidigare förvalt alternativ är det som är valt när man tittar på sidan igen. Rullgardinen är alltså kopplad till en databas och alternativen i rullgardin skall kopplas till en annan databas.

T.ex. om man ska lägga till en bok i en databas med böcker så ska man välja en författare i en rullgardin. Författarna får man ur en annan databas med författare. Den författare man väljer då man lägger till boken kopplas till just den boken. Sen om man går in på en sida där det finns listat vilka böcker som finns så ska man kunna ändra författare i en ny rullgardin för en specifik bok. Det är där som jag vill att den författare som just nu tillhör boken skall vara förvald i en rullgardin. Är det nån som kan hjälpa mig med detta?

Databas för författare:

CREATE TABLE `forfattare` (
  `id` int(5) NOT NULL auto_increment,
  `fornamn` varchar(255) NOT NULL default '',
  `efternamn` varchar(255) NOT NULL default '',
  `flank1` varchar(255) default NULL,
  `flank2` varchar(255) default NULL,
  `flank3` varchar(255) default NULL,
  `b_flank1` varchar(255) default NULL,
  `b_flank2` varchar(255) default NULL,
  `b_flank3` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Databas för böcker:

CREATE TABLE `bok` (
  `id` int(5) NOT NULL auto_increment,
  `fid` int(5) NOT NULL default '0',
  `titel` varchar(255) NOT NULL default '',
  `genre` varchar(255) default NULL,
  `sammanfattning` text NOT NULL,
  `blank1` varchar(255) default NULL,
  `blank2` varchar(255) default NULL,
  `blank3` varchar(255) default NULL,
  `blank4` varchar(255) default NULL,
  `blank5` varchar(255) default NULL,
  `b_blank1` varchar(255) default NULL,
  `b_blank2` varchar(255) default NULL,
  `b_blank3` varchar(255) default NULL,
  `b_blank4` varchar(255) default NULL,
  `b_blank5` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Så här ser min rullgardin ut nu, men då är det som sagt bara den översta som visas på alla böcker:

<select name="forfattare" id="forfattare"><?
			 $sql_get_forf="SELECT id, fornamn, efternamn FROM forfattare ORDER BY efternamn";
			 $res_get_forf = mysql_query("$sql_get_forf");
			 while($rad=mysql_fetch_array($res_get_forf)){
			   echo "<option value=\"".$rad['id']."\">".$rad['fornamn']." ".$rad['efternamn']."</option>";
			 }?>
			 </select></td></tr>
Medlem sedan mars 20034 471 inlägg
#2

Beroende på om det ligger i en form som postas med post eller get, så får du använda $_POST eller $_GET. Utgår ifrån att du använder post:

<?php if (isSet($_POST['forfattare']))
   $sel = $_POST['forfattare'];
else $sel = "";
?>
<select name="forfattare" id="forfattare">
<?php
$sql_get_forf="SELECT id, fornamn, efternamn FROM forfattare ORDER BY efternamn";
$res_get_forf = mysql_query("$sql_get_forf");
while($rad=mysql_fetch_array($res_get_forf)) {
   if ($rad['id'] == $sel)
         echo "<option value=\"".$rad['id']."\" selected=\"selected\">".$rad['fornamn']." ".$rad['efternamn']."</option>";
   else 
      echo "<option value=\"".$rad['id']."\">".$rad['fornamn']." ".$rad['efternamn']."</option>";
			 }?>
			 </select></td></tr>
Medlem sedan dec. 200380 inlägg
#3

Löste det till sist så här:

<select name="forfattare" id="forfattare"> 
  <?php 
  $sql_get_fid="SELECT fid FROM bok WHERE $bokid=id";
  $res_get_fid= mysql_query("$sql_get_fid");
  while($rad2=mysql_fetch_array($res_get_fid)) {
    $sql_get_forf="SELECT id, fornamn, efternamn FROM forfattare ORDER BY efternamn"; 
    $res_get_forf = mysql_query("$sql_get_forf"); 
    while($rad=mysql_fetch_array($res_get_forf)) { 
      if ($rad['id'] == $rad2['fid']) 
        echo "<option value=\"".$rad['id']."\" selected=\"selected\">".$rad['fornamn']." ".$rad['efternamn']."</option>"; 
      else 
        echo "<option value=\"".$rad['id']."\">".$rad['fornamn']." ".$rad['efternamn']."</option>"; 
    }
  }?> 
</select>
246 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)