abonnement Unibet Coolblue Bitvavo
pi_119120404
quote:
0s.gif Op maandag 12 november 2012 12:17 schreef pascal08 het volgende:

..., maar zodra ik een query laat uitvoeren vanuit een ander PHP-bestand, dan gaat er iets niet goed. Het PHP-bestand stand-alone draaien werkt wel.

En wát gaat er niet goed?
  maandag 12 november 2012 @ 12:33:29 #32
104871 remlof
Europees federalist
pi_119120758
Die tieten in de tt mogen wel wat groter:

tt.replace(/\)\(/\s\)\(\s/)
  maandag 12 november 2012 @ 12:34:03 #33
123869 Merkie
Surprisingly contagious
pi_119120777
quote:
0s.gif Op maandag 12 november 2012 12:17 schreef pascal08 het volgende:
Ik heb met Bootstrap een typeahead veld gemaakt en ik heb de JS code onder aan m'n HTML pagina geschreven. Als ik dit doe werkt het wel:

[ afbeelding ]

..., maar zodra ik een query laat uitvoeren vanuit een ander PHP-bestand, dan gaat er iets niet goed. Het PHP-bestand stand-alone draaien werkt wel.

[ afbeelding ]

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
1
2
3
4
5
6
<?php
 $mysql_query 
mysql_query("SELECT * FROM `users` WHERE last_name LIKE '%$query%' ORDER BY `status` DESC LIMIT 15");
    while(
$row mysql_fetch_assoc($mysql_query)) {
        
$array[] = $row['last_name'];
    } 
?>
Dit stukje klopt niet. De while-loop wordt voor elk resultaat uitgevoerd, en voor elk resultaat herdefiniëer je $array[] als de waarde uit de kolom "last_name". Als je in Chrome of Firebug het network request bekijkt (doe dit dan ook, leer de developer tools gebruiken, leer debuggen) zie je waarschijnlijk dat de PHP-pagina een JSON-object terugstuurt met daarin maar één achternaam.

Ikzelf zou het zo doen:
1
2
3
4
5
6
7
8
9
<?php
 $array 
= array();
$mysql_query mysql_query("SELECT * FROM `users` WHERE last_name LIKE '%$query%' ORDER BY `status` DESC LIMIT 15");
    while(
$row mysql_fetch_assoc($mysql_query)) {
        
array_push($array,$row['last_name']);
    } 
header('Content-type: application/json');
echo 
json_encode($return_array);
?>
array_push is een functie waarmee je waardes aan een array kunt toevoegen. Deze code is niet getest overigens, maar zoiets als dit moet zeker werken.

Wat betreft je je JS-code, ik betwijfel of dit de juiste manier is om te bereiken wat je doet. De source van de typeahead lijkt mij een statisch element namelijk. Ik denk dat je een keydown event moet binden aan het veld waar je in typt, en in die event handler het source-attribuut moet updaten.

[ Bericht 6% gewijzigd door Merkie op 12-11-2012 12:42:43 ]
2000 light years from home
pi_119121128
quote:
0s.gif Op maandag 12 november 2012 12:34 schreef Merkie het volgende:

[..]
[ code verwijderd ]

Dit stukje klopt niet. De while-loop wordt voor elk resultaat uitgevoerd, en voor elk resultaat herdefiniëer je $array[] als de waarde uit de kolom "last_name". Als je in Chrome of Firebug het network request bekijkt (doe dit dan ook, leer de developer tools gebruiken, leer debuggen) zie je waarschijnlijk dat de PHP-pagina een JSON-object terugstuurt met daarin maar één achternaam.

Ikzelf zou het zo doen:
[ code verwijderd ]

array_push is een functie waarmee je waardes aan een array kunt toevoegen. Deze code is niet getest overigens, maar zoiets als dit moet zeker werken.

Enne, voortaan inderdaad zeggen wat er niet goed gaat, lijkt me vrij essentiëel.
Als ik 'm stand-alone via XAMPP draai, dan zie ik wel een JSON met 8 namen, elke keer wordt er toch gewoon een waarde aan de array toegevoegd?
  maandag 12 november 2012 @ 12:44:05 #35
