Avatar billede microjet Nybegynder
06. maj 2009 - 13:39 Der er 7 kommentarer og
1 løsning

Kan ikke vælge data fra listbox!

Hejsa

Jeg er helt ny i PHP!

Jeg kan ikke vælge data i min listbox... jeg får kun indexet "$i" retur!

Hvad er mit problem?

´Når jeg klikker på select knappen får jet ikke værdien jeg vælger i selve listbox'en men kun selve index'et "$i"

eks:

You have selected 5

der skulle have stået

You have selected 8813... som er en af værdierne i databasen!


Her lidt kode:
<html>
<body>
<?
if(isset($_POST["lbID"]))
{
echo "You have selected ";
echo $_POST["lbID"];
}

else
{
$con = mysql_connect("www.xxxxx.dk","xxxxxx","xxxxxx");//åbner database

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

  mysql_select_db("xxxxxx", $con);
  $sql="SELECT DISTINCT ID FROM Devices";
  $result = mysql_query($sql);
  $options="";
  $i = 1;

  while ($row=mysql_fetch_array($result))
  {
    $ID=$row["ID"];
    $options.="<OPTION VALUE=\"$i\">".$ID;
    //$options.="<OPTION VALUE=\"$i\">"$row["ID"];

    $i++;
    }
   
  mysql_free_result($result);
  mysql_close($con);
?>


<form method=post action=select_id.php>
<SELECT name ="lbID" size = "10">
<?=$options?>
</select> <br>
<input type=submit value="Select">
</form>

<?
}
?>


</body>
</html>
Avatar billede kinderaeg Nybegynder
06. maj 2009 - 13:50 #1
For det første skal du skrive din kode rigtigt (husk altid doctype). Dine option-tags skal lukkes og så er det value, fra din valgte option, der returneres, og efter som det er en counter, så er det jo meget naturligt at du får "index'et" tilbage. Hvis du vil ha' $ID retur i din post, skal du sætte denne værdi ind som value i din option.
Avatar billede microjet Nybegynder
06. maj 2009 - 15:46 #2
Som sagt er jeg ny i PHP

Hvad mener du med doctype?

Jeg har prøvet at sætte $ID ind istedet for $i, men det virker som om den forventer in tal værdi. Lige nu udfyldes listboksen korrekt!

Hvordan lukker jeg mine option tags?
Avatar billede trinefe Nybegynder
06. maj 2009 - 17:12 #3
Du lukker dine option tags med </option>

Undskyld men jeg kan simpelthen ikke overskue din kode? Hvad er det du gerne vil have den til at gøre?

$options="";
Her bliver en variablen options sat til 'ingenting'? ( og senere giver du den så en ny værdi?)

$i = 1;
Hvad vil du med $i som stiger én for hver gang while bliver kørt igennem? - Det er sikkert den der giver dig '5' i dit eksempel. Hvis du i stedet skriver $ID der burder det give dig det rigtige?
Avatar billede trinefe Nybegynder
06. maj 2009 - 17:12 #4
Nå ja det sidste havde du vist fået afklaret =)
Avatar billede microjet Nybegynder
06. maj 2009 - 20:12 #5
Jeg fylder data i listboxen fra en tabel i databasen

herefter skal man kunne vælge en af værdierne i listboxen og sende værdien til et andet script
Avatar billede microjet Nybegynder
06. maj 2009 - 22:45 #6
Hejsa

Tak for din hjælp indtil videre. Hvis jeg "bare" erstatter $i med $ID, virker det slet ikke, men jeg har fundet løsningen efter mange timers afprøvning med utallige kombinationer. Jeg kan bare ikke rigtig forstå hvad der sker.

$result er en tabel i databasen der løbes igennem og én efter én puttes data i listbox'en.

Hvordan kan det være at der SKAL være et punktum efter $options i while løkken, før alle værdier kommer med i listbox'en?????
Ellers er det kun den sidste!

Jeg har prøvet at læse mig frem til hvad den "." syntax gør, men uden held.


Her er et uddrag af koden der virker, se while løkken:


mysql_select_db("xxxxxxxxx", $con);
  $sql="SELECT DISTINCT ID FROM Devices";
  $result = mysql_query($sql);

while ($row=mysql_fetch_array($result))
  {
    $ID=$row["ID"];
    $options.="<option value=\"$ID\">$ID</option>";
    }
  mysql_free_result($result);
  mysql_close($con);
?>

<form method=post action=select_id.php>
<SELECT name ="lbID" size = "10">
<?=$options?>
</select> <br>
<input type=submit value="Select">
</form>
Avatar billede dkfire Nybegynder
06. maj 2009 - 22:49 #7
Ellers overskrive $options hver gang while-løkken løber igennem.
Med punktum tilføjer du data til variablen.
Avatar billede microjet Nybegynder
18. januar 2011 - 00:19 #8
lukket
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

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