Fouten in nieuwsscript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

Jebl LaBrons

Jebl LaBrons

11/10/2015 19:30:06
Quote Anchor link
Als ik dat wil wijzigen krijg ik de volgende melding:
Afbeelding
 
PHP hulp

PHP hulp

28/11/2024 10:33:38
 

11/10/2015 20:09:45
Quote Anchor link
Je moet ID op auto_increment zetten, dan ben je van je probleem af
 
- Ariën  -
Beheerder

- Ariën -

11/10/2015 22:13:14
Quote Anchor link
BIGINT(255) lijkt me daarvoor wel iets overdreven, maar een INT(4) met auto_increment, zou dan perfect zijn.
 
Joni Fleischer
Moderator

Joni Fleischer

12/10/2015 08:41:25
Quote Anchor link
Uh.. bij datetime hoef je geen value in te vullen. Die kan je leeg laten
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/10/2015 08:59:10
Quote Anchor link
Gooi die tabel news maar weg en maak een nieuwe aan met onderstaande query.

Even een aantal dingen voor jou om te onthouden:
  • Type varchar kan 1 tot en met 255 tekens bevatten en niet meer.
  • Voor tekstblokken die groter moeten kunnen zijn dan die 255 tekens zou je een type 'text' voor kunnen gebruiken.
  • Het beste is in het algemeen de character-set op utf8 te zetten. Hierdoor worden bijna alle leestekens ondersteund inclusief á, à etc.
  • De naam 'date' is een gereserveerd woord in SQL, daarom heb ik de kolom 'created' genoemd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
CREATE TABLE `news` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR(255) NOT NULL ,
`body` TEXT NOT NULL ,
`created` DATETIME NOT NULL , PRIMARY KEY (`id`))
ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_unicode_ci;


Vervolgens is het aan te raden om ook nadat je verbinding hebt gemaakt met de mysql server de character-set in te stellen op utf-8:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
//verbinding maken met database
    $con = mysqli_connect("****", "***", "***", "hsv_de_zwervers");
    mysqli_set_charset($con, 'utf8');
?>


En natuurlijk doe je hetzelfde in je HTML:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Nieuws</title>
    </head>
    <body>
        whatever
    </body>
</html>
Gewijzigd op 12/10/2015 09:14:43 door Frank Nietbelangrijk
 
Ward van der Put
Moderator

Ward van der Put

12/10/2015 09:28:08
Quote Anchor link
Aan de datumkolom kun je nog DEFAULT CURRENT_TIMESTAMP toevoegen, zodat een nieuw record automatisch de huidige datum en tijd meekrijgt.

Aangezien je meestal een beperkt aantal recente berichten wilt tonen, zou ik hieraan nog een index toevoegen, die je met DESC sorteert in omgekeerde volgorde (van nieuw naar oud):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
CREATE TABLE news (
  id       INT(11)       NOT NULL  AUTO_INCREMENT ,
  created  DATETIME      NOT NULL  DEFAULT CURRENT_TIMESTAMP ,
  title    VARCHAR(255)  NOT NULL ,
  body     TEXT          NOT NULL ,
  PRIMARY KEY pk_id (id) ,
  INDEX ix_created (created DESC)
) ENGINE = InnoDB  CHARACTER SET = utf8  COLLATE = utf8_unicode_ci;
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/10/2015 10:58:17
Quote Anchor link
Inderdaad een goede aanvulling Ward.
 
Thomas van den Heuvel

Thomas van den Heuvel

12/10/2015 11:33:47
Quote Anchor link
Maak van je id ook een UNSIGNED INT(eger), anders gooi je op voorhand de helft van het potentiële waardenbereik al weg, negatieve keys worden niet zo vaak gebruikt bij mijn weten :s.

EDIT: Afhankelijk van hoe lang je nieuwsartikelen worden kan het wellicht de moeite lonen om hier een LONGTEXT van te maken, ik zat zelf al snel aan de limiet van TEXT bij het schrijven van artikelen (vooral als hier opmaak etc. bij zit).
Gewijzigd op 12/10/2015 11:41:19 door Thomas van den Heuvel
 
Ward van der Put
Moderator

Ward van der Put

12/10/2015 11:56:02
Quote Anchor link
>> Maak van je id ook een UNSIGNED INT(eger), anders gooi je op voorhand de helft van het potentiële waardenbereik al weg, negatieve keys worden niet zo vaak gebruikt bij mijn weten :s.

Dat is waar: anders kun je maar 2,1 miljard in plaats van ruim 4,2 miljard berichten kwijt ;-)
 
Thomas van den Heuvel

Thomas van den Heuvel

12/10/2015 12:53:47
Quote Anchor link
Ward van der Put op 12/10/2015 11:56:02:
Dat is waar: anders kun je maar 2,1 miljard in plaats van ruim 4,2 miljard berichten kwijt ;-)


Verspilling op microschaal = doodzonde
Verspilling op macroschaal = rechtvaardigbaar?

Dit doet mij denken aan een quote van een zeker historisch figuur.
 

Pagina: « vorige 1 2 3



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.