Avatar billede vante Nybegynder
11. februar 2009 - 23:27 Der er 1 kommentar og
1 løsning

Tjek efter varenr i db automatisk

Hej Alle

Jeg har et lagersystem hvor jeg godt kunne tænke mig noget hjælp til en funktion. den skal fungere således at i det øjeblik brugeren forlader en tekstbox, skal den gå ned i databasen og finde informationer om det indtastede varenr brugeren har angivet. Jeg havde forstillet mig, at selve aktivering blev lavet i javascript og selv den del der henter informationerne i databasen, blev lavet i php.

Pft
Vante

P.s
Er det bare mig der ikke kan finde nogen søgefunktion under spørgsmål/svar delen, ligesom i det gamle design?
Avatar billede psychopixi Nybegynder
11. februar 2009 - 23:42 #1
For at gennemføre det du gerne vil have må du bruge noget der kaldes AJAX.

Jeg har et lidt gammelt eksempel liggende.

Smid dette i headeren af din side:
<script type="text/javascript">
var xmlHttp

function showHint(str){
    if (str.length==0){
      document.getElementById("txtHint").innerHTML="";
      return;
    }
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null){
      alert ("Your browser does not support AJAX!");
      return;
    }
    var url="gethint.php";
    url=url+"?q="+escape(str);
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}


function stateChanged() {
    if (xmlHttp.readyState==4){
        document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
    }
}

function GetXmlHttpObject(){
    var xmlHttp=null;
    try{
      // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
    }
    catch (e){
      // Internet Explorer
      try{
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e){
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    return xmlHttp;
}
</script>

Smid så følgende kode ind et vilkårligt sted i din body-section:
<input type="text" id="txt1" onblur="showHint(this.value)"/> <span id="txtHint"></span>

Den henter så info fra 'gethint.php' hvor den sender hvad der står i input feltet i $_GET["q"].

Du kan altså i 'gethint.php' bruge en kode i stil med:
<?php
$vare = $_GET["q"];
$query = "SELECT * FROM `din_tabel` WHERE `vare` = '$vare'";
$result = mysql_query($query);
while($r=mysql_fetch_array($result)){
    $varenummer = $r["varenummer"];
    echo $varenummer;
}
?>


Note: du skal nok både have en god viden inden for JavaScript og PHP for at forstå mine eksempler og bruge dem aktivt.
Avatar billede olebole Juniormester
12. februar 2009 - 09:37 #2
<ole>

Det er en oplagt Ajax-opgave, men pas på - for det er ganske vanskeligt at finde troværdige oplysninger om Ajax på nettet.

Vigtigt er det i hvertfald at huske, man _aldrig_ formaterer data som HTML på serveren, før man sender dem tilbage til klienten. Data formateres som JSON eller XML og indsættes i siden med DOM. Ellers spilder man enorme mængder server-resourcer.

I den forbindelse skal det også nævnes, at innerHTML er et levn fra midthalvfemsernes dårlige browsere - at den aldrig har været valid i forhold nogen standard - samt at brugen ofte medfører en række seriøse uhensigtsmæssigheder i forbindelse med moderne webkode.

Jeg har skrevet en XMLHttpRequest wrapper, som i al beskedenhed er den bedste og mest opdaterede, jeg har set på WWW:
    http://dengodekode.dk/artikler/ajax/xmlhttprequest_wrapper.php

- og i denne tråd har jeg vist et par eksempler på brugen, samt brugen i forbindelse med PHP/JSON:
    http://www.eksperten.dk/spm/817625

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester