Ga naar inhoud
Log in om dit te volgen  
Gast

Kleine Vragen Topic #4

Aanbevolen berichten

Stef (link):
Aarclay (link):
Een witte-pagina wil niet altijd zeggen dat het gelukt is. Zorg liever dat je een vaste tekst te zien krijgt, als ik het maar een OK. Die kan je in je jQuery-script weer mooi afvangen.


Oh, inderdaad smiley
Ookal echo ik OK krijg ik nog een witte pagina smiley
Ik heb error reporting nu aangezet:
Klik om de spoiler te openen

Witte pagina in browser en internal server 500 error in AJAX request.


toevoeging op 17 mei 2015, 21:11:54:
Ik heb net dit stukje even weggelaten en toen gaf ie een OK:
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
if($countGetQuery >= 1) {
    $lastclick = $mysqli->query("SELECT lastclick FROM userclicks WHERE ip=$ip");
    echo $lastclick;
    $mysqli->query("UPDATE userclicks SET lastclick=$now WHERE ip=$ip");
} else {
    $mysqli->query("INSERT INTO `userclicks`(`ip`, `lastclick`) VALUES ($ip,$now)");
}

Daar zou dus ergens de fout moeten zitten, toch?


toevoeging op 17 mei 2015, 21:14:04:
YES, het lag aan de [c]echo $lastclick[/c].
Blijkbaar was dat niet goed ofzo smiley


Dat is niet goed nee.
Quote:
For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.


je moet eerst nog ->fetch_assoc() o.i.d. doen zodat het een array/string wordt

Deel dit bericht


Link naar bericht
Delen op andere sites
Thom (link):
Stef (link):
Aarclay (link):
Een witte-pagina wil niet altijd zeggen dat het gelukt is. Zorg liever dat je een vaste tekst te zien krijgt, als ik het maar een OK. Die kan je in je jQuery-script weer mooi afvangen.


Oh, inderdaad smiley
Ookal echo ik OK krijg ik nog een witte pagina smiley
Ik heb error reporting nu aangezet:
Klik om de spoiler te openen

Witte pagina in browser en internal server 500 error in AJAX request.


toevoeging op 17 mei 2015, 21:11:54:
Ik heb net dit stukje even weggelaten en toen gaf ie een OK:
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
if($countGetQuery >= 1) {
    $lastclick = $mysqli->query("SELECT lastclick FROM userclicks WHERE ip=$ip");
    echo $lastclick;
    $mysqli->query("UPDATE userclicks SET lastclick=$now WHERE ip=$ip");
} else {
    $mysqli->query("INSERT INTO `userclicks`(`ip`, `lastclick`) VALUES ($ip,$now)");
}

Daar zou dus ergens de fout moeten zitten, toch?


toevoeging op 17 mei 2015, 21:14:04:
YES, het lag aan de [c]echo $lastclick[/c].
Blijkbaar was dat niet goed ofzo smiley


Dat is niet goed nee.
Quote:
For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.


en zon object kan je niet meteen echo-en


Ik heb het nu gefetcht en nu kan het wel smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Stef (link):
Thom (link):
Stef (link):
Klik om eerdere quotes te tonen


Oh, inderdaad smiley
Ookal echo ik OK krijg ik nog een witte pagina smiley
Ik heb error reporting nu aangezet:
Klik om de spoiler te openen

Witte pagina in browser en internal server 500 error in AJAX request.


toevoeging op 17 mei 2015, 21:11:54:
Ik heb net dit stukje even weggelaten en toen gaf ie een OK:
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
if($countGetQuery >= 1) {
    $lastclick = $mysqli->query("SELECT lastclick FROM userclicks WHERE ip=$ip");
    echo $lastclick;
    $mysqli->query("UPDATE userclicks SET lastclick=$now WHERE ip=$ip");
} else {
    $mysqli->query("INSERT INTO `userclicks`(`ip`, `lastclick`) VALUES ($ip,$now)");
}

Daar zou dus ergens de fout moeten zitten, toch?


toevoeging op 17 mei 2015, 21:14:04:
YES, het lag aan de [c]echo $lastclick[/c].
Blijkbaar was dat niet goed ofzo smiley


Dat is niet goed nee.
Quote:
For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.


en zon object kan je niet meteen echo-en


Ik heb het nu gefetcht en nu kan het wel smiley


fffuuu ja zoals in mijn edit staat smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Thom (link):
Stef (link):
Thom (link):
Klik om eerdere quotes te tonen


Dat is niet goed nee.
Klik om eerdere quotes te tonen


en zon object kan je niet meteen echo-en


Ik heb het nu gefetcht en nu kan het wel smiley


