Avatar billede bas Forsker
09. januar 2004 - 21:42 Der er 22 kommentarer og
1 løsning

Dropdown i php

Hej

Jeg skal have lavet en dropdown, som indeholder et antal byer.
Alt efter, hvilken by der bliver valgt, skal sql'en søge efter de poster der er under den pågældende by.
Det må være noget med select....where...=......

(Jeg ved ikke, om det er smartest, at dropdown menuen bilver bygget på baggrund af noget sql)

I første om gang kunne jeg godt tænke mig at se et simpelt eksempel på, hvordan man kan bygge en almindelig drop down sammen med en forespørgsel på det valgte.

/Martin
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 21:52 #1
<html>
<body>
<?
$conn = mysql_connect("host", "bruger", "pass");
mysql_select_db("database");

$result = mysql_query("SELECT * FROM tabel WHERE by='$_POST[by]");

//udskrift
?>
<form id="form" method="post" action="#">
<select name="by"  onChange="document.getElementById('form').submit();>
<option value="Holstebro">Holstebro</option>
<option value="Herning">Herning</option>
<option value="Ikast">Ikast</option>
</select>
</form>
</body>
</html>
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 21:54 #2
Rettelse:

<html>
<body>
<?
if($_POST[by])
{
    $conn = mysql_connect("host", "bruger", "pass");
    mysql_select_db("database");
   
    $result = mysql_query("SELECT * FROM tabel WHERE by='$_POST[by]");
   
    //udskrift
}
?>
<form id="form" method="post" action="#">
<select name="by"  onChange="document.getElementById('form').submit();>
<option value="Holstebro">Holstebro</option>
<option value="Herning">Herning</option>
<option value="Ikast">Ikast</option>
</select>
</form>
</body>
</html>
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 21:59 #3
- mangler vidst et " tegn i slutningen af  <select> linien
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 22:15 #4
Vil du lave en dropdown boks ud fra en database forespørgsel, kan du gøre:

<?
$conn = mysql_connect("host", "bruger", "pass");
mysql_select_db("database");

$query = mysql_query("SELECT by FROM tabel");
?>

<select name="by">

<?
while($row = mysql_fetch_array($query))
{
  echo "<option value='$row[by]'>$row[by]</option>";
}
?>
</select>
Avatar billede bas Forsker
09. januar 2004 - 22:40 #5
Jeg får

Notice: Use of undefined constant byvalg - assumed 'byvalg' in c:\inetpub\wwwroot\ovelokaler2004\byvalg1.php on line 6

Notice: Undefined index: byvalg in c:\inetpub\wwwroot\ovelokaler2004\byvalg1.php on line 6

i jacobclausens andet svar.
Jeg har erstattet "by" med "byvalg"

Skal der så stå onChange="document.getElementByvalgId('form').submit();"> ?

Jeg skal vel lave en form for mysql_fetch_array for at vise posterne ?

/Martin
Avatar billede bas Forsker
09. januar 2004 - 22:42 #6
ok, det erførste var vist fordi der manglede '' ved if($_POST[by])
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 22:47 #7
virker det ?
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 22:49 #8
Nej getElementByID er en funktion i JavaScript og det skal den hedde uanset hvad, det eneste du kan komme ud for at skulle rette er form - det er navnet på formen
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 22:51 #9
while($row = mysql_fetch_array($result))
{
  echo $row[tabel] . "<br";
}

Vil du skrive resultatet af din forespørgsel på en liste
Avatar billede bas Forsker
09. januar 2004 - 22:58 #10
Jeg får:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\inetpub\wwwroot\ovelokaler2004\byvalg1.php on line 20

Linie 20:  while($row = mysql_fetch_array($result))


Koden i sin helhed:

<html>
<body>
<?
include ("conn.php");


function query($sql){
    $result = mysql_query($sql) or die("MYSQL-error:<br>Query: $sql<br>\n Error: ".mysql_errno().": ".mysql_error());
    return $result;
}



if($_POST['byvalg'])
{
 
   
    $result = mysql_query("SELECT * FROM tabel WHERE byvalg='$_POST[byvalg]");
   
    while($row = mysql_fetch_array($result))
{
  echo $row[tabel] . "<br";
}


    // Kør så igennem for hver række
//while ($raekke = mysql_fetch_array($result)) {


//echo  $raekke[0];
   
    //udskrift

}
?>
<form id="form" method="post" action="#">
<select name="byvalg"  onChange="document.getElementById('form').submit();">
<option value="Holstebro">Holstebro</option>
<option value="Herning">Herning</option>
<option value="Ikast">Ikast</option>
</select>
</form>
</body>
</html>
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 23:01 #11
Det er lidt svært at hjælpe dig, med alt det ekstra kode du har tilføjet.
Avatar billede bas Forsker
09. januar 2004 - 23:02 #12
ok, jeg kigger lige på det
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 23:04 #13
Dette virker fint for mig. Jeg vælger en by og får resultatet skrevet ud på en liste:

<html>
<body>
<?
if($_POST[by])
{
    $conn = mysql_connect("host", "bruger", "pass");
    mysql_select_db("database");
   
    $result = mysql_query("SELECT * FROM tabel WHERE by='$_POST[byvalg]");
   
    while($row = mysql_fetch_array($result))
    {
        echo $row[by] . "<br>";
    }
   
}
?>
<form id="form" method="post" action="#">
<select name="byvalg" onChange="document.getElementById('form').submit();">
<option value="Holstebro">Holstebro</option>
<option value="Herning">Herning</option>
<option value="Ikast">Ikast</option>
</select>
</form>
</body>
</html>
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 23:06 #14
Der skal selvfølgelig stÅ:

if($_POST[byvalg])
Avatar billede bas Forsker
09. januar 2004 - 23:07 #15
Jeg får:

Notice: Undefined index: byvalg ved if($_POST['byvalg'])


Når jeg vælger en by får jeg:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 23:09 #16
Skyldes nok at du har en nyere php version end den jeg kører med, for der er absolut ingen problemer her hos mig
Avatar billede bas Forsker
09. januar 2004 - 23:10 #17
ok, nu er der kun:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Avatar billede bas Forsker
09. januar 2004 - 23:17 #18
ok, der manglede en '  efter '$_POST[byvalg]'.

Nu står der: Notice: Undefined index: tabel ved  echo $row['tabel'] . "<br";

(den brokker sig, hvis der ikke er '' omkring tabel).
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 23:31 #19
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 23:32 #20
Det med at der SKAL være " rundt om er fordi du bruger den aller nyeste version, det er ikke til at finde ud af mere.
Avatar billede bas Forsker
09. januar 2004 - 23:37 #21
Ok fedt!

Nu virker det.
- bare ikke ved holstebro

Jeg gætter på, at det er fordi det er den øverste ?

/Martin
Avatar billede bas Forsker
09. januar 2004 - 23:39 #22
Til jacobclausen

Jeg siger mange tak for dine svar og din tålmodighed :-)

Hilsen Martin
Avatar billede jakobclausen Nybegynder
09. januar 2004 - 23:41 #23
bas >> Ja nemlig, derfor jeg har lavet en "vælg by" der er selected.

Så lidt, jeg takker også!
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