Avatar billede MadsDue Nybegynder
22. juni 2011 - 18:38 Der er 18 kommentarer og
1 løsning

AJAX

Hej

Jeg er lige begyndt på at lære mig noget AJAX. Jeg har fundet guide her:

http://www.w3schools.com
og jeg er kommet til følgende:

http://www.w3schools.com/php/php_ajax_database.asp

Hvor man skal hente de valgte informationer fra en Db.

Jeg har selv prøvet at lave den funktion, men jeg gør et eller andet galt,ved bare ikke hvad. så håber der er en som kan hjælpe mig.

Det her har jeg lavet:

test2.php

<html>
<head>
<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  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","test.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<select name="Navn" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Mads</option>
<option value="2">Pernille</option>
</select>
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>

</body>
</html>


test.php

<?php
$q=$_GET["q"];

$con = mysql_connect("localhost", "root", "");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("loginsystem", $con);

$sql="SELECT * FROM brugere WHERE Navn = '".$q."'";

$resultat = mysql_query($sql);

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Personnummer</th>
<th>Adresse</th>
<th>Postnummer</th>
<th>By</th>
<th>Email</th>
<th>Telefonnr</th>
<th>brugernavn</th>
<th>adgangskode</th>

</tr>";

while ($post = mysql_fetch_array($resultat)) {
 
  echo "<tr>";
  echo "<td>" . $post['Navn'] . "</td>";
  echo "<td>" . $post['Efternavn'] . "</td>";
  echo "<td>" . $post['Kon'] . "</td>";
  echo "<td>" . $post['Personnummer'] . "</td>";
  echo "<td>" . $post['Adresse'] . "</td>";
  echo "<td>" . $post['Nr'] . "</td>";
  echo "<td>" . $post['Postnummer'] . "</td>";
  echo "<td>" . $post['By'] . "</td>";
  echo "<td>" . $post['Email'] . "</td>";
  echo "<td>" . $post['Telefonnr'] . "</td>";
  echo "<td>" . $post['brugernavn'] . "</td>";
  echo "<td>" . $post['adgangskode'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>
Avatar billede arne_v Ekspert
22. juni 2011 - 19:57 #1
Jeg vil anbefale dig at finde et AJAX JavaScript bibliotek fremfor at kode det helt fra bunden af.
Avatar billede arne_v Ekspert
22. juni 2011 - 19:58 #2
Derudover er jeg noget skeptisk overfor brug af HTML som transport format.
Avatar billede MadsDue Nybegynder
22. juni 2011 - 20:05 #3
okay. som sagt så er jeg lige begyndt at arbejde med AJAX.

Men for er du skeptisk med HTML?

Og

Hvordan og hvad er et AJAX JavaScript bibliotek?
Avatar billede olsensweb.dk Ekspert
22. juni 2011 - 20:14 #4
#1 er det ikke lidt overkill, så meget js er der heller ikke, og sætte sig ind i nyt lib såsom jquery, er vist at skyde gråspurve med kanoner, til den smugle, med mindre man i forvejen anvender jquery

#2 helt enig, jeg kan anbefale transport formatet JSON
Avatar billede MadsDue Nybegynder
22. juni 2011 - 20:26 #5
okay. men jeg kunne godt tænke mig at lærer noget mere om det, samtidigt med at jeg laver min hjemmeside.

Det jeg har lavet om AJAX ind til videre er fra:
http://www.w3schools.com

Men jeg har ikke hør om transport formatet, så det ved jeg heller ikke hvad er.

eller har i noget andet jeg kan læse?
Avatar billede arne_v Ekspert
22. juni 2011 - 20:31 #6
Jeg ville bruge XML eller JSON fremfor HTML.
Avatar billede MadsDue Nybegynder
22. juni 2011 - 20:33 #7
okay. hvorfor?

og har i et link med noget info om dem?
Avatar billede arne_v Ekspert
22. juni 2011 - 20:35 #8
Der er masser af AJAX JavaScript biblioteker.

jQuery er et af dem, men der er mange andre.

ExtJS, Prototype & script.aculo.us, YUI etc..
Avatar billede arne_v Ekspert
22. juni 2011 - 20:43 #9
XML og JSON er data. HTML er praesentation.

Hvis du henter data og formaterer paa siden saa er baade vedligehold og genbrug nemmere.
Avatar billede arne_v Ekspert
22. juni 2011 - 20:46 #10
Hvis man skal arbejde paa et JavaScript library, saa giver det god mening at proeve at lave sit eget fra bunden af.

Men skal man lave en web app, saa giver det mening at goere ligesom alle andre: bruge et faerdigt lib.
Avatar billede MadsDue Nybegynder
22. juni 2011 - 20:47 #11
okay.. jeg prøver at læser videre på

xml

json

AJAX JavaScript bibliotek
Avatar billede MadsDue Nybegynder
22. juni 2011 - 20:48 #12
web app

hvad er det?
Avatar billede arne_v Ekspert
22. juni 2011 - 20:53 #13
web application

(=dynamisk web side)
Avatar billede olsensweb.dk Ekspert
24. juni 2011 - 17:31 #14
i din test2.php overfører du bugerens id
i dette:
<option value="1">Mads</option>
<option value="2">Pernille</option>


dvs du overfører blank, 1 eller 2.

i din test.php søger du på feltet navn, men du sender id over :(.
$sql="SELECT * FROM brugere WHERE Navn = '".$q."'";


hvis ovenstående sql sætning skal virker, skal du overfører navnet
dvs i test2.php
<option value="Mads">Mads</option>
<option value="Pernille">Pernille</option>


alternativt lav et felt i din db, der hedder ID, og lav din sql sætning om til
$sql="SELECT * FROM brugere WHERE ID = '".$q."'";


jeg vil klart anbefale du laver et felt der hedder ID.

når dette virker så lav det om så det anvender XML eller JSON, i stedet for HTML til datatransport format, hvilke er skrevet tidligere i tråden.

en anden ting du har i din tabel et felt der hedder by, det er et reseveret ord i sql, ændre det til feks bynavn.
men hvorfor registrerer bynavn i tabellen ??, du har jo en anden db med postnummer bynavn
Avatar billede MadsDue Nybegynder
25. juni 2011 - 16:23 #15
I stedet for en drop down kan man så ikke bare få en text boks som de skal skrive i
?
Avatar billede olsensweb.dk Ekspert
25. juni 2011 - 17:19 #16
i din test2.php
udskift
<select name="Navn" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Mads</option>
<option value="2">Pernille</option>
</select>


med
<input id = "Navn" type="text" onblur="showUser(this.value)">


og i din test.php
skal din sql skal se sådan ud:
$sql="SELECT * FROM brugere WHERE Navn = '".$q."'";

hvilken den gør
Avatar billede MadsDue Nybegynder
25. juni 2011 - 17:44 #17
ronols angiv svar
Avatar billede MadsDue Nybegynder
25. juni 2011 - 17:44 #18
og tak for hjælpen, det hjalp mig med at komme en del videre. tak
Avatar billede olsensweb.dk Ekspert
25. juni 2011 - 18:13 #19
svar
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
Kurser inden for grundlæggende programmering

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