---
title: "database fält?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/190290-database-fält"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "vagann"
published: "2012-09-02T20:08:42.000Z"
updated: "2012-09-08T12:56:04.000Z"
replies: 28
views: 1394
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/190290-database-fält"
---

# database fält?

_Sida 1 av 2._

## #1 — vagann, 2012-09-02T20:08Z

hej

jag vill göra att så användare ska kunna välja en utav de altranativen (med hjälp av \<select\>) och sedan spara det i database...

för input type="text" har jag gjort som följande ....

```php
echo 'namn:<br />';
echo '<input type="text" name="namn" value="'.$userinfo['namn'].'" />';

//-----

$namn = mysql_real_escape_string($_POST['namn']);

// uppdaterar databasen när man sparar 

mysql_query("UPDATE `members` SET  `namn` = '". $namn ."', WHERE `id` = '". $_SESSION['id'] ."'") or die(mysql_error());
```

men hur ska jag göra när det gäller \<select\>.... tex:

```
echo ' test?:<br />
<select name="tester: " >
  <option value="1">test1</option>
  <option value="2">test2</option>
</select>';
```

hur gör man för att spara värdet i databasen ?

Permalänk: https://www.webforum.nu/p/190290

## #2 — voigtann1, 2012-09-02T20:19Z

ändra $\_POST\['namn'\] till $\_POST\['testar'\], eller vad menar du?

Permalänk: https://www.webforum.nu/p/2304341

## #3 — vagann, 2012-09-02T20:41Z

jag har redan testat det men det funkar inte ,  det jag vill gör är att när man väljer en av options ska det sparas in i databasen

Permalänk: https://www.webforum.nu/p/2304342

## #4 — voigtann1, 2012-09-02T20:46Z

namnet skall vara "tester" inte "tester: ":

<http://php.voigt.se/sandbox/wf/vagann/select.php>

```php
<?
	if(isset($_POST['tester'])) {
		echo "Värdet: " . $_POST['tester'];
	}
?>

<form action="select.php" method="post">
<?
echo ' test?:<br />
<select name="tester">
  <option value="1">test1</option>
  <option value="2">test2</option>
</select>';
?>
	<input type="submit">
</form>
```

Permalänk: https://www.webforum.nu/p/2304343

## #5 — vagann, 2012-09-02T21:20Z

funkar utmärkt , men skulle vara bra om det kunde visa den valda alternativen istället för test1 som visas hela tiden,oberoende av valet  ...  brukar använda 

```php
$userinfo['testar']
```

 för att skriva ut värdet från databasen

Permalänk: https://www.webforum.nu/p/2304345

## #6 — voigtann1, 2012-09-03T04:23Z

Kolla det skriv ut en fråga på varje option och sätt den till checked om den har samma värde som option värdet är

Permalänk: https://www.webforum.nu/p/2304347

## #7 — vagann, 2012-09-03T07:34Z

hmm , jag förstår inte riktigt hur du menar men ska försöka förklara hur jag tänkte ...

```php
<select>
$option = $userinfo['testar']  ;

  <option<?php if($option = "1" ){echo 'selected="selected"'} ?> value ="1">test1</option>
  <option <?php if($option = "2"){ echo 'selected="selected"'} ?>value ="2">test2</option>
 </select>
```

$option innehåller värdet från databasen ... tänker jag rätt ?

Permalänk: https://www.webforum.nu/p/2304351

## #8 — @nders, 2012-09-03T07:49Z

Jag antar att det där är lite pseudo-kod, men:

Det ska vara == i jämförelserna (if-satserna).  
Och kolla av dina mellanslag i \<option\>-koden.

Permalänk: https://www.webforum.nu/p/2304352

## #9 — vagann, 2012-09-03T08:15Z

nu har jag fixat det med jämförelserna men ändå så blir sidan tom , det måste vara lite fel i php delen  

