webForumDet fria alternativet

Behöver lite förklaringar kring databaser

10 svar · 445 visningar · startad av jonas29

jonas29Medlem sedan mars 200327 inlägg
#1

Ä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

QimenMedlem sedan juni 20015 009 inlägg
#2

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

jonas29Medlem sedan mars 200327 inlägg
#3

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

PeeerMedlem sedan mars 20025 907 inlägg
#4

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?

QimenMedlem sedan juni 20015 009 inlägg
#5

Om du tar bort:

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

Så funkar det att skapa din tabell. :)

jonas29Medlem sedan mars 200327 inlägg
#6

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> </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();
}

?>

QimenMedlem sedan juni 20015 009 inlägg
#7

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]

jonas29Medlem sedan mars 200327 inlägg
#8

Hrmmmm

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

Ska jag ha med fler tabeller?

QimenMedlem sedan juni 20015 009 inlägg
#9

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?

jonas29Medlem sedan mars 200327 inlägg
#10

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....

jonas29Medlem sedan mars 200327 inlägg
#11

Fortsättning på "Behöver lite förklaringar kring databaser"

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

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)