fffuuu ja zoals in mijn edit staat smiley


Ja toe fest 4 you smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Weet iemand hoe ik met een arduino uno een knop op gta iv kan koppelen. dat als ik er op druk dat de sirene van de politie aan gaat? was knop G dacht ik (toetsenbord)

Deel dit bericht


Link naar bericht
Delen op andere sites
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?

Deel dit bericht


Link naar bericht
Delen op andere sites
Jesper (link):
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?


Nou je kan met bijv. jQuery een AJAX request sturen naar een PHP bestand dat vervolgens alle (nieuwe) berichten ophaalt (van MySQL).
Dan hoef je de page niet te refreshen.


toevoeging op 22 mei 2015, 11:40:18:
En dat doe je dan bijvoorbeeld iedere seconde zodat het live is.

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Stef (link):
Jesper (link):
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?


Nou je kan met bijv. jQuery een AJAX request sturen naar een PHP bestand dat vervolgens alle (nieuwe) berichten ophaalt (van MySQL).
Dan hoef je de page niet te refreshen.


toevoeging op 22 mei 2015, 11:40:18:
En dat doe je dan bijvoorbeeld iedere seconde zodat het live is.


En wat als er geen nieuwe berichten zijn? smiley
Dan ben je dus elke seconden headers (dus data) aan het over en weer sturen.
Heel onpraktisch, en heel gebruiksonvriendelijk (onnodig data sturen, vooral leuk voor mbs op mobiele devices)


toevoeging op 22 mei 2015, 11:52:29:
Jesper (link):
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?


gebruik websockets en werk met push ipv pull (fetch)

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
Stef (link):
Jesper (link):
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?


Nou je kan met bijv. jQuery een AJAX request sturen naar een PHP bestand dat vervolgens alle (nieuwe) berichten ophaalt (van MySQL).
Dan hoef je de page niet te refreshen.


toevoeging op 22 mei 2015, 11:40:18:
En dat doe je dan bijvoorbeeld iedere seconde zodat het live is.


En wat als er geen nieuwe berichten zijn? smiley
Dan ben je dus elke seconden headers (dus data) aan het over en weer sturen.
Heel onpraktisch, en heel gebruiksonvriendelijk (onnodig data sturen, vooral leuk voor mbs op mobiele devices)


toevoeging op 22 mei 2015, 11:52:29:
Jesper (link):
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?


gebruik websockets en werk met push ipv pull (fetch)


kan je uitleggen hoe websockets werken?

Deel dit bericht


Link naar bericht
Delen op andere sites
Jesper (link):
Jessee (link):
Stef (link):
Klik om eerdere quotes te tonen


Nou je kan met bijv. jQuery een AJAX request sturen naar een PHP bestand dat vervolgens alle (nieuwe) berichten ophaalt (van MySQL).
Dan hoef je de page niet te refreshen.


toevoeging op 22 mei 2015, 11:40:18:
En dat doe je dan bijvoorbeeld iedere seconde zodat het live is.


En wat als er geen nieuwe berichten zijn? smiley
Dan ben je dus elke seconden headers (dus data) aan het over en weer sturen.
Heel onpraktisch, en heel gebruiksonvriendelijk (onnodig data sturen, vooral leuk voor mbs op mobiele devices)


toevoeging op 22 mei 2015, 11:52:29:
Jesper (link):
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?


gebruik websockets en werk met push ipv pull (fetch)


kan je uitleggen hoe websockets werken?
Ze houden een verbinding open en sturen data zodra dat er is. Als er geen data te versturen valt dan wordt er niks verstuurd.

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Jesper (link):
Jessee (link):
Stef (link):
Klik om eerdere quotes te tonen


Nou je kan met bijv. jQuery een AJAX request sturen naar een PHP bestand dat vervolgens alle (nieuwe) berichten ophaalt (van MySQL).
Dan hoef je de page niet te refreshen.


toevoeging op 22 mei 2015, 11:40:18:
En dat doe je dan bijvoorbeeld iedere seconde zodat het live is.


En wat als er geen nieuwe berichten zijn? smiley
Dan ben je dus elke seconden headers (dus data) aan het over en weer sturen.
Heel onpraktisch, en heel gebruiksonvriendelijk (onnodig data sturen, vooral leuk voor mbs op mobiele devices)


toevoeging op 22 mei 2015, 11:52:29:
Jesper (link):
Kan iemand mij uitleggen hoe ik nieuwe berichten automatisch in een chatbox zie als ze er zijn?
Ik had iets gelezen over ajax. maar ik kan er niet echt iets uit vinden?


gebruik websockets en werk met push ipv pull (fetch)