```php
echo  $option = $userinfo['testar'];
echo' test?:<br />
    <select name="testar">
        <option <?php if($option == "1" ){echo 'selected="selected"';} ?> value="1">test1</option>
        <option <?php if($option == "2" ){echo 'selected="selected"';} ?> value="2">test2</option>
    </select>';
```

Permalänk: https://www.webforum.nu/p/2304355

## #10 — @nders, 2012-09-03T08:45Z

Du blandar apostrofer och kontext-switchar (\<?php ... ?\>) hejvilt. Jag tror det är lite tydligare om du gör det så enkelt som möjligt för dig. Du har lite echo på fel ställe också, till exempel på den översta raden.

```php
<?php
$option = $userinfo['testar'];
?>
    <select name="testar">
        <option '<?php if($option == "1" ){ echo 'selected="selected"'; } ?>' value="1">test1</option>
        <option '<?php if($option == "2" ){ echo 'selected="selected"'; } ?>' value="2">test2</option>
    </select>
```

Permalänk: https://www.webforum.nu/p/2304357

## #11 — voigtann1, 2012-09-03T08:47Z

eller:

```
<?
$option = $userinfo['testar']; 

echo ' test?:<br />
<select name="tester">
  <option value="1" '.($option == "1" ? ' checked="checked"' : '').'>test1</option>
  <option value="2" '.($option == "2" ? ' checked="checked"' : '').'>test2</option>
</select>';
?>
```

Permalänk: https://www.webforum.nu/p/2304358

## #12 — vagann, 2012-09-03T08:57Z

gjorde så men det funkade inte ...

```php
<?php 
$option = $userinfo['testar']; 
?> 
echo' test?:<br />
          <select name="testar"> 
        <option '<?php if($option == "1" ){ echo 'selected="selected"'; } ?>' value="1">test1</option> 
        <option '<?php if($option == "2" ){ echo 'selected="selected"'; } ?>' value="2">test2</option> 
    </select>';
```

jag måste ha apostofer innan \<?php annars kommer det att läsas som html kod ....  voigtann , hur tänkte du med checked="checked" ? , hur funkar de till

Permalänk: https://www.webforum.nu/p/2304360

## #13 — @nders, 2012-09-03T09:03Z

> gjorde så men det funkade inte ...

På vilket sätt funkar det inte? Har du tittat på den resulterande html-koden? Då brukar man få en ledning i vad man gjort fel...

> jag måste ha apostofer innan \<?php annars kommer det att läsas som html kod

Nej. Då har du gjort något fel (med kontext-switcharna möjligen?). Du kanske måste visa mer kod för att vi ska förstå vad du gör fel. 

Jag blev dock lite bortkollrad av alla apostrofer och annat - jag har redigerat mitt inlägg.

mvh

Permalänk: https://www.webforum.nu/p/2304361

## #14 — vagann, 2012-09-03T18:04Z

```php
elseif (isset($_GET['account1']))
{

echo '<form action="page.php?action=UserSettings&account2" method="post">';

$option = $userinfo['testar']; 
echo' test?:<br />
          <select name="testar"> 
        <option value="1" '.if($option == "1" ){ echo 'selected="selected"'; }.'>test1</option>
		<option value="2" '.if($option == "2" ){ echo 'selected="selected"'; }.'>test2</option>
    </select>';
   

echo 'namn:<br />';
echo '<input type="text" name="name" value="'. $userinfo['name'] .'" />';

echo '<input type="submit" value="Spara" />';
echo '</form>';

}
```

så här ser koden ut just nu , när jag går på sidan så blir den bara tom .... det är så jobbigt med att sidan blir tomt istället för att visa php error :/

Permalänk: https://www.webforum.nu/p/2304388

## #15 — voigtann1, 2012-09-03T18:16Z

