---
title: "Behöver lite förklaringar kring databaser"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/89077-behöver-lite-förklaringar-kring-databaser"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "jonas29"
published: "2003-10-21T13:54:16.000Z"
updated: "2003-10-21T14:45:25.000Z"
replies: 10
views: 447
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/databaser-sql/89077-behöver-lite-förklaringar-kring-databaser"
---

# Behöver lite förklaringar kring databaser

## #1 — jonas29, 2003-10-21T13:54Z

Är inte så värst duktig på databaser.....

Har hittat en sida som jag tänkte göra efter <http://internetworld.idg.se/tjanster/webbskolan/php/4_publicerigssystem.asp> 

Har försökt att skapa databsen utifrån exemplet men får felmeddelande **Kan inte lista inlägg i databasen! Unknown column 'inserted' in 'field list' : 1054** 

Tabellen ser ni nedan

CREATE TABLE items (
id int(11) NOT NULL auto_increment,
header varchar(50) NOT NULL,
body text NOT NULL,
inserted datetime DEFAULT ‘0000-00-00 00:00:00’ NOT NULL,
PRIMARY KEY (id)
);

Tabellen har ju 4 fält men vad innebär igentligen **PRIMARY KEY (id)** ?
Ska jag ha med det också?

Har försökt att skapa en fil i php som gör att man skapar tabellen i webbläsaren men har inte heller lyckats med det. Hur åstadkommer man igentligen det?

Någon som har lust att förklara lite?

/Jonas

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

## #2 — Qimen, 2003-10-21T14:06Z

Primary key gör fältet id till huvudfält på enkelt språk. :)

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

## #3 — jonas29, 2003-10-21T14:12Z

Så, vad är det för fel jag gör när jag skapar databsen?
Se hur jag gjort  här nedan

items

Fält           Typ                Null Standard 
id               int(11)          Nej    
header      varchar(50)   Nej    
body          text               Nej    
inserted    datetime        Nej  0000-00-00 00:00:00

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

## #4 — Peeer, 2003-10-21T14:15Z

Felmeddelandet tyder på att du försöker hämta data från en kolumn som inte finns. Säker på att den kolumnen finns?

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

## #5 — Qimen, 2003-10-21T14:17Z

Om du tar bort: 

```
DEFAULT ‘0000-00-00 00:00:00’
```

Så funkar det att skapa din tabell. :)

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

## #6 — jonas29, 2003-10-21T14:18Z

Beror det på att jag inte har skrivit in något i min databas ännu?

Jag klistrar in koden nedan så ser du den också. Men det är ju det man ska kunna göra med scriptet å andra sidan.... Så det borde fungera inna tycker jag, eller har jag fel kanske?

\<?php
// Inloggningsuppgifter för databasen, skriv in dina egna uppgifter här
$db_user = ''; // Användarnamn
$db_pass = ''; // Lösenord
$db_host = ; // Serverns namn (räcker ofta med bara localhost)
$db_name = ; // Namn på databasen

// Titel på sidan
$page_title = 'PHP-skolan del 3 - Publiceringssystem';

// Skapa koppling mot MySQL
$db_conn = mysql_pconnect($db_host, $db_user, $db_pass);
if ( !$db_conn ) {
die('Kan inte skapa koppling mot MySQL');
}

// Välj databas
if ( !mysql_select_db($db_name) ) {
die('Kan inte välja databas.');
}

// Visa formulär för nytt inlägg eller uppdatering av inlägg
function show_form($data=array()) {
global $PHP_SELF;
$mode = sizeof($data) \> 0 ? 'Uppdatera' : 'Spara';
?\>\<html\>\<body\>
\<form action="\<?php echo $PHP_SELF ?\>" method="post"\>
\<input type="hidden" name="id" value="\<?php echo !empty($data\['id'\]) ? $data\['id'\] : '' ?\>"\>
\<table\>
\<tr\>
\<th align="left"\>Rubrik\</th\>
\<td\>\<input name="header" type="text" value="\<?php echo !empty($data\['header'\]) ? $data\['header'\] : '' ?\>"\>\</td\>
\</tr\>
\<tr\>
\<th align="left" valign="top"\>Brödtext\</th\>
\<td\>\<textarea name="body" cols="50" rows="8"\>\<?php echo !empty($data\['body'\]) ? $data\['body'\] : '' ?\>\</textarea\>\</td\>
\</tr\>
\<tr\>
\<td colspan="2" align="right"\>\<input name="mode" type="submit" value="\<?php echo $mode ?\>"\>\</td\>
\</tr\>
\</table\>
\</form\>
\<?php
}

// Hämta och lista inlägg
function list_items() {
global $PHP_SELF;

// Hämta id, rubrik, brödtext och datum för samtliga inlägg i databasen. Sortera i
// fallande datumordning.
$sql = 'SELECT id, header, body, inserted FROM items ORDER BY inserted DESC';
if ( !($result = mysql_query($sql)) ) {
die('Kan inte lista inlägg i databasen! ' . mysql_error() . ' : ' . mysql_errno());
}

// Visa länk för att lägga till ett nytt inlägg
echo '\<a href="'.$PHP_SELF.'?add=1"\>Nytt inlägg\</a\>\<br\>';

// Kontrollera antalet rader 
if ( mysql_num_rows($result) \< 1) {
die('Kan inte hitta några inlägg i databasen!');
}
?\>
\<table border="0"\>
\<tr\>
\<th\>Rubrik\</th\>
\<th\>Inlagd\</th\>
\<th\>&nbsp;\</th\>
\</tr\>
\<?php
// Hämta en rad i taget från databasen, fortsätt tills inga fler rader finns att hämta
while ( $row = mysql_fetch_array($result) ) {
$view_url = $PHP_SELF . '?view=' . $row\['id'\]; // URL för att titta på ett visst inlägg
$edit_url = $PHP_SELF . '?edit=' . $row\['id'\]; // URL för att redigera ett visst inlägg
$delete_url = $PHP_SELF . '?delete=' . $row\['id'\]; // URL för att ta bort ett visst inlägg
?\>
\<tr\>
\<td\>\<?php echo $row\['header'\] ?\>\</td\>
\<td\>\<?php echo $row\['inserted'\] ?\>\</td\>
\<td\>\<a href="\<?php echo $view_url ?\>"\>visa\</a\> \|
\<a href="\<?php echo $edit_url ?\>"\>redigera\</a\> \|
\<a href="\<?php echo $delete_url ?\>"\>radera\</a\>\</td\>
\</tr\>
\<?php
}
echo "\</table\>";
}