75592 GlowMouse
l'état, c'est moi
pi_119121137
quote:
0s.gif Op maandag 12 november 2012 12:22 schreef pascal08 het volgende:

[..]

Ik heb 'm al in het JS-topic gepost. ;) Waar moet ik precies naar kijken in de developer-console van Chrome?
in de request en de reply daarop
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_119121155
quote:
0s.gif Op maandag 12 november 2012 12:34 schreef Merkie het volgende:

Wat betreft je je JS-code, ik betwijfel of dit de juiste manier is om te bereiken wat je doet. De source van de typeahead lijkt mij een statisch element namelijk. Ik denk dat je een keydown event moet binden aan het veld waar je in typt, en in die event handler het source-attribuut moet updaten.
Dit lijkt me inderdaad een goede optie, ik ga dat eens proberen. ^O^
pi_119121207
quote:
0s.gif Op maandag 12 november 2012 12:44 schreef GlowMouse het volgende:

[..]

in de request en de reply daarop
In het tabblad 'network' geeft 'ie wel een 404 fout, dus ik ben ook ergens weer verkeerd aan het linken, even checken...
  maandag 12 november 2012 @ 12:48:50 #38
123869 Merkie
Surprisingly contagious
pi_119121289
quote:
0s.gif Op maandag 12 november 2012 12:43 schreef pascal08 het volgende:

[..]

Als ik 'm stand-alone via XAMPP draai, dan zie ik wel een JSON met 8 namen, elke keer wordt er toch gewoon een waarde aan de array toegevoegd?
Je hebt gelijk, sorry. Dit is wat je moet doen denk ik.

1
2
3
$("#typeahead").on("keydown", function(){
    $(this).typeahead({source: <hier je Ajax-functie>});
});
2000 light years from home
pi_119121434
quote:
0s.gif Op maandag 12 november 2012 12:48 schreef Merkie het volgende:

[..]

Je hebt gelijk, sorry. Dit is wat je moet doen denk ik.
[ code verwijderd ]

Ga ik direct proberen. ^O^

Wat er trouwens vaak gebeurd bij mij, is dat een verandering in de code niet goed wordt doorgevoerd in Chrome, terwijl ik wel gewoon refresh. Ik denk dat het iets te maken heeft met een gecached exemplaar, zou dat kunnen? Hoe testen jullie dit soort scripts?
  maandag 12 november 2012 @ 12:57:09 #40
123869 Merkie
Surprisingly contagious
pi_119121582
Altijd CTRL-F5 doen.

De manier die ik je verteld heb gaat trouwens niet werken bedenk ik me net. Ajax is namelijk asynchroon, als je een Ajax-request uitvoert dan moet je het resultaat in het Ajax-request zelf gebruiken. Je kan niet zeggen: var test = ajaxRequest(bla);

Je moet dit ongeveer doen:

1
2
3
4
5
6
$("#typeahead").on("keydown", function(){
    $.ajax(bla).done(function(result) { 
         var typeahead = $('#typeahead').typeahead();
         typeahead.data('typeahead').source = result;
    });
});
2000 light years from home
  maandag 12 november 2012 @ 13:01:09 #41
75592 GlowMouse
l'état, c'est moi
pi_119121705
quote:
0s.gif Op maandag 12 november 2012 12:57 schreef Merkie het volgende:
Altijd CTRL-F5 doen.
F5 is genoeg, de ctrl is alleen nodig als je browsercache corrupt is.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 12 november 2012 @ 13:01:37 #42
123869 Merkie
Surprisingly contagious
pi_119121720
Just to be sure :6.
2000 light years from home
pi_119121776
quote:
0s.gif Op maandag 12 november 2012 13:01 schreef GlowMouse het volgende:

[..]