kan je uitleggen hoe websockets werken?


Wat Lennard zegt.
Voordeel is dat als er dus geen data is en hij niets verstuurd, er dus ook geen headers verstuurd worden omdat die eenmalig verstuurd worden en de verbinding blijft daarna open. Dus kost geen extra MBs / traffic.
En zodra er iets is dan wordt het in de socket (verbinding) gegooid en dan ontvang je dat real-time op de client, dus geen delay van max 1 min

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
Jesper (link):
Jessee (link):
Klik om eerdere quotes te tonen


En wat als er geen nieuwe berichten zijn? smiley
Dan ben je dus elke seconden headers (dus data) aan het over en weer sturen.
Heel onpraktisch, en heel gebruiksonvriendelijk (onnodig data sturen, vooral leuk voor mbs op mobiele devices)


toevoeging op 22 mei 2015, 11:52:29:
Klik om eerdere quotes te tonen


gebruik websockets en werk met push ipv pull (fetch)


kan je uitleggen hoe websockets werken?


Wat Lennard zegt.
Voordeel is dat als er dus geen data is en hij niets verstuurd, er dus ook geen headers verstuurd worden omdat die eenmalig verstuurd worden en de verbinding blijft daarna open. Dus kost geen extra MBs / traffic.
En zodra er iets is dan wordt het in de socket (verbinding) gegooid en dan ontvang je dat real-time op de client, dus geen delay van max 1 min


Ik begrijp wat je bedoeld. toch wil ik eerst met ajax proberen.
Wat ik nu heb is dit:
Codeblok:
1
2
3
4
5
6
7
setInterval(function(){
$.get("includes/show-meldingen.php", function (data) { //data contains the files output

 $("#meldingen").appendTo(data);//insert the new messages into a div in your html

});
}, 3000);


Als er geen nieuwe zijn dan duplicate hij toch alles?
Beetje lastig uit te leggen dit. Er zijn 2 meldingen in de database, en word geen nieuwe toegevoegd maar toch na 3 seconden append hij die 2 nog een x in de site?
Hoe zorg ik dat als er niks nieuws is dat hij niks duplicate?

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Je kan de hele chat vervangen (wat kut is en meer werk voor dom)
Of je kan alleen nieuwe berichten returnen in data.
Wat je doet is, bij die get geef je timestamp mee van laatste bericht in de chatbox.
Alle berichten daarboven returnt ie dan in data en dat append je dan. smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
Je kan de hele chat vervangen (wat kut is en meer werk voor dom)
Of je kan alleen nieuwe berichten returnen in data.
Wat je doet is, bij die get geef je timestamp mee van laatste bericht in de chatbox.
Alle berichten daarboven returnt ie dan in data en dat append je dan. smiley



Hoe kan ik dat doen?

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Met jQuery haal je alle elementen uit de chat op
bijvoorbeeld alle divs

<div class="chatContainer">
<div id="msg-1" data-time="timestamp"></div>
<div id="msg-2" data-time="timestamp"></div>
</div>

Dan doe je
Codeblok:
1
var timestamp = $(.chatContainer:last).data(time);

