Javascript code uit database / ingewikkeld

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Allard Keij

Allard Keij

31/01/2012 10:58:18
Quote Anchor link
Hallo allemaal!

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';

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
 
PHP hulp

PHP hulp

20/10/2021 01:37:06
 
Kris Peeters

Kris Peeters

31/01/2012 11:12:21
Quote Anchor link
Het is me niet volledig duidelijk in welke taal (talen) je bezig bent.
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
 
Jurgen Meijer

Jurgen Meijer

31/01/2012 11:22:24
Quote Anchor link
TS wil waarschijnlijk berichten in zijn javascript slider laten zien.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($rows AS $key => $row){
echo 'sglm['.$key.'] = "'.$row['message'].'";';
}

?>

//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.
 
TJVB tvb

TJVB tvb

31/01/2012 11:33:09
Quote Anchor link
Laat eens je query zien die het uit de database ophaalt. Ik denk dat je daarin moet kijken.
 
Allard Keij

Allard Keij

31/01/2012 11:58:58
Quote Anchor link
Hallo,

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
 
TJVB tvb

TJVB tvb

31/01/2012 13:55:53
Quote Anchor link
Gewoon de berichten erin zetten en bij het eruit halen een select met orderby en limit

SELECT [kolommen] FROM [tabel]
ORDER BY id DESC
LIMIT 10;

Dan krijg je de laatste 10 berichten.
 
Bas IJzelendoorn

Bas IJzelendoorn

31/01/2012 14:08:29
Quote Anchor link
Titel aangepast. Java en Javascript zijn twee verschillende programeer talen.[/modedit]
 
Allard Keij

Allard Keij

31/01/2012 14:19:29
Quote Anchor link
Hallo TJVB.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql01
="SELECT * FROM messages ORDER BY id DESC LIMIT 10";
$result01=mysql_query($sql01);
?>


Vervolgens om te weergeven:

var sglm=new Array();
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
while($show01 = mysql_fetch_array($result01))
{

$id = $show01['id'];
echo 'sglm['.$id.']="'.$show01['message'].'";';
}

?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

31/01/2012 15:26:46
Quote Anchor link
JS gaat anders om met arrays dan PHP. Als het id van het bericht 100 is en je zegt in JS
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
sqlm[100] = "iets"

dam krijg je een array met honderd elementen waarvan de eerste 99 leeg zijn.
 
Allard Keij

Allard Keij

31/01/2012 15:32:44
Quote Anchor link
Aha! Dan snap ik het probleem. Echter de oplossing niet.

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 !)
 
TJVB tvb

TJVB tvb

31/01/2012 15:57:40
Quote Anchor link
Een extra teller bijhouden
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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++;
}

?>
 
Allard Keij

Allard Keij

31/01/2012 16:12:08
Quote Anchor link
TJVB Bedankt!

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,
 



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.