F5 is genoeg, de ctrl is alleen nodig als je browsercache corrupt is.
Ik moet nu steeds handmatig al m'n browsergegevens verwijderen, dan doet 'ie het wel. :?
pi_119121923
F5 werkt ook lang niet altijd. Vooral IE heeft er een handje van om bestanden vrolijk vast te houden.
pi_119122108
quote:
0s.gif Op maandag 12 november 2012 13:08 schreef Devv het volgende:
F5 werkt ook lang niet altijd. Vooral IE heeft er een handje van om bestanden vrolijk vast te houden.
Vandaar ook dat niemand in his right mind IE gebruikt als development browser.
  maandag 12 november 2012 @ 13:16:46 #46
104871 remlof
Europees federalist
pi_119122164
quote:
14s.gif Op maandag 12 november 2012 13:15 schreef KomtTijd... het volgende:

[..]

Vandaar ook dat niemand in his right mind IE gebruikt als development browser.
In IE10 werken placeholders eindelijk wel.
  maandag 12 november 2012 @ 13:24:30 #47
123869 Merkie
Surprisingly contagious
pi_119122365
quote:
14s.gif Op maandag 12 november 2012 13:15 schreef KomtTijd... het volgende:

[..]

Vandaar ook dat niemand in his right mind IE gebruikt als development browser.
Je ontkomt er niet aan als je je site wilt testen in IE he. En je weet zelf net zo goed als ik dat een site nooit in één keer werkt in IE :6 .
2000 light years from home
pi_119122947
quote:
0s.gif Op maandag 12 november 2012 13:01 schreef GlowMouse het volgende:

[..]

F5 is genoeg, de ctrl is alleen nodig als je browsercache corrupt is.
vooralsnog moet ik bij elke browser ctrl+f5 drukken om zeker te zijn dat alles vers van het net gehaald wordt en de cache ontweken wordt...
pi_119122960
quote:
0s.gif Op maandag 12 november 2012 13:24 schreef Merkie het volgende:

[..]

Je ontkomt er niet aan als je je site wilt testen in IE he. En je weet zelf net zo goed als ik dat een site nooit in één keer werkt in IE :6 .
Uiteindelijk test je in alle browsers ja, maar voor de initiële ontwikkeling IE gebruiken, dan kom je wel met zulke kromme producten... :')
pi_119123021
IE moet deaud.
  maandag 12 november 2012 @ 13:45:20 #51
75592 GlowMouse
l'état, c'est moi
pi_119123066
quote:
0s.gif Op maandag 12 november 2012 13:41 schreef mschol het volgende:

[..]

vooralsnog moet ik bij elke browser ctrl+f5 drukken om zeker te zijn dat alles vers van het net gehaald wordt en de cache ontweken wordt... ongeacht of die corrupt is of niet...
Elke browser (zie de tabel van 27 September 2010) stuurt If-Modified-Since headers mee bij een F5. Alleen als de webserver heel slecht is, is een F5 niet voldoende.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_119123139
quote:
0s.gif Op maandag 12 november 2012 13:45 schreef GlowMouse het volgende:

[..]

Elke browser (zie de tabel van 27 September 2010) stuurt If-Modified-Since headers mee bij een F5. Alleen als de webserver heel slecht is, is een F5 niet voldoende.
een standaard apache installatie, en F5 is dan niet afdoende...

overigens vermeld jou link het volgende:
quote:
F5 may give you the same page even if the content is changed, because it may load the page from cache. But Ctrl-F5 forces a cache refresh, and will guarantee that if the content is changed, you will get the new content.
pi_119123417
quote:
0s.gif Op maandag 12 november 2012 13:47 schreef mschol het volgende:

[..]

een standaard apache installatie, en F5 is dan niet afdoende...

overigens vermeld jou link het volgende:

[..]

Gewoon Ctrl + F5 gebruiken dus. :)
  maandag 12 november 2012 @ 13:56:15 #54
75592 GlowMouse
l'état, c'est moi
pi_119123442
quote:
0s.gif Op maandag 12 november 2012 13:55 schreef pascal08 het volgende:

