Hej! Varje gång nån klickar på dropdownen (öppnar, stänger, väljer ett alternativ etc.) så anropas destinationer(), och innehållet i listan ändras. Du behöver nog nån slags mekanism för att förhindra att innehållet byts ut när det väl har laddats första gången. Du bör nog också använda en annan event än just onclick(). Hej Lars, mycket bra utförlig presentation av ditt problem och utmaning. Jag hoppas att någon kan hjälpa dig fram här. Jag kan inte detta, men spontant brukar det vara så att om något inte blir valt så har man råkat skriva över valet igen (dvs laddat om listan men glömt att kontrollera om någon var vald precis före). Vet inte om det kan ge dig någon hint i detta scenario.. Hej Tomas! Hej, att hålla listan aktuell är nog smart att ha en "uppdatera" knapp så användaren kan få senaste version. Om man måste ha den online hela tiden kanske en annan lösning skulle implementeras så man inte på något sätt kan missuppfatta att det uppdaterats med nytt material? Så här har jag gjort nu. Hej igen! Hej! Hej Lars! Hej! Ok,Fylla SELECT med data från MySQL med AJAX
Jag vill att när jag klickar på rullgardinslistan fylla denna med data från MySQL med hjälp av AJAX.
Jag har kommit så här långt:
Här är rullgardinslista.php
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Rullgardinslista</title>
<link rel="stylesheet" type="text/css" href="rullgardinslista_mall.css">
</head>
<body>
<script type="text/javascript">
function destination() {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest(); }
else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } // kod för IE6, IE5
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{ document.getElementById("destination_id").innerHTML=xmlhttp.responseText;}
}
xmlhttp.open("GET","rullgardinslista_data.php",true);
xmlhttp.send();
}
</script>
<?php
echo'
<select name="destination_name"
id="destination_id"
class="select_resmal"
tabindex="-1"
onclick="destination()">
<option>Destination</option>
<option></option>';
echo'
</select>
';
?>
</body>
</html>
Här är rullgardinslista_data.php som hämtar data från databasen
<?php
require "config.php";
$Query_destination = mysql_query("SELECT * FROM tbldestinationer
ORDER BY destination
")
or exit( mysql_error());
while ($radd=mysql_fetch_assoc($Query_destination)){
echo' <option>'.$radd['destination'].'
</option>';
}
?>
Här är rullgardinslista_mall.css
.select_resmal {border: 1px solid;
border-color: #c9d3d6;
padding: 1px;
background-color: #ffffff;
font-size: 11px;
font-weight: normal;
color: #000000;
width: 136px;
height: 19px;
}
...och config.php
<?php
$server = "192.168.0.10";
$user = "***";
$password = "***";
$base = "***";
$version = "***";
$conn = mysql_connect($server, $user, $password) or die("Kunde inte ansluta4");
mysql_select_db($base);
mysql_set_charset('latin1',$conn);
setlocale(LC_MONETARY, "se_SE");
?>
Det som händer när jag klickar på pilen i rullgardinslistan är att den hämtar de 2 första posterna i databasen.
När jag sen väljer en av dessa så blir det alltid den första som blir vald.
Klickar jag sen på pilen en gång till så kommer alla poster i databasen fram som de ska. Men det blir ändå den första som blir vald oavsett vilken jag väljer.
Finns det någon som har tid att kika på detta?
Tack på förhand!
Lars Lantz
Sv: Fylla SELECT med data från MySQL med AJAX
Behöver du ens ladda innehållet mha ajax? Kan du inte lika gärna skicka med alla destinationer direkt när sidan laddas?
Hursomhelst, här är ett exempel på hur du skulle kunna göra.Sv: Fylla SELECT med data från MySQL med AJAX
//Pelle - pellesoftSv:Fylla SELECT med data från MySQL med AJAX
Idag har jag det så att alla destinationer skickas när sidan laddas. Det är ett problem eftersom det kan komma att ändras under tiden man sitter med sidan. Listan måste vara aktuell.
Man skulle kanske kunna ha en knapp som hämtar listan på nytt.
/LarsSv: Fylla SELECT med data från MySQL med AJAX
Sv:Fylla SELECT med data från MySQL med AJAX
Jag låter sidan ladda in "selecten" med data.
Klickar man på uppdatera-knappen så hämtar den datat igen.
Fungerar bra. Men: Å, Ä och Ö blir konstiga tecken när man laddar in med uppdatera-knappen.
Varför blir det så?
/Lars
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Rullgardinslista</title>
<link rel="stylesheet" type="text/css" href="rullgardinslista_mall.css">
</head>
<body>
<script type="text/javascript">
function destination() {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest(); }
else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } // kod för IE6, IE5
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{ document.getElementById("destination_id").innerHTML=xmlhttp.responseText;}
}
xmlhttp.open("GET","rullgardinslista_data.php",true);
xmlhttp.send();
}
</script>
<?php
echo'
<select name="destination_id"
id="destination_id"
class="select_resmal"
tabindex="-1"
onchange="document.getElementById(\'resmal1\').value=this.options[this.selectedIndex].value;
document.getElementById(\'destination_id\').value=\'Destination\'">
<option>Destination</option>
<option></option>';
require "config.php";
$Query_destination = mysql_query("SELECT * FROM tbldestinationer
ORDER BY destination
")
or exit( mysql_error());
while ($radd=mysql_fetch_assoc($Query_destination)){
echo' <option>'.$radd['destination'].'
</option>';
}
echo'
</select>
<input type="text"
name="resmal1"
id="resmal1"
tabindex="1">
<button type="button" onclick="destination()">Uppdatera</button>
';
?>
</body>
</html>
Sv: Fylla SELECT med data från MySQL med AJAX
Jag löste teckenproblemet själv genom att ändra allt till UTF-8.
/LarsSv: Fylla SELECT med data från MySQL med AJAX
Helt perfekt blev det faktiskt inte. Jag måste skriva å t.ex. i alla echo.
Om man sen har t.ex.
document.getElementById(\'fel_bestallningsdatum\').value=\'Skriv enl. ååååmmdd\';
så blir det konstiga tecken på åååå. Ändrar man det till:
document.getElementById(\'fel_bestallningsdatum\').value=\'Skriv enl. ååååmmdd\';
så skriver den ååååmmdd i klartext.
Borde man för det första inte slippa att skriva å i alla echo?
Sen spelar det ingen roll vad jag skriver i javascriptet enligt ovan.
/Lars
Sv:Fylla SELECT med data från MySQL med AJAX
Har du testat att lägga till meta-taggen (inom <head></head>):<meta http-equiv="content-type" content="text/html; charset=utf-8">
Annars kan du testa öppna källfilerna i t.ex. Notepad och välj "Arkiv" > "Spara som"
- och så väljer du "UTF-8" i drop-downlistan bredvid spara knappen.
Sv: Fylla SELECT med data från MySQL med AJAX
Metataggen finns redan och jag har ändrat i databasen till utf8_swedish_ci.
Så här ser det ut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Titel</title>
<link rel="stylesheet" type="text/css" href="mall.css">
</head>
<body>
/Lars
Sv:Fylla SELECT med data från MySQL med AJAX
Kan du testa öppna rullgardinslista_data.php, samt visningssidan i Notepad och välja "Spara som" + UTF-8 ?
Det har fungerat för mig vid vissa tillfällen.