```php
<?
	if(isset($_POST['tester'])) {
		echo "Värdet: " . $_POST['tester'];
	}
?>

<form action="select.php" method="post">
<div>
<?
echo ' test?:<br />
<select name="tester">
  <option value="1">test1</option>
  <option value="2">test2</option>
</select>';

?>
</div>
<div>
<?
$option = $_POST['tester2']; 

echo '
<select name="tester2">
  <option value="1" '.($option == 1 ? ' selected="selected"' : '').'>test1</option>
  <option value="2" '.($option == 2 ? ' selected="selected"' : '').'>test2</option>
</select>';

?></div>
	<input type="submit">
</form>
```

använd iif() frågan.. är betydligt enklare, vilken datatyp är fältet i databasen? är det en sträng så måste du använda dig av " annars (i detta exemplet så är tester2 nummer, då kollar vi efter ett tal).

eller sätt integer till en sträng:

```php
elseif (isset($_GET['account1']))
{
	$option = strval($userinfo['testar']);
	echo '<form action="page.php?action=UserSettings&account2" method="post">';
	echo 'test?:<br />
			<select name="testar"> 
				<option value="1"'.($option == "1" ? ' selected="selected"' : '').'>test1</option>
				<option value="2"'.($option == "2" ? ' selected="selected"' : '').'>test2</option>
			</select>';
	echo 'namn:<br />';
	echo '<input type="text" name="name" value="'. $userinfo['name'] .'" />';
	echo '<input type="submit" value="Spara" />';
	echo '</form>';
}
```

Permalänk: https://www.webforum.nu/p/2304389

## #16 — vagann, 2012-09-03T18:30Z

ja , databas fältet är en sträng , för jag hade tänkte ha ord ... använde nummer bara för testa testa metoden... testade med att ha 

```php
$option = $userinfo['testar']; 
echo' test?:<br />
          <select name="testar"> 
        <option value="1" '.($option == 1 ? ' selected="selected"' : '').'>test1</option>
  <option value="2" '.($option == 2 ? ' selected="selected"' : '').'>test2</option>
    </select>';
```

nu syns sidan och jag har möjlighet att ändra värdet i databasen , och sedan visa det ... 
problemet är att det inte visar den valde alternativen....

Permalänk: https://www.webforum.nu/p/2304390

## #17 — voigtann1, 2012-09-03T18:35Z

när uppdatera du värdet och när hämta du $userinfo? uppdatera du innan du hämta $userinfo så bör den ju hämta den nya datan, annars inte vad säger din källkod, vilken bli selected när du visa vad php-koden generera?

(ändrade koden ovan för att konvertera nummer till strängar)

Permalänk: https://www.webforum.nu/p/2304391

## #18 — vagann, 2012-09-07T19:19Z

där så , när det gäller att uppdatera databasen och sedan visa värdet så funkar den som den borde ... men problemet är bara att den inte selekterar(selected="selected") den valda alternativen....

 php-koden generera denna html kod 

```
 <select name="testar"> 
        <option value="1" >test1</option>
  <option value="2" >test2</option>
    </select>
```

Permalänk: https://www.webforum.nu/p/2304482

## #19 — voigtann1, 2012-09-07T19:34Z

se till att det är rätt datatyp när du kolla efter den, en 1 i nummer är inte samma sak som en "1" i en sträng (databas typ)

Permalänk: https://www.webforum.nu/p/2304483

## #20 — vagann, 2012-09-07T19:55Z

datatypen i databasen är varchar(100)...

för noggrannhetsskull testade jag med bokstäver istället för nummer

```php
$option = strval($userinfo['testar']);
echo' test?:<br />
          <select name="testar"> 
        <option value="test1"'.($option == "test1" ? ' selected="selected"' : '').'>test1</option>
        <option value="test2"'.($option == "test2" ? ' selected="selected"' : '').'>test2</option>
    </select>';
```

genererar fortfarande samma html kod

Permalänk: https://www.webforum.nu/p/2304484

---

Tråden på webben: https://www.webforum.nu/amne/php/190290-database-fält  
Nästa sida: https://www.webforum.nu/amne/php/190290-database-fält/page2.md