[..]

Gewoon Ctrl + F5 gebruiken dus. :)
nee, niet.
quote:
0s.gif Op maandag 12 november 2012 13:47 schreef mschol het volgende:

[..]

een standaard apache installatie, en F5 is dan niet afdoende...
Apache stuurt standaard echt geen 304 terug.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_119123651
quote:
0s.gif Op maandag 12 november 2012 12:34 schreef Merkie het volgende:

[..]
[ code verwijderd ]

Dit stukje klopt niet. De while-loop wordt voor elk resultaat uitgevoerd, en voor elk resultaat herdefiniëer je $array[] als de waarde uit de kolom "last_name". Als je in Chrome of Firebug het network request bekijkt (doe dit dan ook, leer de developer tools gebruiken, leer debuggen) zie je waarschijnlijk dat de PHP-pagina een JSON-object terugstuurt met daarin maar één achternaam.

Ikzelf zou het zo doen:
[ code verwijderd ]

array_push is een functie waarmee je waardes aan een array kunt toevoegen. Deze code is niet getest overigens, maar zoiets als dit moet zeker werken.

Wat betreft je je JS-code, ik betwijfel of dit de juiste manier is om te bereiken wat je doet. De source van de typeahead lijkt mij een statisch element namelijk. Ik denk dat je een keydown event moet binden aan het veld waar je in typt, en in die event handler het source-attribuut moet updaten.
Pardon? Dat stukje werkt wel degelijk hoor. Sterker nog uit de php-manual van array_push:

quote:
array_push() treats array as a stack, and pushes the passed variables onto the end of array. The length of array increases by the number of variables pushed. Has the same effect as:

<?php
$array[] = $var;
?>
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
pi_119123659
quote:
0s.gif Op maandag 12 november 2012 13:56 schreef GlowMouse het volgende:

[..]

nee, niet.

[..]

Apache stuurt standaard echt geen 304 terug.
"But Ctrl-F5 forces a cache refresh, and will guarantee that if the content is changed, you will get the new content."

Dat is toch precies wat ik wil?
pi_119123766
quote:
0s.gif Op maandag 12 november 2012 14:02 schreef pascal08 het volgende:

[..]

"But Ctrl-F5 forces a cache refresh, and will guarantee that if the content is changed, you will get the new content."

Dat is toch precies wat ik wil?
Bij IE moet je er nooit vanuit gaan dat het doet wat het zou moeten doen.
pi_119123850
quote:
0s.gif Op maandag 12 november 2012 13:56 schreef GlowMouse het volgende:

[..]

nee, niet.

[..]

Apache stuurt standaard echt geen 304 terug.
en toch wordt alles uit cache gehaald als ik geen ctrl + f5 gebruik...
  maandag 12 november 2012 @ 14:11:38 #59
123869 Merkie
Surprisingly contagious
pi_119123962
quote:
12s.gif Op maandag 12 november 2012 14:02 schreef Rockfire het volgende:

[..]

Pardon? Dat stukje werkt wel degelijk hoor. Sterker nog uit de php-manual van array_push:

[..]

Was ik al achter ja. Ik was met die syntax niet bekend.
2000 light years from home
pi_119125165
Nvm. :O


Ik heb de functie eindelijk werkend gekregen. Niet helemaal zoals ik het eigenlijk wilde met typeahead van Bootstrap. Maar goed, het werkt, dus ik ben tevreden. Dank voor jullie hulp. _O_

1
2
3
4
5
6
7
8
9
10
11
12
13
$(document).ready(function() {
    $('#typeahead').keyup(function() {
        var search = $(this).attr('value');
        $.post('/folder/ajax/search.php', {search:search}, function(data) {
            $('#result').html(data);
            $('#result').click(function() {
                var result_value = $(this).text();
                $('#typeahead').attr('value', result_value);
                $('#result').html('');
            });            
        });
    });
});


[ Bericht 26% gewijzigd door pascal08 op 12-11-2012 14:58:12 ]
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')