// Visa inlägg
function view_item($data) {
global $PHP_SELF;
echo '\<h4\>'.htmlentities($data\['header'\]).' ('.$data\['inserted'\].')\</h4\>';
echo '\<p\>'.nl2br(htmlspecialchars($data\['body'\])).'\</p\>';
echo '\<a href="'.$PHP_SELF.'"\>lista\</a\>';
}

// Hämta ett inlägg från databasen
function fetch_item($id) {
$sql = 'SELECT id, header, body, inserted FROM items WHERE id='.$id;
if ( !($result = mysql_query($sql)) ) {
die('Kan inte hämta inlägg från databasen! ' . mysql_error() . ' : ' . mysql_errno());
}

if ( mysql_num_rows($result) != 1) {
die('Kan inte hitta det valda inlägget i databasen!');
}

$row = mysql_fetch_array($result);

return $row;
}

// Lägg in ett nytt inlägg i databasen
function add_item($header, $body) {
$sql = "INSERT INTO items (header, body, inserted) VALUES ('$header', '$body', NOW())";
if ( !mysql_query($sql) ) {
die('Kan inte lägga in data i databasen! ' . mysql_error() . ' : ' . mysql_errno());
}
}

// Uppdatera ett inlägg i databasen
function update_item($id, $header, $body) {
$sql = "UPDATE items SET header='$header', body='$body' WHERE id=$id";
if ( !mysql_query($sql) ) {
die('Kan inte uppdatera inlägget! ' . mysql_error() . ' : ' . mysql_errno());
}
}

// Ta bort ett inlägg från databasen
function delete_item($id) {
$sql = 'DELETE FROM items WHERE id='.$id;
if ( !mysql_query($sql) ) {
die('Kan inte radera inlägget! ' . mysql_error() . ' : ' . mysql_errno());
}
}

?\>
\<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"\>

\<head\>
\<title\>\<?php echo $page_title ?\>\</title\>
\</head\>

\<?php

// Visa formulär om någon har klickat på länken för att
// lägga in ett nytt inlägg.
if ( isset($add) ) {
show_form();

// Om någon har valt att visa ett inlägg, hämta det
// från databasen och visa på skärmen.
} elseif ( isset($view) ) {
$item = fetch_item($view);
view_item($item);

// När någon väljer att redigera ett inlägg, hämta det
// från databasen och visa det i formuläret.
} elseif ( isset($edit) ) {
$item = fetch_item($edit);
show_form($item);

} else {
// Ta bort inlägget om något klickat på radera-länken.
if ( isset($delete) ) {
delete_item($delete);

// Spara inlägget i databasen när någon klickar på knappen Spara.
} elseif ( isset($mode) && $mode == 'Spara' ) {
add_item($header, $body);

// Uppdatera inlägget i databasen när någon klickar på knappen Uppdatera.
} elseif ( isset($mode) && $mode == 'Uppdatera' ) {
update_item($id, $header, $body);
}

// Visa en lista över inlägg efter ovanstående tre funktioner eller när
// inget val har gjorts av användaren.
list_items();
}

?\>

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

## #7 — Qimen, 2003-10-21T14:20Z

Jag tror inte du skapat tabellen än. Gör som jag skrev ovan och prova sedan.

btw, använd gärna phptaggarna till php-kod. \[php\] \[/ php\]

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

## #8 — jonas29, 2003-10-21T14:27Z

Hrmmmm

Jag har gjort en databas. I denna dabas finns följande tabeller
id
header
body
inserted

Ska jag ha med fler tabeller?

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

## #9 — Qimen, 2003-10-21T14:29Z

Nu har du fått det lite om bakfoten.
Du har en databas, ex usr_1.
Sedan i den skapar du tabeller. Med den koden du skrev i ditt första inlägg så skapas det en tabell som heter items. I items finns fälten:

id
header
body
inserted

Så nu till frågan, har du skapat en tabell?

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

## #10 — jonas29, 2003-10-21T14:39Z

Nu blev jag ställd....
Bra att ngn har tålamod med mig iaf :-)
Vet inte hur jag ska kunna visa dig men förklarar på bästa sätt.

Har gjort en databas som heter pub
i denna finns det en tabell som heter Items
denna har i sin tur fält som heter Id, header, body & inserted.

Så nog tycker jag att jag har skapat tabeller iaf :-)
Eller fattar jag detta fel nu....

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

## #11 — jonas29, 2003-10-21T14:45Z

Fortsättning på &quot;Behöver lite förklaringar kring databaser&quot;

Så här ser min databas ut Se bifogat dok.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/89077-behöver-lite-förklaringar-kring-databaser
