Niet alle records uit de database tonen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hilde

hilde

11/04/2008 12:54:00
Quote Anchor link
Om mijn records uit mijn database te halen gebruik ik deze querie
(Id nummer is tyniny int met een unieke waarde)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$sql  = "SELECT * "; // Selecteer alle velden ...
$sql .= "FROM `leden` ";       // uit de tabel 'leden' ...
$sql .= "ORDER BY `idnummer` ASC";     // en sorteer oplopend op 'nummer'.

Nu toont hij alle records, maar ik zou graag willen dat alleen de eerste 50 worden getoond, Kan ik dit hier aanpassen?
Gewijzigd op 01/01/1970 01:00:00 door Hilde
 
PHP hulp

PHP hulp

11/01/2025 20:50:17
 
Christiaan Baartse

Christiaan Baartse

11/04/2008 12:57:00
Quote Anchor link
$sql = "SELECT * "; // Selecteer alle velden ...
$sql .= "FROM `leden` "; // uit de tabel 'leden' ...
$sql .= "ORDER BY `idnummer` ASC";
$sql .= "LIMIT 50";
 
Erik Rijk

Erik Rijk

11/04/2008 12:57:00
Quote Anchor link
$sql .= "LIMIT 0, 50";
 
Joren de Wit

Joren de Wit

11/04/2008 12:58:00
Quote Anchor link
Gebruik LIMIT:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT *
FROM leden
ORDER BY lidnummer ASC
LIMIT 50


Verder horen backticks niet in je query thuis, dat is bende van MySQL en kan direct richting de vuilnisbak...
 
Frank -

Frank -

11/04/2008 13:12:00
Quote Anchor link
Quote:
(Id nummer is tyniny int met een unieke waarde)

Bereid je vast voor op de volgende bug, de volgende foutmelding:
Quote:
#1062 - Duplicate entry '127' for key 1

In een tinyint kun je maar 127 waardes kwijt (of 255 wanneer je unsigned gebruikt), daar zit je dus zo aan.

Gebruik voor id's nooit enige beperkingen, dus altijd een INT of zelfs BIGINT. dan kun je vele miljarden records opslaan zonder ooit in de problemen te komen. Een id betekent niks, een beperking op "niks" is dus zinloos.

Er zijn overigens betere manieren om jouw query uit te schrijven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$sql
  = "
SELECT
  *
FROM
  leden
ORDER BY
  idnummer ASC
"
;
?>


Ps. Sorteren op id is eveneens zinloos, een id betekent niks. Ook niet als jij vindt van wel. Het zegt bv. niks over ouderdom, volgorde of wat dan ook. Het wijst een uniek record aan en dat is het dan. id 1 kan nieuwer zijn dan id 25.
 
Hilde

hilde

11/04/2008 13:13:00
Quote Anchor link
Bedankt voor de antwoorden
@ Blanche
wat bedoel je met je laatste opmerking?
Is dat die uitleg die ik weg moet doen sorry maar ik weet niet wat backticks zijn
 
Frank -

Frank -

11/04/2008 13:16:00
Quote Anchor link
` dat zijn backticks, duivelse bug-veroorzakende ellende. Nooit, maar dan ook nooit gebruiken!
 
Hilde

hilde

11/04/2008 13:27:00
Quote Anchor link
Dit heb ik ervan gemaakt en het werkt

$sql = "SELECT * FROM leden ORDER BY idnummer ASC LIMIT 0, 48";

dus hartelijk bedankt

nog even wat opmerkingen (vraagjes)

Betreffende die tiny int, wij hebben momenteel 48 leden in onze club en de website die ik maak is vooral voor de leden van de club. Het is niet de bedoeling dat hier nog 50 anderen komen inloggen op de site.
Mijn leraar php beweerde dat je zuinig moest zijn met het geheugen vandaar de tiny int

Wat betreft sorteren, ik heb de leden alfabetisch in de database tabel geplaatst, dus id = 1 noemt antierens, id = 2 noemt baetens, enz.
Ik durf echter niet op naam sorteren omdat er verschillende vaders en zonen tot de leden behoren, misschien kan ik het sorteren gewoon weglaten, want in mijn database staan de mensen dus in de juiste volgorde
 
Jurgen assaasas

Jurgen assaasas

11/04/2008 13:35:00
Quote Anchor link
Waarom zou je id's koppelen aan een alfabetische volgorde? Je kunt gewoon schikken om de desbetreffende kolom dus ook op naam.
 
Frank -

Frank -

11/04/2008 13:40:00
Quote Anchor link
Het aantal leden zegt niks, het aantal keren dat je een record aanmaakt, dat zegt wel wat. Jij kunt slechts 127 (of 255) keer een record aanmaken en dan is de koek op. Dan stopt jouw systeem er mee. Dat er bv. slechts 10 records in de tabel staan (de rest is al weer verwijderd), heeft daar niks mee te maken. Op zich heeft jouw leraar wel gelijk dat je het geheugengebruik in de gaten moet houden, maar verkeerde zuinigheid gaat je ook opbreken. Een paar extra bits geheugen, die per miljard stuks helemaal niets kosten, kunnen dan geen kwaad.

Leden staan nooit alfabetisch in de database, ze staan in de volgorde die jij aangeeft bij het SELECTEREN of die standaard door jouw database wordt gebruikt (eveneens bij het selecteren). Er zit namelijk geen enkele volgorde in records. Tenzij jij die aangeeft (bij het selecteren, niet bij het invoeren).

En nogmaals, een id betekent helemaal niets. Het is uniek, wijst een uniek record aan en dat is het dan. Het zegt helemaal niets over de inhoud van een record.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Hilde

hilde

11/04/2008 13:46:00
Quote Anchor link
ok ik zal die tiny int vervangen door int.

wat betreft sorteren; ik kan je niet goed volgen dus laat ik het voorlopig maar zo, het werkt wel en ik leer iedere dag bij, misschien begrijp ik uw uitleg volgende week iets beter en verander ik hier ook nog iets

bedankt

Hilde
 
Jan Koehoorn

Jan Koehoorn

11/04/2008 13:49:00
Quote Anchor link
De volgorde van wat dan ook is voor de database intern niet van belang. Die bepaal je gewoon in je SELECT query met ORDER BY. Als je dus op naam oplopend wilt sorteren doe je:

ORDER BY naam ASC
 
- SanThe -

- SanThe -

11/04/2008 14:12:00
Quote Anchor link
hilde schreef op 11.04.2008 13:27:
Mijn leraar php beweerde dat je zuinig moest zijn met het geheugen vandaar de tiny int

Daar zit zeker een kern van waarheid in. Echter in het geheugen is een tiny integer 1 byte en een gewone integer 4 á 8 bytes, dus daar valt niet echt veel op te bezuinigen. Deze post van mij is al enkele honderden bytes.
 



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.