Javascript code uit database / ingewikkeld
Sorry voor de onduidelijke titel. Ik heb geen idee hoe ik dit in één zin samenvat.
Het komt er op neer dat ik een text scrollertje heb. Op het moment heb ik er een klein probleempje mee.
Voor de duidelijkheid, hij werkt perfect! Daar zijn geen problemen mee maar nu wil ik het een beetje "customizen".
Op het moment worden alle berichten weergeven door:
Quote:
var sglm=new Array();
sglm[0]='Message 1';
sglm[1]='Message 2';
sglm[0]='Message 1';
sglm[1]='Message 2';
Het idee is duidelijk neem ik aan. Elke [0], [1], [2] e.d. is de volgorde van de berichten.
Dit werkt gewoon prima. Nu wil ik alleen de aanpassing dat deze berichten uit een database gehaald worden, met een max van 10 berichten. Oftewel als er 10 in staan worden er 10 weergeven. Komt er een 11de moet de 1ste afvallen en gaat hij dus met de overige 10 door. Zo moeten ze een voor een afvallen zodra er nieuwe berichten bijkomen in de database.
Elke hulp in de juiste richting zou me ontzettend kunnen helpen!
Mijn dank!
Met vriendelijke groeten,
Gewijzigd op 31/01/2012 14:07:23 door Bas IJzelendoorn
Toon eens (een groter stuk) code die wel werkt (vooraleer je aan het customizen gaat).
Kwestie dat we een beetje beter zien in welke richting we kunnen helpen.
Gewijzigd op 31/01/2012 11:14:30 door Kris Peeters
Er zijn meerdere mogelijkheden, de gemakkelijkst (en meest smerige) is door rechtstreeks in je code te loopen.
<script type="text/javascript">
var sglm=new Array();
Code (php)
//rest van JS code
</script>
De netste manier (hoe ik het zou doen) is via een ajax request (jquery bijv) en JSON content opvragen, wat in principe al een array/object is, dan is het enkel nog een kwestie van de JSON array te loopen.
Laat eens je query zien die het uit de database ophaalt. Ik denk dat je daarin moet kijken.
Ik haal momenteel nog niks uit de database. De truc is om het uit de database te gaan halen.
Op het moment gebruik ik een scriptje die ik ergens heb kunnen downloaden. Te vinden op http://news-scroller.vbarsan.com/
Toevoeging op 31/01/2012 13:26:15:
Hallo,
Ik heb het idee van Jurgen gebruikt.
Bedankt daarvoor. Het mag dan wel niet de schoonste code zijn maar het werkt. Toppie!
Mijn volgende plan is.
1. Bij elk bericht die naar de database gaat word en een "counter" bijgehouden.
2. Bij elk bericht word het ID de huidige counter stand. Dus als de counter op 6 staat, word het bericht ID 6. De volgende 7 en zo verder.
3. Elke 10 minuten draait er een script die alle ID's die lager dan de count verwijderd, vervolgens de counter weer op 0 zet.
Als ik het zo goed in gedachten hebt word elke 10 minuten alles "ge-cleaned" en begint hij aan een nieuwe berichtenreeks die vanaf de 0 weer worden verzonden.
Enige suggesties?
Thnx allemaal!
Gewijzigd op 31/01/2012 13:27:08 door Allard Keij
SELECT [kolommen] FROM [tabel]
ORDER BY id DESC
LIMIT 10;
Dan krijg je de laatste 10 berichten.
Titel aangepast. Java en Javascript zijn twee verschillende programeer talen.[/modedit]
Daar zat ik inderdaad aan te denken! Alleen het probleem erachter is lastig.
Als ik op het moment 10 berichten heb in de database met ID1 / bericht 1. ID 2 / bericht 2 enz gaat dit prima naar de 10.
Als ik dan een LIMIT 10 erop zet en in het totaal 12 berichten in de database heb gezet ( dus tot ID 12 ) vind hij raar genoeg de eerste 2 wel. Deze 2 worden door het script wel weergeven als "undefined" en gaat vervolgens mij de 3 verder tot de 12. Zoals het hoort, dan alleen de eerste 2 NIET ipv undefined.
Alvast bedankt!
Toevoeging op 31/01/2012 14:30:14:
P.s.
De code die ik op dit moment gebruik:
Code (php)
1
2
3
4
2
3
4
<?php
$sql01="SELECT * FROM messages ORDER BY id DESC LIMIT 10";
$result01=mysql_query($sql01);
?>
$sql01="SELECT * FROM messages ORDER BY id DESC LIMIT 10";
$result01=mysql_query($sql01);
?>
Vervolgens om te weergeven:
var sglm=new Array();
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
while($show01 = mysql_fetch_array($result01))
{
$id = $show01['id'];
echo 'sglm['.$id.']="'.$show01['message'].'";';
}
?>
while($show01 = mysql_fetch_array($result01))
{
$id = $show01['id'];
echo 'sglm['.$id.']="'.$show01['message'].'";';
}
?>
dam krijg je een array met honderd elementen waarvan de eerste 99 leeg zijn.
Is hier toevallig ook een goede oplossing voor dat de array gewoon begint bij het aangegeven getal ( oftewel de limit ).
P.s. ik heb de [0] Zowiezo altijd al in beslag aangezien dit een standaart bericht is die altijd als eerste weergeven moet worden.
Alvast mijn grote dank! ( Almost there !)
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$i = 0;
while($show01 = mysql_fetch_array($result01))
{
$id = $show01['id'];
echo 'sglm['.$i.']="'.$show01['message'].'";';
$i++;
}
?>
$i = 0;
while($show01 = mysql_fetch_array($result01))
{
$id = $show01['id'];
echo 'sglm['.$i.']="'.$show01['message'].'";';
$i++;
}
?>
Nu word het inderdaad goed weergeven! Sterker nog, van hoog naar laag! Onbewust was dat eigenlijk ook nog een extratje die ik wel wou. Zodat de laatste berichten als eerst worden weergeven.
Heb hem precies zoals ik wil nu!
Mijn grote dank aan alle!
Met vriendelijke groet,