Archief - ALGORITME: Preloader when querying database

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Dx-Solutions

Legacy Member
Hey,

Een vraagske, is er iemand van julie die ergens een codeke of vb heeft van bovenstaande?

ff kort uitleggen:

Als ik via m 'n webshop op een produkt klik, dan moet ik ff wachten alleer alles er staat. Ik doe namelijk een check of de link van foto's daadwerkelijk bestaat, daarom duurt het wel een paar seconden voor de pagina geladen is.

Vandaar dat ik graag een preloader zou hebben.

Iemand een idee of vb?

thx

zabulus

Legacy Member
mm ja volgens mij kan je beter:
- thumbnail aanmaken bij toevoegen van uw product in db (thumbnail is maar 5kb ofzo)
- bij vergroten grote versie weergeven

lijkt mij handiger dan een zo'n preloader, kvind da maar niks, voor flash websites kan ik nog wel begrijpen, maar op een webshop niet echt..

Dx-Solutions

Legacy Member
ff ter verduidelijking:
<%' check if url excists

Function UrlExists(sURL)
Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
on error resume next
objXMLHTTP.Open "HEAD", sURL, false
objXMLHTTP.setRequestHeader "User-Agent", Request.ServerVariables("HTTP_HOST")
objXMLHTTP.Send ""
If Err.Number <> 0 or objXMLHTTP.status <> 200 then URLExists = False Else URLExists = True
Set objXMLHTTP = nothing
End Function %>

Deze code gebruik ik om een url te testen.
De foto's komen van een andere website (site leverancier)
De url naar de foto wordt dynamisch gemaakt.
De leverancier heeft niet alle foto's per product, dus controleer ik of de url daadwerkelijk bestaat.

Als deze niet bestaat, dan wordt deze niet getoond en krijgt de klant geen dode link.

Probleem is dat ik dit real time wil checken, vandaag stat de foto er, morgen nie meer.

De preload is enkel wanneer de db gequeried wordt.

heb je op verschillende sites ...

Nu voeg ik me af hoe ik deze preloader aan de query kan koppelen.

servi

Legacy Member
Ik denk dat je effectief naar een AJAX-oplossing zult moeten zoeken.

edit : heb het eventjes uitgewerkt :

maak een aparte pagina voor die afbeelding te testen. Deze pagina moet als header Content-type: text/xml hebben.
Deze pagina aanvaard 1 parameter, zijnde url ( je hebt dan bijvoorbeeld http://www.server.be/afbeeldingchecker.asp?url=http://www.producent.be/foto.gif )
De code van die aparte pagina moet als uitvoer deze xml-syntax zijn :

<afbeelding>
http://www.producent.be/foto.gif
</afbeelding>


Deze pagina moet http://www.server.be/geenfoto.jpg teruggeven als het mislukt is om http://www.producent.be/foto.gif te laden.
geenfoto.jpg is hier dan een foto op jouw server die gewoon aantoont dat de foto niet kan geladen worden.


Aan de client-kant gebruik je dan volgende code :


zet dit tussen <head> en </head> :

<script type="text/javascript">

aanvrager = null;

function pasAfbeeldingAan() {
// schrijf antwoorden uit in src van afbeelding
afbeelding = document.getElementById('afbeelding');
knopen = aanvrager.responseXML.getElementsByTagName('afbeelding');
knoopwaarde = knopen[0].childNodes[0].nodeValue;
afbeelding.src = knoopwaarde;
}

function verwerkXMLEvent() {
/* If XMLHR object has finished retrieving the data */
if (aanvrager.readyState == 4) {
if (aanvrager.status == 200)
pasAfbeeldingAan();
else if (requester.status != 0) /* IE returns a status code of 0 on some occasions, so ignore this case */
alert("probleem bij aanvragen " + requester.statusText);
}

return true;
}


function vraagAfbeelding(url) {
/* Check for running connections */
if ( aanvrager != null && aanvrager.readyState != 0 && aanvrager.readyState != 4 )
aanvrager.abort();

try {
aanvrager = new XMLHttpRequest();
} catch(error) {
try {
aanvrager = new ActiveXObject("Microsoft.XMLHTTP");
} catch(error) {
return false;
}
}
aanvrager.onreadystatechange = verwerkXMLEvent;

// pas hier de URL van de aanvraag aan zodat hij wijst naar die pagina die de xml-uitvoer genereert
aanvrager.open("GET", "http://www.server.be/afbeeldingchecker.asp?url="+url );
aanvrager.send(null);

return true;
}
</script>


Op je pagina waar de afbeelding staat zet je dan volgende code :

<img src="http://www.server.be/geenfoto.jpg" id="afbeelding" />


waarbij geenfoto.jpg dan gewoon aanduidt dat er voor dat product geen foto is.


je body-tag moet je dan ook aanpassen naar :
<body onload="vraagAfbeelding(<%=URLVARIABELE%>)">

URLVARIABELE wijst dan naar de foto die je wil testen. ( in mijn voorbeeld is dat dus bijvoorbeeld http://www.producent.be/foto.jpg )

Dx-Solutions

Legacy Member
Hey Servi,

Thx voor je vb, kzal dit in de loop van deze week zeker ff checken.

greetz
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan