Hoe krijg ik altijd 5 records uit de tabel op mijn scherm
Ik zit even met een uitdaginkje ............ ;-)
Ik heb de volgende query:
$query = "SELECT * FROM tabel WHERE x=x LIMIT 0, 5";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
<< hier staat de tabel waarin het getoond moet worden >>
}
Tot zover weinig abracadabra ..... ;-)
Ik krijg dus vanwege de LIMIT 0,5 altijd 5 records uit de tabel.
Alleen nu wil het wel eens voorkomen dat door de WHERE clausule er maar 2, 3 of 4 records gevonden worden.
Maar ik wil in deze gevallen wel dat de tabel altijd uit 5 rijen bestaat, dus als er minder dan 5 records gevonden worden moeten er dus lege rijen gemaakt worden i de tabel zodat er dus altijd 5 rijen te zien zijn, ongeacht het aantal records uit de query.
Iemand enig idee hoe ik dat kan aanpakken?
Met vriendelijke groeten,
Arie
Gewijzigd op 19/12/2012 16:06:49 door Arie Kant
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$result = mysql_query("SELECT FirstName,LastName FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . ' ' . $row['LastName'];
echo "<br />";
}
?>
$result = mysql_query("SELECT FirstName,LastName FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . ' ' . $row['LastName'];
echo "<br />";
}
?>
Gewijzigd op 19/12/2012 16:07:19 door Aad B
Ik drukte per ongeluk op de TAB waardoor ik het bericht al plaatste voordat deze gereed was ............ ;-)
Misschien kan je er nog eens naar kijken, maar dan naar het volledige bericht?
Alvast bedankt,
Arie
Dat lijkt me typisch iets dat je niet in de database op moet lossen. Laat de database gewoon zijn werk doen, maar als er maar 3 records terugkomen, kan je in php 'lege' rijen printen. Niet moeilijk door gewoon een tellertje te laten meelopen.
Erwin H op 19/12/2012 16:15:09:
Dat lijkt me typisch iets dat je niet in de database op moet lossen. Laat de database gewoon zijn werk doen, maar als er maar 3 records terugkomen, kan je in php 'lege' rijen printen. Niet moeilijk door gewoon een tellertje te laten meelopen.
Niet om het even maar ik los dit toch ook niet op in de database, ik haal alleen maar de gegevens eruit.
Kan je misschien een voorzetje geven van zo'n teller?
Ik kan wel het volgende verzinnen qua teller maar daar heb ik volgens mij niets aan, of jij moet wat anders bedoelen?
for($i=0;$i<5;$i++){
echo "Hier komt de tabel";
}
Met vriendelijke groeten,
Arie
Erwin H op 19/12/2012 16:15:09:
Dat lijkt me typisch iets ...
Dat lijkt me ook.
Praktisch gezien: daarvoor hebben ze de for() uitgevonden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
...
$res = mysql_query($sql);
for($i=0; $i<5 ; $i++) {
$row = mysql_fetch_assoc($res);
if ($row) {
//rij met gegevens printen
}
else {
// lege rij printen
}
}
?>
...
$res = mysql_query($sql);
for($i=0; $i<5 ; $i++) {
$row = mysql_fetch_assoc($res);
if ($row) {
//rij met gegevens printen
}
else {
// lege rij printen
}
}
?>
Gewijzigd op 19/12/2012 16:26:34 door Kris Peeters
Ik zou eerder de eerder genoemde while blijven gebruiken en checken hoeveel records je hebt en dan vervolgens de nodige lege rijen toevoegen.
Maak 5 rijen.
En pak je array met resultaten daar pas bij.
Arie Kant op 19/12/2012 16:21:01:
Niet om het even maar ik los dit toch ook niet op in de database, ik haal alleen maar de gegevens eruit.
Erwin H op 19/12/2012 16:15:09:
Dat lijkt me typisch iets dat je niet in de database op moet lossen. Laat de database gewoon zijn werk doen, maar als er maar 3 records terugkomen, kan je in php 'lege' rijen printen. Niet moeilijk door gewoon een tellertje te laten meelopen.
Niet om het even maar ik los dit toch ook niet op in de database, ik haal alleen maar de gegevens eruit.
Niet om het even, maar dat doe je wel op het moment dat je 'lege rijen' uit je database wilt halen.
Voorbeeld teller:
Als $i als i dan nog geen 5 is na de loop echo je nog wat lege rijen. Niet zo moeilijk toch?
Ondertussen wat aangepast. Er zat een fout in mijn redenering.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$result = mysql_query("SELECT FirstName,LastName FROM Persons");
$aantal_rijen = mysql_num_rows($result);
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . ' ' . $row['LastName'];
echo "<br />";
}
if ($aantal_rijen < 5)(
lege regels maken
}
?>
$result = mysql_query("SELECT FirstName,LastName FROM Persons");
$aantal_rijen = mysql_num_rows($result);
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . ' ' . $row['LastName'];
echo "<br />";
}
if ($aantal_rijen < 5)(
lege regels maken
}
?>
mysql_num_rows($variabele);
Aad B op 19/12/2012 16:25:26:
Ik zou eerder de eerder genoemde while blijven gebruiken en checken hoeveel records je hebt en dan vervolgens de nodige lege rijen toevoegen.
Dat leek mij ook een strak plan !
Ik weet hoeveel records ik uiteindelijk in de query hebt zitten door
mysql_num_rows($result)
Maar hoe kan ik dan in die WHILE lus gebruiken door als het er minder dan 5 zijn lege rijen toe te voegen?
Als je daar even een klein voorbeeldje van weet, dan hou ik mij aanbevolen want ik weet niet hoe ik dat moet aanpakken :-(
Met vriendelijke groeten,
Arie
Volgens mij heeft arie nog geen bevredigend antwoord gekregen.
Arie,
Zoals gezegd los je dat in PHP op. Als je query bijvoorbeeld maar drie in plaats van vijf rijen teruggeeft, dan zul je dus iets moeten maken als
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$result = mysql_query("SELECT FirstName,LastName FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . ' ' . $row['LastName'];
echo "<br />";
}
$rowcount = mysql_num_rows($result);
for($i = 0 ; $i < 5 - $rowcount ; $i++) {
echo 'lege rij<br/>';
}
$result = mysql_query("SELECT FirstName,LastName FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . ' ' . $row['LastName'];
echo "<br />";
}
$rowcount = mysql_num_rows($result);
for($i = 0 ; $i < 5 - $rowcount ; $i++) {
echo 'lege rij<br/>';
}
Gewijzigd op 19/12/2012 16:35:20 door Frank Nietbelangrijk
Ik ga even met die van Aad aan de slag (bedankt he!), mocht ik ergens tegenaan lopen dan gooi ik dat wel weer in de groep ;-)
Met vriendelijke groeten,
Arie
Frank Nietbelangrijk op 19/12/2012 16:32:42:
Volgens mij heeft arie nog geen bevredigend antwoord gekregen.
Okay, ik heb nog aanpassingen gedaan en ondertussen zijn er twee posts bijgekomen
Maar kijk nog eens naar mijn post
:-) sorry Kris
Het is gelukt m.b.v. het script van Aad maar zo te zien had het van Kris ook zo maar tot het juiste resultaat kunnen leveren ........ ;-)
Met vriendelijk groeten,
Arie