Codeblok:
1
$.get("includes/show-meldingen.php", { timestamp: timestamp }, function (data) {


PHP:
select * from chats WHERE timestamp > $_GET[timestamp]

en dat echo je dan smiley.
Liefst als json / array
en clientside
Codeblok:
1
2
3
data.forEach(function(message) {
  $(.chatContainer).append(<div id="msg-+message.id+" data-time="+message.timestamp+">+message.content+</div>);
});



toevoeging op 22 mei 2015, 14:22:39:
Hoop dat het genoeg voorgekauwd is smiley .


toevoeging op 22 mei 2015, 14:22:54:
(niet lullig bedoeld btw, maw: Ik hoop dat je er wat aan hebt smiley)

Deel dit bericht


Link naar bericht
Delen op andere sites
@Jessee
Dit is wat ik nu heb
Codeblok:
1
2
3
4
5
6
7
8
setInterval(function () {
    var timestamp = $(#meldingen:last).data(timestamp);
    $.get("includes/show-meldingen.php", { timestamp: timestamp }, function (data) {

        $("#meldingen").append(data);//insert the new messages into a div in your html

    });
}, 3000);

PHP:
Codeblok:
1
2
$getMeldingen = $db->query("SELECT * FROM meldingen WHERE timestamp > ".$db->real_escape_string($_GET[timestamp])." ORDER BY timestamp DESC LIMIT 10");
while($fetchMeldingen = $getMeldingen->fetch_array()){

HTML:
Codeblok:
1
<div data-time="timestamp"><?php echo $fetchMeldingen[timestamp]; ?></div>


Hij blijft maar duplicaten?

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
Je kan de hele chat vervangen (wat kut is en meer werk voor dom)
Of je kan alleen nieuwe berichten returnen in data.
Wat je doet is, bij die get geef je timestamp mee van laatste bericht in de chatbox.
Alle berichten daarboven returnt ie dan in data en dat append je dan. smiley
Je kunt beter met een ID werken of met een timestamp - 1 seconde, anders kom je in de knoei als er 2 berichten op 1 timestamp zijn verstuurd en er maar 1 naar de client is verzonden.

Deel dit bericht


Link naar bericht
Delen op andere sites
@Jesper
[c]$(#meldingen:last)[/c] haalt de #meldingen div op. Je hebt het laatste kind uit die div nodig, als er divjes in zitten is dat zo: [c]$(#meldingen div:last)[/c]


toevoeging op 22 mei 2015, 14:42:58:
Oh, je HTML is ook onjuist

Codeblok:
1
2
<?php
echo <div data-time=".$fetchMeldingen[timestamp]." >.$fetchMeldingen[bericht].</div>;



toevoeging op 22 mei 2015, 14:43:32:
Anders stuurt hij steeds de text timestamp mee in de request.

Deel dit bericht


Link naar bericht
Delen op andere sites
Sjoerd (link):
@Jesper
[c]$(#meldingen:last)[/c] haalt de #meldingen div op. Je hebt het laatste kind uit die div nodig, als er divjes in zitten is dat zo: [c]$(#meldingen div:last)[/c]


toevoeging op 22 mei 2015, 14:42:58:
Oh, je HTML is ook onjuist

Codeblok:
1
2
<?php
echo <div data-time=".$fetchMeldingen[timestamp]." >.$fetchMeldingen[bericht].</div>;



toevoeging op 22 mei 2015, 14:43:32:
Anders stuurt hij steeds de text timestamp mee in de request.


Toch blijft hij doorgaan?

Wat misschien het probleem kan zijn dat ik eerst 3 seconden moet wachten als ik de page laad. en dan komen de berichten pas
hoe kan ik dat oplosse

Deel dit bericht


Link naar bericht
Delen op andere sites
In je javascript staat data(timestamp), maar het data-attribuut heb je data-time genoemd, dus het moet data(time) zijn.

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Lennard (link):
Jessee (link):
Je kan de hele chat vervangen (wat kut is en meer werk voor dom)
Of je kan alleen nieuwe berichten returnen in data.
Wat je doet is, bij die get geef je timestamp mee van laatste bericht in de chatbox.
Alle berichten daarboven returnt ie dan in data en dat append je dan. smiley
Je kunt beter met een ID werken of met een timestamp - 1 seconde, anders kom je in de knoei als er 2 berichten op 1 timestamp zijn verstuurd en er maar 1 naar de client is verzonden.


Ja true inderdaad, ids zijn ook oplopend. En wél uniek.
Good catch smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
JS:
Codeblok:
1
2
3
4
5
6
7
8
setInterval(function () {
    var timestamp = $(#meldingen div:last).data(time);
    $.get("includes/show-meldingen.php", { timestamp: timestamp }, function (data) {

        $("#meldingen").append(data);//insert the new messages into a div in your html

    });
}, 3000);

HTML:
Codeblok:
1
<div data-time="<?php echo $fetchMeldingen[timestamp]; ?>"></div>

PHP
Codeblok:
1
2
$getMeldingen = $db->query("SELECT * FROM meldingen WHERE timestamp > ".$db->real_escape_string($_GET[timestamp])." ORDER BY timestamp DESC LIMIT 10");
while($fetchMeldingen = $getMeldingen->fetch_array()){


Er gebeurt iets heel raars. ik wacht 3 seconden
Dan komt:
ID 5 komt 4x
ID 4 komt 3x
ID 2 komt 2x
ID 1 komt 1x

in meldingen div

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
Bouw het eerst even om naar id zoals @lennard zei. smiley


Oke heb ik gedaan? Nu krijg ik nog steeds het zelfde zoals 1 reactie boven deze van mij

Klopt dit?
Codeblok:
1
2
$getMeldingen = $db->query("SELECT * FROM meldingen WHERE id > ".$db->real_escape_string($_GET[id])." ORDER BY timestamp DESC LIMIT 10");
while($fetchMeldingen = $getMeldingen->fetch_array()){

Deel dit bericht


Link naar bericht
Delen op andere sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reageer op dit topic...

×   Geplakt als RTF formaat tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

Log in om dit te volgen  

×
×
  • Nieuwe aanmaken...