database maken

Status
Niet open voor verdere reacties.

whitetigerck

Gebruiker
Lid geworden
8 aug 2008
Berichten
196
Ik ben van plan om mijn nieuwsitems via een MySQL database bij te houden. Ik wil ze uiteindelijk op verschillende manieren laten zien:

1 pagina die de berichten per maand + jaar weergeeft
dus alle berichten van januari 2009 op 1 pagina en op een andere pagina alle berichten van december 2008 enz.

Op de nieuwspagina de laatste x items, stel 5 bijv, en als het niet te veel werk is dan ook nog verschillende bladen dat je kan kiezen, dus bv pagina 2 die geeft de items 6t/m10 weer, pagina 3 items 11t/m15 enz.

Ze moeten dus allemaal van nieuw naar oud gesorteerd worden.
Ik heb nu al aardig veel nieuws items, hoe kan ik deze volgens jullie het beste toevoegen aan de database? (de enige manier waarop ik het kan is via een formulier:p) En welke velden zijn het handigst om toe te voegen zodat dit het makkelijkst werkt? Ik zat te denken aan een invoerveld voor de datum, titel, bericht en auteur. Maar kan ik deze datum dan wel zo uitlezen dat ik die pagina's per maand simpel kan maken?

Ik heb haast geen ervaring met MySQL, dus verwacht maar dat ik vaak wat stomme vragen hierover zal vragen:p
 
ken je wel php? Anders wordt het wel erg lastig en zou ik daar ook eens naar kijken:
http://www.w3schools.com/php/default.asp

Qua database zou ik meerdere tabellen aanmaken. 3 als je de enige bent voor de berichten.
TABEL: post
id: int PRIMARY KEY
title: varchar()
content: text
date: DATETIME
date_edited: DATETIME

TABEL: category
id: int PRIMARY KEY
name: varchar()

TABEL: post_category
postid: int FOREIGN KEY
categoryid: int FOREIGN KEY

daar zou je al een eindje verder moeten komen qua database. Verder weer ik niet hoe uitgebreid de opties moeten zijn voor je site.
 
Als ik geen php kon dan zou ik toch niet die database aan kunnen vullen via een formulier;) Ik weet alleen niks van databases, maar na dit projectje zal dat wel veranderd zijn (hoop ik dan:))

Is het trouwens erg als ik deze database indezelfde database zet als mijn contactformulier? Die voor het contactformulier is maar 1 tabel.

Het enige wat ik wil voor de database is (tot nu toe:p) is wat ik in de beginpost zei, daarna kan ik het altijd evt nog wel uitbreiden als ik daar zin in heb

En hier komen de stomme vragen die ik beloofd heb:P
Waarom zou ik meerdere tabellen moeten maken, aan die eerste heb ik toch genoeg?
en wat betekend de id = int? Primairy key die moet uniek zijn, dat weet ik nog wel:)
Ik was van plan om de datum uniek te maken (met tijd).
Maar ik kan dus later op 1 of andere manier van die datum elke maand selecteren?
 
Is het trouwens erg als ik deze database indezelfde database zet als mijn contactformulier? Die voor het contactformulier is maar 1 tabel.
Nee dat is niet erg. Zolang je uiteraard de tabellen maar anders noemt.

Waarom zou ik meerdere tabellen moeten maken, aan die eerste heb ik toch genoeg?
Nu kun je meerdere categorieen aan de berichten toevoegen. de derde tabel zorgt ervoor dat er meerdere berichten onder een categorie vallen en dat een bericht meerdere categorieën kan hebben. Als je niet met categorieën gaat werken is 1 tabel voldoende.

en wat betekend de id = int? Primairy key die moet uniek zijn, dat weet ik nog wel
id is de veldnaam. Int is het type. Zet m ook op AUTO_INCREMENT zodat deze altijd eentje ophoogt uit zichzelf. De datum kan wel uniek zijn, maar ik zou een id aannmaken als primary key. Dit is makkelijk naar de posts te linken.

Maar ik kan dus later op 1 of andere manier van die datum elke maand selecteren?
Ja

Hieronder een sql scriptje voor je om de eerste tabel toe te voegen.
[sql]
CREATE TABLE `database`.`posts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`title` VARCHAR( 25 ) NOT NULL ,
`content` TEXT NOT NULL ,
`date` DATETIME NOT NULL ,
`date_edited` DATETIME NOT NULL
) ENGINE = MYISAM ;
[/sql]
 
oke bedankt voor je antwoorden:thumb:, de database heb ik gemaakt en ik heb al wat data toegevoegd.

Ik heb dit scriptje geschreven (connectiedata voor veiligheid gemaskerd):
PHP:
<?php
// Make a MySQL Connection
mysql_connect("****","****","****") or die(mysql_error());
mysql_select_db("DB554220") or die(mysql_error());

// Retrieve all the data from the "example" table
$result = mysql_query("SELECT * FROM news") or die(mysql_error());  

// store the record of the "news" table into $row
$i = 0;
$row[ $i ] = mysql_fetch_array( $result );

// Print out the contents of the entry 
echo "<br>titel: ".$row[ $i ]['datum'];
echo "<br>titel: ".$row[ $i ]['titel'];
echo "<br>bericht: ".$row[ $i ]['bericht'];

?>
Dan krijg ik mijn eerste entry goed te zien.
Alleen ik zou de datum's die in die tabel staan graag herschrijven. Bijv de datum is 2009-05-03, dan zou ik 3 mei willen hebben, ik heb gegoogled, via date_format kon het blijkbaar, dat heb ik dus geprobeerd:

PHP:
echo DATE_FORMAT($row[ $i ]['datum'], '%e %M');

alleen dan krijg ik deze foutmelding:
Warning: date_format() expects parameter 1 to be DateTime, string given in /mnt/web5/20/32/51997132/htdocs/dbtest/test1.php on line 16

wat doe ik hier fout?
en nog een vraagje: hoe kan ik het makkelijkst alle rows uit laten lezen?
 
ik heb het zelf al opgelost door deze code:
PHP:
<?php
setlocale (LC_ALL, 'nl_NL');
// Make a MySQL Connection
mysql_connect("****","****","****") or die(mysql_error());
mysql_select_db("DB554220") or die(mysql_error());


// Retrieve all the data
$result = mysql_query("SELECT * FROM news ORDER BY datum DESC") or die(mysql_error());  



// Print out the contents of the entry 


while ($row = mysql_fetch_assoc($result)) {
    echo "<h4>".strftime('%e %B', strtotime($row['datum']))."</h4>";
    echo "<h5>".$row['titel']."</h5>";
    echo "".$row['bericht']."<br>";
	echo "<h3>".$row['auteur']."</h3><br>";
}


?>

alleen heb ik nu een veel te lange pagina, hoe moet ik deze inkorten tot meerdere verschillende pagina's? Dus pagina 1 geeft row 1t/m5, pagina 2 row 6t/m10 enz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan