Zoekscript
Ik heb het onderstaande script gedownload en wat aangepast naar een Mysql variant. Nu is het alleen zo dat mijn database wat groot is waardoor het net lijkt of het script niet werkt. Het duurt +/- 30 seconde voordat het script resultaat terug geeft. Nu is mijn vraag weet iemand hoe ik er voor kan zorgen dat het script een melding geeft op het moment dat het script nog gegevens aan het ophalen is.....
Ik heb op internet al gezocht of ik iets met de xmlhttp.open iets kan doen maar dat werkt niet.....
http://www.w3schools.com/ajax/ajax_aspphp.asp
Ik heb op internet al gezocht of ik iets met de xmlhttp.open iets kan doen maar dat werkt niet.....
http://www.w3schools.com/ajax/ajax_aspphp.asp
Gesponsorde koppelingen:
Ik zou eerst eens kijken waarom het langzaam is. Want in veel gevallen kun je het flink optimaliseren.
Kun je ons een query tonen die langzaam is en ook het resultaat van dezelfde query met EXPLAIN ervoor?
Wellicht kan ik je dan advies/tips geven om het sneller te maken.
Kun je ons een query tonen die langzaam is en ook het resultaat van dezelfde query met EXPLAIN ervoor?
Wellicht kan ik je dan advies/tips geven om het sneller te maken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
$SQL = "SELECT * FROM Hoofd_Table
JOIN Locatie_Table ON (Locatie_Table.Locatie_ID=Hoofd_Table.Locatie_ID)
JOIN Mensen_Table ON (Mensen_Table.Mensen_ID=Hoofd_Table.Mensen_ID)
JOIN RegistratieType_Table ON (RegistratieType_Table.TypeRegistratie_ID=Hoofd_Table.TypeRegistratie_ID)
WHERE (
(
Hoofd_Table.WeekDag LIKE '%" . mysql_real_escape_string( $q1) . "%' OR
Hoofd_Table.Datum LIKE '%" . mysql_real_escape_string( $datumoq1) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Kleineletters) . "%' OR
Mensen_Table.Mensen_Naam LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter ) . "%' OR
Mensen_Table.Mensen_Inlognaam LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter ) . "%' OR
RegistratieType_Table.RegistratieType_Type LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter ) . "%' OR
Locatie_Table.Locatie_Naam LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter ) . "%'
)
AND
(
Hoofd_Table.WeekDag LIKE '%" . mysql_real_escape_string( $q2) . "%' OR
Hoofd_Table.Datum LIKE '%" . mysql_real_escape_string( $datumoq2) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q2_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q2_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q2_Kleineletters) . "%' OR
Mensen_Table.Mensen_Naam LIKE '%" . mysql_real_escape_string( $q2_Eerste_hoofdletter ) . "%' OR
Mensen_Table.Mensen_Inlognaam LIKE '%" . mysql_real_escape_string( $q2_Hoofdletter ) . "%' OR
RegistratieType_Table.RegistratieType_Type LIKE '%" . mysql_real_escape_string( $q2_Eerste_hoofdletter ) . "%' OR
Locatie_Table.Locatie_Naam LIKE '%" . mysql_real_escape_string( $q2_Hoofdletter ) . "%'
)
AND
(
Hoofd_Table.WeekDag LIKE '%" . mysql_real_escape_string( $q3) . "%' OR
Hoofd_Table.Datum LIKE '%" . mysql_real_escape_string( $datumoq3) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q3_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q3_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q3_Kleineletters) . "%' OR
Mensen_Table.Mensen_Naam LIKE '%" . mysql_real_escape_string( $q3_Eerste_hoofdletter ) . "%' OR
Mensen_Table.Mensen_Inlognaam LIKE '%" . mysql_real_escape_string( $q3_Hoofdletter ) . "%' OR
RegistratieType_Table.RegistratieType_Type LIKE '%" . mysql_real_escape_string( $q3_Eerste_hoofdletter ) . "%' OR
Locatie_Table.Locatie_Naam LIKE '%" . mysql_real_escape_string( $q3_Hoofdletter ) . "%'
)
)
ORDER BY Hoofd_Table.WeekDag DESC";
?>
$SQL = "SELECT * FROM Hoofd_Table
JOIN Locatie_Table ON (Locatie_Table.Locatie_ID=Hoofd_Table.Locatie_ID)
JOIN Mensen_Table ON (Mensen_Table.Mensen_ID=Hoofd_Table.Mensen_ID)
JOIN RegistratieType_Table ON (RegistratieType_Table.TypeRegistratie_ID=Hoofd_Table.TypeRegistratie_ID)
WHERE (
(
Hoofd_Table.WeekDag LIKE '%" . mysql_real_escape_string( $q1) . "%' OR
Hoofd_Table.Datum LIKE '%" . mysql_real_escape_string( $datumoq1) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Kleineletters) . "%' OR
Mensen_Table.Mensen_Naam LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter ) . "%' OR
Mensen_Table.Mensen_Inlognaam LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter ) . "%' OR
RegistratieType_Table.RegistratieType_Type LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter ) . "%' OR
Locatie_Table.Locatie_Naam LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter ) . "%'
)
AND
(
Hoofd_Table.WeekDag LIKE '%" . mysql_real_escape_string( $q2) . "%' OR
Hoofd_Table.Datum LIKE '%" . mysql_real_escape_string( $datumoq2) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q2_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q2_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q2_Kleineletters) . "%' OR
Mensen_Table.Mensen_Naam LIKE '%" . mysql_real_escape_string( $q2_Eerste_hoofdletter ) . "%' OR
Mensen_Table.Mensen_Inlognaam LIKE '%" . mysql_real_escape_string( $q2_Hoofdletter ) . "%' OR
RegistratieType_Table.RegistratieType_Type LIKE '%" . mysql_real_escape_string( $q2_Eerste_hoofdletter ) . "%' OR
Locatie_Table.Locatie_Naam LIKE '%" . mysql_real_escape_string( $q2_Hoofdletter ) . "%'
)
AND
(
Hoofd_Table.WeekDag LIKE '%" . mysql_real_escape_string( $q3) . "%' OR
Hoofd_Table.Datum LIKE '%" . mysql_real_escape_string( $datumoq3) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q3_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q3_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q3_Kleineletters) . "%' OR
Mensen_Table.Mensen_Naam LIKE '%" . mysql_real_escape_string( $q3_Eerste_hoofdletter ) . "%' OR
Mensen_Table.Mensen_Inlognaam LIKE '%" . mysql_real_escape_string( $q3_Hoofdletter ) . "%' OR
RegistratieType_Table.RegistratieType_Type LIKE '%" . mysql_real_escape_string( $q3_Eerste_hoofdletter ) . "%' OR
Locatie_Table.Locatie_Naam LIKE '%" . mysql_real_escape_string( $q3_Hoofdletter ) . "%'
)
)
ORDER BY Hoofd_Table.WeekDag DESC";
?>
Toevoeging op 24/01/2012 12:26:09:
De variable $q komt uit het zoekscript.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$Splitsing = explode(" ", $q);
$q1 = $Splitsing[0];
$q2 = $Splitsing[1];
$q3 = $Splitsing[2];
$q1_Eerste_hoofdletter = (ucfirst($q1));
$q1_Hoofdletter = (strtoupper($q1));
$q1_Kleineletters = (strtolower($q1));
$q2_Eerste_hoofdletter = (ucfirst($q2));
$q2_Hoofdletter = (strtoupper($q2));
$q2_Kleineletters = (strtolower($q2));
$q3_Eerste_hoofdletter = (ucfirst($q3));
$q3_Hoofdletter = (strtoupper($q3));
$q3_Kleineletters = (strtolower($q3));
?>
$Splitsing = explode(" ", $q);
$q1 = $Splitsing[0];
$q2 = $Splitsing[1];
$q3 = $Splitsing[2];
$q1_Eerste_hoofdletter = (ucfirst($q1));
$q1_Hoofdletter = (strtoupper($q1));
$q1_Kleineletters = (strtolower($q1));
$q2_Eerste_hoofdletter = (ucfirst($q2));
$q2_Hoofdletter = (strtoupper($q2));
$q2_Kleineletters = (strtolower($q2));
$q3_Eerste_hoofdletter = (ucfirst($q3));
$q3_Hoofdletter = (strtoupper($q3));
$q3_Kleineletters = (strtolower($q3));
?>
Kees Schepers:
Ik heb even je code tussen code tags gezet, dit maakt alles veel beter leesbaar, gelieve in het vervolg hier rekening mee houden!
Gewijzigd op 24/01/2012 12:31:31 door kees Schepers
Heb je ook een explain statement? Dan doe je gewoon echo $SQL; en kopieer je en plak je de string in bijvoorbeeld PhpMyAdmin en zet je er 'EXPLAIN ' voor.
Waarom is er gekozen voor Like en geen full-text? Draait alles onder InnoDB?
Ik denk dat geheel ook wel beter genormaliseerd kan worden..
Waarom is er gekozen voor Like en geen full-text? Draait alles onder InnoDB?
Ik denk dat geheel ook wel beter genormaliseerd kan worden..
Hmmm, heb je wel getest of dit nodig is:
Als ik in mijn database zoek op "username LIKE 'erwin'", of "username LIKE 'ERWIN'" of "username LIKE 'ErWiN'", het record met als username 'Erwin' wordt altijd wel gevonden. Ofwel..... case insensitive.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Kleineletters) . "%' OR
?>
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Kleineletters) . "%' OR
?>
Als ik in mijn database zoek op "username LIKE 'erwin'", of "username LIKE 'ERWIN'" of "username LIKE 'ErWiN'", het record met als username 'Erwin' wordt altijd wel gevonden. Ofwel..... case insensitive.
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE RegistratieType_Table ALL PRIMARY NULL NULL NULL 3 Using temporary; Using filesort
1 SIMPLE Hoofd_Table ALL NULL NULL NULL NULL 2831 Using where; Using join buffer
1 SIMPLE Mensen_Table eq_ref PRIMARY PRIMARY 4 Tabel.Hoofd_Table.Hoofd_Table... 1
1 SIMPLE Locatie_Table eq_ref PRIMARY PRIMARY 4 Table.Hoofd_Table.KHoofd_Table... 1 Using where
1 SIMPLE RegistratieType_Table ALL PRIMARY NULL NULL NULL 3 Using temporary; Using filesort
1 SIMPLE Hoofd_Table ALL NULL NULL NULL NULL 2831 Using where; Using join buffer
1 SIMPLE Mensen_Table eq_ref PRIMARY PRIMARY 4 Tabel.Hoofd_Table.Hoofd_Table... 1
1 SIMPLE Locatie_Table eq_ref PRIMARY PRIMARY 4 Table.Hoofd_Table.KHoofd_Table... 1 Using where
Erwin H op 24/01/2012 13:15:49:
Hmmm, heb je wel getest of dit nodig is:
Als ik in mijn database zoek op "username LIKE 'erwin'", of "username LIKE 'ERWIN'" of "username LIKE 'ErWiN'", het record met als username 'Erwin' wordt altijd wel gevonden. Ofwel..... case insensitive.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Kleineletters) . "%' OR
?>
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Eerste_hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Hoofdletter) . "%' OR
Hoofd_Table.Opmerking LIKE '%" . mysql_real_escape_string( $q1_Kleineletters) . "%' OR
?>
Als ik in mijn database zoek op "username LIKE 'erwin'", of "username LIKE 'ERWIN'" of "username LIKE 'ErWiN'", het record met als username 'Erwin' wordt altijd wel gevonden. Ofwel..... case insensitive.
Daar heb je een heel goed punt. Standaard is de collatie latin1_swedish_ci <-- ci staat voor Case Insensitive. Dus dan klopt jouw stelling en zou voor de opmerking 1 criteria genoeg zijn.
Ik heb de case insensitive even geprobeerd maar ik snap niet helemaal wat je precies bedoelt? Als er Piet in mijn tabel staat dan komt de regel alleen naar voren als ik $q1_Eerste_hoofdletter gebruik met de Like...
Als je op een kolom in mysql de collect naam_*_ci zet dan is KeEs hetzelfde als KEES of KEEs. Dat geldt ook voor Like. Dan heb je alleen WHERE name LIKE "%KeEs%" nodig ;-)
Als ik
ALTER TABLE Hoofd_Table ADD FULLTEXT (Opmerking) doe krijg ik de onderstaande foutmelding... Het veld is een blob type.. mag dat soms niet?
#1283 - Column 'Opmerking' cannot be part of FULLTEXT index
De onderstaande website is wel interessant (v.w.b Full index)
http://www.phptuts.nl/view/33/3/
Toevoeging op 24/01/2012 14:00:05:
Ik mag alleen maar uit UTF8,ascii enzovoorts kiezen. Ik mag niet uit naam_*_ci kiezen. Ik gebruik phpmyadmin. Je bedoelt toch het veld Collatie in phpmyadmin? Sorry ik zie het al ik gebruik UTF8_general_CI Alleen dat mag je schijnbaar niet gebruiken met het veld type blob
ALTER TABLE Hoofd_Table ADD FULLTEXT (Opmerking) doe krijg ik de onderstaande foutmelding... Het veld is een blob type.. mag dat soms niet?
#1283 - Column 'Opmerking' cannot be part of FULLTEXT index
De onderstaande website is wel interessant (v.w.b Full index)
http://www.phptuts.nl/view/33/3/
Toevoeging op 24/01/2012 14:00:05:
Kees Schepers op 24/01/2012 13:51:10:
Als je op een kolom in mysql de collect naam_*_ci zet dan is KeEs hetzelfde als KEES of KEEs. Dat geldt ook voor Like. Dan heb je alleen WHERE name LIKE "%KeEs%" nodig ;-)
Ik mag alleen maar uit UTF8,ascii enzovoorts kiezen. Ik mag niet uit naam_*_ci kiezen. Ik gebruik phpmyadmin. Je bedoelt toch het veld Collatie in phpmyadmin? Sorry ik zie het al ik gebruik UTF8_general_CI Alleen dat mag je schijnbaar niet gebruiken met het veld type blob
Gewijzigd op 24/01/2012 14:03:45 door Piet Knaap
Wtf blob? Ja dan begrijp ik het wel. In BLOB wordt alle data namelijk binair opgeslagen en dan begrijp ik de hoofdletter gevoeligheid wel.
Maar waarom is er uberhaubt voor BLOB gekozen? Ik denk dat VARCHAR of TINYTEXT beter past. Ik denk dat je geen FULLTEXT index aan kan maken op BLOB velden.
Het beste wat je kunt doen is:
* Onderzoeken waarom er BLOB gebruikt is
* BLOB aanpassen naar een Text (varchar, char, tinytext, etc) datatype en ALLES UTF-8 maken
* Je query flink aanpassen omdat je niet alle verschillende hoofdletter mogelijkheden hoeft te testen
En om hoeveel records gaat het als je de tabellen Hoofd_Table, Locatie_Table, Mensen_Table, RegistratieType_Table bij elkaar optelt? Want als je het hier hebt over honderduizenden records biedt Solr misschien een betere oplossing. Met de data import handler voor MySQL kun je dan op basis van een MySQL-query delta-syncen met je solr index. Maar is wel iets complexere materie.
Maar waarom is er uberhaubt voor BLOB gekozen? Ik denk dat VARCHAR of TINYTEXT beter past. Ik denk dat je geen FULLTEXT index aan kan maken op BLOB velden.
Het beste wat je kunt doen is:
* Onderzoeken waarom er BLOB gebruikt is
* BLOB aanpassen naar een Text (varchar, char, tinytext, etc) datatype en ALLES UTF-8 maken
* Je query flink aanpassen omdat je niet alle verschillende hoofdletter mogelijkheden hoeft te testen
En om hoeveel records gaat het als je de tabellen Hoofd_Table, Locatie_Table, Mensen_Table, RegistratieType_Table bij elkaar optelt? Want als je het hier hebt over honderduizenden records biedt Solr misschien een betere oplossing. Met de data import handler voor MySQL kun je dan op basis van een MySQL-query delta-syncen met je solr index. Maar is wel iets complexere materie.
Aan Blob zit ik helaas vast.
Maar om even terug te komen op mijn orginele vraag.
"weet iemand hoe ik er voor kan zorgen dat het script een melding geeft op het moment dat het script nog gegevens aan het ophalen is....."
Maar om even terug te komen op mijn orginele vraag.
"weet iemand hoe ik er voor kan zorgen dat het script een melding geeft op het moment dat het script nog gegevens aan het ophalen is....."
Je zou als er op de knop gelikt wordt een plaatje inladen:
Jquery:
Oldskool
Maar ik vindt zo'n oplossing hetzelfde als je kop in het zand steken, want je belast de server nu enorm voor iets super simpels.
Waarom zit je vast aan BLOB?
Jquery:
Code (php)
1
2
3
2
3
$('input.button[name="zoeken"].click(function() {
$('<img src="loader.gif" alt="Laden.." />').appendTo($('#divofzo'));
});
$('<img src="loader.gif" alt="Laden.." />').appendTo($('#divofzo'));
});
Oldskool
Code (php)
1
2
3
2
3
document.getElementById('zoekbutton').onclick = function() {
//hier moet je met DOM een afbeelding appenden ofzo
};
//hier moet je met DOM een afbeelding appenden ofzo
};
Maar ik vindt zo'n oplossing hetzelfde als je kop in het zand steken, want je belast de server nu enorm voor iets super simpels.
Waarom zit je vast aan BLOB?
Het is niet een knop waar je op klikt maar een textbox die je invult. zie code
Toevoeging op 24/01/2012 16:42:41:
Welke code tags moet ik ook alweer precies gebruiken om mijn code netjes weer te geven op de phphulp website
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<script type="text/javascript">
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Overzicht_Query.php?q="+str,true);
xmlhttp.send();
}
</script>
<script type="text/javascript" language="JavaScript">
document.forms['myform2'].elements['mytextfield2'].focus();
</script>
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Overzicht_Query.php?q="+str,true);
xmlhttp.send();
}
</script>
<script type="text/javascript" language="JavaScript">
document.forms['myform2'].elements['mytextfield2'].focus();
</script>
Toevoeging op 24/01/2012 16:42:41:
Welke code tags moet ik ook alweer precies gebruiken om mijn code netjes weer te geven op de phphulp website
Gewijzigd op 25/01/2012 09:28:04 door Piet Knaap
Code moet je in code tags zetten, je doet het bijna goed maar dan moet het met [ ] en daar tussen code.
Jij wilt iets maken waardoor, als iemand iets invult je hints toont in het zoekveld? Maar als je query extreem langzaam is dit niet echt gebruiksvriendelijk? Dan zul je toch eerst de query moeten optimaliseren lijkt me.
Ik weet ook niet of je showHint direct aanroept als iemand wat invult? Want dan krijg je behoorlijk wat AJAX requests, ik zou dan sowieso window.setTimeout() gebruiken die hem dan elke keer overschrijft.
Dus bijvoorbeeld (in jQuery omdat ik daar fan van ben :-) )
Heb het niet getest overigens, maar zoiets zou moeten werken.
Jij wilt iets maken waardoor, als iemand iets invult je hints toont in het zoekveld? Maar als je query extreem langzaam is dit niet echt gebruiksvriendelijk? Dan zul je toch eerst de query moeten optimaliseren lijkt me.
Ik weet ook niet of je showHint direct aanroept als iemand wat invult? Want dan krijg je behoorlijk wat AJAX requests, ik zou dan sowieso window.setTimeout() gebruiken die hem dan elke keer overschrijft.
Dus bijvoorbeeld (in jQuery omdat ik daar fan van ben :-) )
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<head>
<script type="text/javascript">
$(document).ready(function() {
$('#search').keyUp(function() {
window.setTimeout(function() {
$.get('url-naar-search.php?phrase=' + $('#search').val(), function(data) {
$('#search').val(data);
});
}, 1000);
});
});
</script>
</head>
<body>
<form method="post" action="">
<input type="text" id="search" />
</form>
</body>
</html>
<head>
<script type="text/javascript">
$(document).ready(function() {
$('#search').keyUp(function() {
window.setTimeout(function() {
$.get('url-naar-search.php?phrase=' + $('#search').val(), function(data) {
$('#search').val(data);
});
}, 1000);
});
});
</script>
</head>
<body>
<form method="post" action="">
<input type="text" id="search" />
</form>
</body>
</html>
Heb het niet getest overigens, maar zoiets zou moeten werken.
De reden waarom ik een BLOB gebruik is vanwege een "hoteditor_bbcode_ouput_editor" scriptje. Dit script vereist een BLOB veld type. Ik heb jouw voorbeeld geprobeerd maar helaas. Ik heb jouw script iets aangepast....
mytextfield2 = de naam van mijn input text box
Maar ik zie ook helemaal niets verschijnen als ik de code gebruik op mijn webpagina...
mytextfield2 = de naam van mijn input text box
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
Zoekopdracht: <input type="text" name="mytextfield2" tabindex ="1" value="<?php echo $q_zoekbox; ?>" onblur="this.value=!this.value?'Test ':this.value;"
onload="document.myform2.mytextfield2.focus();" onkeyup="showHint(this.value)" onfocus="showHint(this.value)"
size="20" />
<script type="text/javascript">
$(document).ready(function() {
$('#mytextfield2').keyUp(function() {
window.setTimeout(function() {
$.get('Overzicht_Query.php?q=' + $('#mytextfield2').val(), function(data) {
$('#mytextfield2').val(data);
});
}, 1000);
});
});
</script>
onload="document.myform2.mytextfield2.focus();" onkeyup="showHint(this.value)" onfocus="showHint(this.value)"
size="20" />
<script type="text/javascript">
$(document).ready(function() {
$('#mytextfield2').keyUp(function() {
window.setTimeout(function() {
$.get('Overzicht_Query.php?q=' + $('#mytextfield2').val(), function(data) {
$('#mytextfield2').val(data);
});
}, 1000);
});
});
</script>
Maar ik zie ook helemaal niets verschijnen als ik de code gebruik op mijn webpagina...
Gewijzigd op 25/01/2012 09:59:37 door Piet Knaap
Heb je wel het jQuery-framework ingeladen?
Waarom heb ik het jQuery framework nodig voor het bovenstaande. Het is toch Javascript?
Ja, met jQuery functies. jQuery is namelijk een JavaScript-framework.
En dat zei Kees ook:
En dat zei Kees ook:
Kees Schepers op 24/01/2012 16:54:48:
Dus bijvoorbeeld (in jQuery omdat ik daar fan van ben :-) )
Gewijzigd op 25/01/2012 11:48:17 door - Aar -



