webForumDet fria alternativet

Problem att uppdatera databas

2 svar · 521 visningar · startad av Blockqoute

BlockqouteMedlem sedan dec. 200380 inlägg
#1

Jag har ett problem där ett värde som skickas med från ett formulär inte uppdaterar databasen korrekt.

Den del av koden jag har problem är denna:

echo "<tr><td width='100'><b>Butik: </b></td><td><select namne='butik' id='butik'>"; 
$sql_get_butik="SELECT butik FROM medlem WHERE $medlemsnummer=medlemsnummer"; 
$res_get_butik= mysql_query("$sql_get_butik"); 
while($rad2=mysql_fetch_array($res_get_butik)) { 
  $sql_get_butiknamn="SELECT id, butik FROM butiker ORDER BY id"; 
  $res_get_butiknamn = mysql_query("$sql_get_butiknamn"); 
  while($rad=mysql_fetch_array($res_get_butiknamn)) { 
    if ($rad['id'] == $rad2['butik']) 
      echo "<option value=\"".$rad['id']."\" selected=\"selected\">".$rad['butik']." ".$rad['id']."</option>"; 
     else 
       echo "<option value=\"".$rad['id']."\">".$rad['butik']." ".$rad['id']."</option>"; 
  } 
} 
echo "</select></td></tr>";

Det är option-värdet i strängen nedan jag vill ska följa med och uppdatera databasen. Alltså $rad['id'].

echo "<option value=\"".$rad['id']."\"...

Detta är koden som jag har tänkt ska uppdatera databasen. Alla övriga fält går bra att uppdatera utom detta där värdet bara blir 0 i databasen hela tiden. Även om jag uppdaterar ett annat fält så ändras detta värde till 0 i databasen. Här är det då koden butik='{$_POST['butik']}' som jag hade tänkt skulle göra uppdateringen.

if(isset($_POST['uppdatera'])){ 
  $id=$_POST['id']; 
  mysql_query("UPDATE medlem SET anvandarnamn='{$_POST['anvandarnamn']}', fornamn='{$_POST['fornamn']}', efternamn='{$_POST['efternamn']}', gatuadress='{$_POST['adress']}', postnummer='{$_POST['postnummer']}', stad='{$_POST['stad']}', butik='{$_POST['butik']}', telefon1='{$_POST['telefon1']}', telefon2='{$_POST['telefon2']}', epost='{$_POST['epost']}', genre='{$_POST['genre']}' WHERE medlemsnummer='$id'"); 
}

Om det kan vara till någon hjälp så ser databasen ut såhär:

CREATE TABLE `medlem` ( 
  `medlemsnummer` int(8) NOT NULL auto_increment, 
  `datumtid` varchar(25) NOT NULL default '', 
  `fornamn` varchar(255) NOT NULL default '', 
  `efternamn` varchar(255) NOT NULL default '', 
  `gatuadress` varchar(255) NOT NULL default '', 
  `postnummer` varchar(20) NOT NULL default '', 
  `stad` varchar(255) NOT NULL default '', 
  `butik` int(8) NOT NULL default '0', 
  `telefon1` varchar(20) NOT NULL default '', 
  `telefon2` varchar(20) default NULL, 
  `epost` varchar(255) NOT NULL default '', 
  `anvandarnamn` varchar(255) default NULL, 
  `losenord` varchar(255) default NULL, 
  `genre` varchar(255) NOT NULL default '', 
  `avstangd` int(1) NOT NULL default '0', 
  PRIMARY KEY  (`medlemsnummer`) 
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12345736 ;

Kan någon komma med ett tips på vad som är fel? Får känslan av att det inte infogas något värde från sidan till databasen, men var går det fel? Jag har som ni ser lagt till att visa id-numret som ska skickas med i rulllistan och där stämmer det, men sedan händer något.

jawbreakerMedlem sedan jan. 2003294 inlägg
#2

Det finns åtminstone ett slarvfel i koden:

<select namne='butik' id='butik'>

borde vara

<select name='butik' id='butik'>

annars postas inte värdet alls.

BlockqouteMedlem sedan dec. 200380 inlägg
#3

Ja, herregud, ett sånt litet fel och så stora problem, fungerar klockrent nu! Tack så mkt!

130 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
128 ms — hämta tråd, inlägg och bilagor (db)