---
title: "Problem att läsa in multipla värden från databas i formulär"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/133601-problem-att-läsa-in-multipla-värden-från-databas-i-formulär"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "lillebror"
published: "2005-09-01T17:36:54.000Z"
updated: "2005-09-01T21:59:28.000Z"
replies: 3
views: 254
page: 1
pages: 1
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/133601-problem-att-läsa-in-multipla-värden-från-databas-i-formulär"
---

# Problem att läsa in multipla värden från databas i formulär

## #1 — lillebror, 2005-09-01T17:36Z

Hej!

Jag visste inte riktigt i vilket av forumen PHP och HTML som jag skulle posta i eftersom det berör båda. Men då jag känner problemet ligger mer åt PHP-hållet fick det bli här.

Läget är följande. Jag har en sida med inställningar som varje användare kan konfigurera. På denna sida finns det fyra checkboxar som kan fyllas i (olika flygbehörigheter man kan ha). Dessa värden lagras och hämtas från en databas. Nu har jag dock stora problem att "loopa" ut dessa värden i mitt formulär. Vet inte riktigt vilken teknik jag ska använda mig av. Foreach och While har jag testat.

Så här ser koden ut där jag hämtar informationen ut:

```
<?php 
	$RSobj = showUserData($_SESSION["username"]);
	$RSobj_rating = showUserRatings($_SESSION["uid"]);
?>
```

Så här ser koden ut för formuläret:

```
<tr style="background-color: #F1EEE9;">
		<td style="text-align: right;background-color: #F1EEE9; padding: 5px 0 5px 5px;"><label for="ratings">Behörigheter:</label></td>
		<td style="padding-bottom: 5px;">&nbsp;</td>
		<td style="background-color: #c4c4c4; padding: 5px 0 5px 15px;">
		
		<?php if(mysql_num_rows($RSobj_rating) <> 0) { ?>
				<input type="checkbox" name="ratings[]" value="1" <?php foreach($RSobj_rating['ratingID'] as $value) { if($value == '1') { echo "CHECKED"; } } ?>>&nbsp;Single Engine Piston (SEP)<br />
				<input type="checkbox" name="ratings[]" value="2" <?php foreach($RSobj_rating['ratingID'] as $value) { if($value == '1') { echo "CHECKED"; } } ?>>&nbsp;Sjö<br />
				<input type="checkbox" name="ratings[]" value="3" <?php foreach($RSobj_rating['ratingID'] as $value) { if($value == '1') { echo "CHECKED"; } } ?>>&nbsp;Multi Engine<br />
				<input type="checkbox" name="ratings[]" value="4" <?php foreach($RSobj_rating['ratingID'] as $value) { if($value == '1') { echo "CHECKED"; } } ?>>&nbsp;IR<br />
				<?php
			 } else { ?>
				<input type="checkbox" name="ratings[]" value="1">Single Engine Piston (SEP)<br />
				<input type="checkbox" name="ratings[]" value="2">Sjö<br />
				<input type="checkbox" name="ratings[]" value="3">Multi Engine<br />
				<input type="checkbox" name="ratings[]" value="4">IR<br />
		
		<?php } ?>
		</td>
</tr>
```

Något förslag på lösning? :OO

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

## #2 — Matte, 2005-09-01T18:32Z

Hur lagrar du dina värden? Vilket format m.m.

Hur ser funktionen showUserRatings() ut ?

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

## #3 — lillebror, 2005-09-01T18:46Z

> **Matte skrev:**
>
> Hur lagrar du dina värden?

Jag lagrar dessa värden som heltal låt säga från 1-9 beroende på hur många alternativ (checkboxar) jag har.

> **Matte skrev:**
>
> Hur ser funktionen showUserRatings() ut ?

Så här:

```
function showUserRatings($ID) {
	
	$sqlSelect = "SELECT ratingID FROM tblmemberratings WHERE memberID = $ID";
	$RSobj = mysql_query($sqlSelect) or die (mysql_error());

	return $RSobj;
}
```

Kontentan av detta är ju att det kan komma ex. 4 st "ratingID" vid en körning. Det är detta jag måste hantera och loopa ut i formuläret för att kunna bocka för de alternativ som redan är valda och finns sparade i databasen.

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

## #4 — Matte, 2005-09-01T21:59Z

Om jag förstod din tabellstruktur rätt så borde det gå att göra så här:

Ditt formulär:

```php
$input = array(
  1 => array('Single Engine Piston (SEP)', ''),
  2 => array('Sjö', ''),
  3 => array('Multi Engine', ''),
  4 => array('IR', '')
);

$sqlSelect = "SELECT ratingID FROM tblmemberratings WHERE memberID = {$_SESSION['uid']}";
$RSobj = mysql_query($sqlSelect) or die (mysql_error());

while ($row = mysql_fetch_assoc($result)) {
   $input[$row['ratingID']][1] = ' checked="checked"';
}

foreach ($input as $index => $val) {
   echo "<input type=\"checkbox\" name=\"ratings[]\" value=\"$index\"$val[1] />$val[0]<br />\n";
}
```

 
Eller:

```php
$input = array(
  1 => 'Single Engine Piston (SEP)',
  2 => 'Sjö',
  3 => 'Multi Engine',
  4 => 'IR'
);

$sqlSelect = "SELECT ratingID FROM tblmemberratings WHERE memberID = {$_SESSION['uid']}";
$RSobj = mysql_query($sqlSelect) or die (mysql_error());

$ratings = array();

while ($row = mysql_fetch_assoc($result)) {
   $ratings[] = $row['ratingID'];
}

foreach ($input as $index => $val) {
   $checked = in_array($index, $ratings) ? ' checked="checked"', '';
   echo "<input type=\"checkbox\" name=\"ratings[]\" value=\"$index\"$checked />$val<br />\n";
}
```

 

Och när du sparar formuläret:

```php
$sql = "DELETE FROM tblmemberratings WHERE memberID = {$_SESSION['uid']}";
mysql_query($sql) or die("SQL: $sql <br>".mysql_error());

if (isset($_POST['ratings'])) {

   foreach ($_POST['ratings'] as $rating) {
      $values[] = "({$_SESSION['uid']}, '$rating')";
   }
   
   $sql = "INSERT INTO tblmemberratings (memberID, ratingID) ".implode(", ", $values);
   mysql_query($sql) or die("SQL: $sql <br>".mysql_error());

}
```

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

---

Tråden på webben: https://www.webforum.nu/amne/php/133601-problem-att-läsa-in-multipla-värden-från-databas-i-formulär
