Avatar billede 44fire44 Nybegynder
23. marts 2005 - 03:14 Der er 26 kommentarer og
1 løsning

Trække data ud fra database i en <option>

Hej Eksperter...

JEg har lavet en form, hvor jeg skal have et "valg af klubber" ind i en <option>-boks - jeg har egentligt lavet den, men kan ikke finde fejlen(e)...


<html><head><title>Untitled</title></head><body>
<?php

$db = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("get-ready", $db);

$result = mysql_query("SELECT 'klubber', name FROM ".$db)
      or die( "Unable to select. Reason: ".mysql_error());

if ( mysql_num_rows($result) == 0 ) {
    echo "Der blev ikke fundet noget i databasen.<br>";
} else {
        // <form> og </form> kommando omkring
        // hvis scriptet ikke er implanteret i formen endnu
    echo "<FORM METHOD=POST ACTION=<? echo $PHP_SELF; ?>> <select name='valg'>\n";
    while  ($row = mysql_fetch_array($result))  {
        echo "  <option value='" .$row['klubber'] ."'>".$row['name'] ."</option>\n";
    }
    echo "</select></form>\n";
}

mysql_close();

?></body></html>
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 03:20 #1
btw. scriptet kan findes her: www.get-ready.dk/option.php
Avatar billede michael_stim Ekspert
23. marts 2005 - 03:33 #2
$result = mysql_query("SELECT klubber, name FROM tabelnavn)
      or die( "Unable to select. Reason: ".mysql_error());
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 04:04 #3
dooh.... ;)
Avatar billede jansen82 Nybegynder
23. marts 2005 - 04:05 #4
kan det ikke have noget ad gøre med dette:

ACTION=<? echo $PHP_SELF; ?>>

du er jo inde i echo, så skal du da ikke have <? ?> igen eller...?!?
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 04:05 #5
skyggerne er vidst ved at blive lange ;) - tror det er ved at være senge tid :D

tester lige om det virker i formen jeg lavede tidligere :D (ja, der bliver kodet i aften ;))

vender tilbage om lidt...
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 04:23 #6
efter lidt modificeringer virker det perfekt ;)

mange tak endnu engang :D
- og god påske!
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 04:23 #7
bar esmit et svar, Michael, så får du points
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 04:28 #8
lige én ting... - nu har jeg hele koden, som i og for sig virker perfekt

men hvordan gemmer jeg dataen jeg henter i "<option>"-boksen i brugerprofilen? (altså i dette tilfælde, "name" i Klubber skal gemmes i "klub" i Brugersys)

<HTML>
<HEAD><TITLE>Brugersystem</TITLE></HEAD>
<BODY>
<?
$db = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("get-ready", $db);
if($skriv){
mysql_query("INSERT INTO brugersys (nick, navn, adresse, postnr, city, email) VALUES ('$nick', '$navn', '$adresse', '$postnr', '$city', '$email') SELECT nummer, name FROM klubber");
}
?>
<table><tr><td>

<FORM METHOD=POST ACTION=<? echo $PHP_SELF; ?>>
<INPUT TYPE=hidden NAME=skriv VALUE=1>
Klub:</td><td>
<?php

$hent = mysql_query("SELECT nummer, name FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());

{
    echo "<select name='valg'>\n";
    while  ($row = mysql_fetch_array($hent))  {
        echo "  <option value='" .$row['klubber'] ."'>".$row['name'] ."</option>\n";
    }
    echo "</select>\n";
}


?>
</td></tr>
<tr><td>Nickname:</td><td><INPUT TYPE=text NAME=nick></td></tr>
<tr><td>Navn:</td><td><INPUT TYPE=text NAME=navn></td></tr>
<tr><td>Adresse:</td><td><INPUT TYPE=text NAME=adresse></td></tr>
<tr><td>Postnr:</td><td><INPUT TYPE=text NAME=postnr maxlength=4></td></tr>
<tr><td>By:</td><td><INPUT TYPE=text NAME=city></td></tr>
<tr><td>E-mail:</td><td><INPUT TYPE=text NAME=email></td></tr>
<tr><td><INPUT TYPE=submit VALUE="send"></td></tr>
</FORM>
</table>
<br><br><hr><br><br>
<?
$foresp = mysql_query("SELECT brugernummer, nick, navn, adresse, postnr, city, email FROM brugersys ORDER BY brugernummer DESC")or die(mysql_error());
while($data = mysql_fetch_assoc($foresp)){
echo "<table><tr><td>Brugernummer:</td><td> ". $data[brugernummer] ."</td></tr>";
echo "<tr><td>Nickname:</td><td> ". $data[nick] ."</td></tr>";
echo "<tr><td>Navn:</td><td> ". $data[navn] ."</td></tr>";
echo "<tr><td>Adresse:</td><td> ". $data[adresse] ."</td></tr>";
echo "<tr><td>Postnr:</td><td> ". $data[postnr] ."</td></tr>";
echo "<tr><td>By:</td><td> ". $data[city] ."</td></tr>";
echo "<tr><td>E-mail:</td><td> ". $data[email] ."</td></tr></table><br><hr><br>";
}
?>


</div>
</BODY>
</HTML>
Avatar billede rednex Nybegynder
23. marts 2005 - 08:34 #9
Jeg vil foreslå at du laver denne her om:
echo "  <option value='" .$row['klubber'] ."'>".$row['name'] ."</option>\n"

til
echo "  <option value='" .$row['nummer'] ."'>".$row['name'] ."</option>\n"

Jeg går ud fra at nummer er et unikt ID for hver klub.

Hvis du gemmer klubbens ID i stedet for selve navnet i profilen, slipper du for at skulle rette alle poster som har med den klub at gøre hvis der f.eks. har sneget sig en tastefejl ind eller klubben skifter navn. Når du så skal hente profilen igen kan du lave et join i din SQL sætning, og på den måde få klubnavnet ud som om det stod skrevet i posten.
Avatar billede michael_stim Ekspert
23. marts 2005 - 08:43 #10
Du kan kun hente en værdi fra en dropdownbox. Men du kan sætte begge værdier i value og så splitte dem.

echo "  <option value='" .$row['klubber'] ."_". $row['name'] ."'>".$row['name'] ."</option>\n";

Og så hente værdierne med explode():

$ddString=$_POST['valg'];
$ddSingelvaerdi=explode('_',$ddString);
ddSingelvaerdi[0]; //første værdi
ddSingelvaerdi[1]; //anden værdi
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 12:38 #11
det kan ses her: http://get-ready.dk/brugersystem.php

altså, ja, "klubber" har fået sin egen tabe, hvor der er en "auto_increment" på før "name", nemlig "nummer"

michael: kan du forklare første/anden værdi i dit sidste indlæg? - er rimlig ny til PHP ;) - altså, jeg forstår godt det første, men hvad er det med værdier?
Avatar billede michael_stim Ekspert
23. marts 2005 - 12:47 #12
værdierne i selecten (value)
ddSingelvaerdi[0]; //$row['klubber']
ddSingelvaerdi[1]; //$row['name']
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 14:26 #13
hvordan skal koden så se ud? - altså, noget lignende

<?php

$hent = mysql_query("SELECT nummer, name FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());

{
    echo "<select name='valg'>\n";
    while  ($row = mysql_fetch_array($hent))  {
        echo "  <option value='" .$row['klubber'] ."_". $row['name'] ."'>".$row['name'] ."</option>\n";
    }
    echo "</select>\n";
}
$ddString=$_POST['valg'];
$ddSingelvaerdi=explode('_',$ddString);
ddSingelvaerdi[0]; //første værdi
ddSingelvaerdi[1]; //anden værdi

?>


Altså, jeg kan jo sagtens, som rednex nævner nøjes med at hente værdien ud fra boksen...
Avatar billede michael_stim Ekspert
23. marts 2005 - 14:46 #14
Hov, der skal jo også lidt penge på de sidste variabler ;o)
$ddString=$_POST['valg'];
$ddSingelvaerdi=explode('_',$ddString);
$ddSingelvaerdi[0]; //første værdi
$ddSingelvaerdi[1]; //anden værdi
Avatar billede michael_stim Ekspert
23. marts 2005 - 14:50 #15
Og så bliver din $row['klubber'] til $ddSingelvaerdi[0] og $row['name'] til $ddSingelvaerdi[1]. Og du kan göre med dem hvad du vil.
SELECT * FROM $ddSingelvaerdi[0] WHERE navn = '$ddSingelvaerdi[1]'
osv osv.
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 15:37 #16
Hehe - vil det så se således ud?


<HTML>
<HEAD><TITLE>Brugersystem</TITLE></HEAD>
<BODY>
<?
$db = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("get-ready", $db);
if($skriv){
mysql_query("INSERT INTO brugersys (nick, navn, adresse, postnr, city, email) VALUES ('$nick', '$navn', '$adresse', '$postnr', '$city', '$email') SELECT * FROM $ddSingelvaerdi[0] WHERE navn = '$ddSingelvaerdi[1]'");
}
?>
<table><tr><td>

<FORM METHOD=POST ACTION=<? echo $PHP_SELF; ?>>
<INPUT TYPE=hidden NAME=skriv VALUE=1>
Klub:</td><td>
<?php

$hent = mysql_query("SELECT nummer, name FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());

{
    echo "<select name='valg'>\n";
    while  ($row = mysql_fetch_array($hent))  {
        echo "  <option value='" .$row['klubber'] ."_". $row['name'] ."'>".$row['name'] ."</option>\n";
    }
    echo "</select>\n";
}
$ddString=$_POST['valg'];
$ddSingelvaerdi=explode('_',$ddString);
$ddSingelvaerdi[0]; //første værdi ($row['klubber'])
4ddSingelvaerdi[1]; //anden værdi ($row['name'])

?>
</td></tr>
<tr><td>Nickname:</td><td><INPUT TYPE=text NAME=nick></td></tr>
<tr><td>Navn:</td><td><INPUT TYPE=text NAME=navn></td></tr>
<tr><td>Adresse:</td><td><INPUT TYPE=text NAME=adresse></td></tr>
<tr><td>Postnr:</td><td><INPUT TYPE=text NAME=postnr maxlength=4></td></tr>
<tr><td>By:</td><td><INPUT TYPE=text NAME=city></td></tr>
<tr><td>E-mail:</td><td><INPUT TYPE=text NAME=email></td></tr>
<tr><td><INPUT TYPE=submit VALUE="send"></td></tr>
</FORM>
</table>
<br><br><hr><br><br>
<?
$foresp = mysql_query("SELECT brugernummer, nick, navn, adresse, postnr, city, email FROM brugersys ORDER BY brugernummer DESC")or die(mysql_error());
while($data = mysql_fetch_assoc($foresp)){
echo "<table><tr><td>Brugernummer:</td><td> ". $data[brugernummer] ."</td></tr>";
echo "<tr><td>Nickname:</td><td> ". $data[nick] ."</td></tr>";
echo "<tr><td>Navn:</td><td> ". $data[navn] ."</td></tr>";
echo "<tr><td>Adresse:</td><td> ". $data[adresse] ."</td></tr>";
echo "<tr><td>Postnr:</td><td> ". $data[postnr] ."</td></tr>";
echo "<tr><td>By:</td><td> ". $data[city] ."</td></tr>";
echo "<tr><td>E-mail:</td><td> ". $data[email] ."</td></tr></table><br><hr><br>";
}
?>


</div>
</BODY>
</HTML>
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 15:40 #17
altså, set man vælger i <option>-boksen skulle jeg gerne have til at blive gemt på brugersiden... - (det der står forneden... - www.get-ready.dk/brugersystem.php)
Avatar billede michael_stim Ekspert
23. marts 2005 - 15:52 #18
mysql_query("INSERT INTO brugersys (nick, navn, adresse, postnr, city, email) VALUES ('$nick', '$ddSingelvaerdi[1]', '$adresse', '$postnr', '$ddSingelvaerdi[0]', '$email');

Jeg er ikke helt med her ;o)
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 16:02 #19
nu har jeg lagt:

<HTML>
<HEAD><TITLE>Brugersystem</TITLE></HEAD>
<BODY>
<?
$db = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("get-ready", $db);
if($skriv){
mysql_query("INSERT INTO brugersys (nick, navn, adresse, postnr, city, email) VALUES ('$nick', '$ddSingelvaerdi[1]', '$adresse', '$postnr', '$ddSingelvaerdi[0]', '$email');
}
?>
<table><tr><td>

<FORM METHOD=POST ACTION=<? echo $PHP_SELF; ?>>
<INPUT TYPE=hidden NAME=skriv VALUE=1>
Klub:</td><td>
<?php

mysql_query("SELECT ('$ddSingelvaerdi[1]', '$ddSingelvaerdi[0]') FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());

{
    echo "<select name='valg'>\n";
    while  ($row = mysql_fetch_array($hent))  {
        echo "  <option value='" .$row['klubber'] ."_". $row['name'] ."'>".$row['name'] ."</option>\n";
    }
    echo "</select>\n";
}
$ddString=$_POST['valg'];
$ddSingelvaerdi=explode('_',$ddString);
$ddSingelvaerdi[0]; //første værdi ($row['klubber'])
4ddSingelvaerdi[1]; //anden værdi ($row['name'])

?>
</td></tr>
<tr><td>Nickname:</td><td><INPUT TYPE=text NAME=nick></td></tr>
<tr><td>Navn:</td><td><INPUT TYPE=text NAME=navn></td></tr>
<tr><td>Adresse:</td><td><INPUT TYPE=text NAME=adresse></td></tr>
<tr><td>Postnr:</td><td><INPUT TYPE=text NAME=postnr maxlength=4></td></tr>
<tr><td>By:</td><td><INPUT TYPE=text NAME=city></td></tr>
<tr><td>E-mail:</td><td><INPUT TYPE=text NAME=email></td></tr>
<tr><td><INPUT TYPE=submit VALUE="send"></td></tr>
</FORM>
</table>
<br><br><hr><br><br>
<?
$foresp = mysql_query("SELECT brugernummer, nick, navn, adresse, postnr, city, email FROM brugersys ORDER BY brugernummer DESC")or die(mysql_error());
while($data = mysql_fetch_assoc($foresp)){
echo "<table><tr><td>Brugernummer:</td><td> ". $data[brugernummer] ."</td></tr>";
echo "<tr><td>Nickname:</td><td> ". $data[nick] ."</td></tr>";
echo "<tr><td>Navn:</td><td> ". $data[navn] ."</td></tr>";
echo "<tr><td>Adresse:</td><td> ". $data[adresse] ."</td></tr>";
echo "<tr><td>Postnr:</td><td> ". $data[postnr] ."</td></tr>";
echo "<tr><td>By:</td><td> ". $data[city] ."</td></tr>";
echo "<tr><td>E-mail:</td><td> ". $data[email] ."</td></tr></table><br><hr><br>";
}
?>


</div>
</BODY>
</HTML>


op her: http://www.get-ready.dk/test.php
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 16:03 #20
$hent = mysql_query("SELECT ('$ddSingelvaerdi[1]', '$ddSingelvaerdi[0]') FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 16:06 #21
(den melder fejl på linie 18, der er:

$hent = mysql_query("SELECT ('$ddSingelvaerdi[1]', '$ddSingelvaerdi[0]') FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());

)
Avatar billede michael_stim Ekspert
23. marts 2005 - 16:06 #22
$hent = mysql_query("SELECT $ddSingelvaerdi[1], $ddSingelvaerdi[0] FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 16:30 #23
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 16:32 #24
- og stadig linie 18 :(
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 16:41 #25
lige et spørgsmål - er:

$ddString=$_POST['valg'];
$ddSingelvaerdi=explode('_',$ddString);
$ddSingelvaerdi[0]; //første værdi ($row['klubber'])
$ddSingelvaerdi[1]; //anden værdi ($row['name'])

placeret korrekt ovenfor? (ja, jeg HAR rettet 4 til $ ;))
Avatar billede 44fire44 Nybegynder
23. marts 2005 - 16:46 #26
Jeg har nu placeret det således:

<HTML>
<HEAD><TITLE>Brugersystem</TITLE></HEAD>
<BODY>
<?
$db = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("get-ready", $db);
if($skriv){
mysql_query("INSERT INTO brugersys (nick, navn, adresse, postnr, city, email) VALUES ('$nick', '$ddSingelvaerdi[1]', '$adresse', '$postnr', '$ddSingelvaerdi[0]', '$email');
}
?>
<table><tr><td>

<FORM METHOD=POST ACTION=<? echo $PHP_SELF; ?>>
<INPUT TYPE=hidden NAME=skriv VALUE=1>
Klub:</td><td>
<?php
{
$ddString=$_POST['valg'];
$ddSingelvaerdi=explode('_',$ddString);
$ddSingelvaerdi[0]; //første værdi ($row['klubber'])
$ddSingelvaerdi[1]; //anden værdi ($row['name'])
}
$hent = mysql_query("SELECT $ddSingelvaerdi[1], $ddSingelvaerdi[0] FROM klubber")
      or die( "Unable to select. Reason: ".mysql_error());

{
    echo "<select name='valg'>\n";
    while  ($row = mysql_fetch_array($hent))  {
        echo "  <option value='" .$row['klubber'] ."_". $row['name'] ."'>".$row['name'] ."</option>\n";
    }
    echo "</select>\n";
}


?>
</td></tr>
<tr><td>Nickname:</td><td><INPUT TYPE=text NAME=nick></td></tr>
<tr><td>Navn:</td><td><INPUT TYPE=text NAME=navn></td></tr>
<tr><td>Adresse:</td><td><INPUT TYPE=text NAME=adresse></td></tr>
<tr><td>Postnr:</td><td><INPUT TYPE=text NAME=postnr maxlength=4></td></tr>
<tr><td>By:</td><td><INPUT TYPE=text NAME=city></td></tr>
<tr><td>E-mail:</td><td><INPUT TYPE=text NAME=email></td></tr>
<tr><td><INPUT TYPE=submit VALUE="send"></td></tr>
</FORM>
</table>
<br><br><hr><br><br>
<?
$foresp = mysql_query("SELECT brugernummer, nick, navn, adresse, postnr, city, email FROM brugersys ORDER BY brugernummer DESC")or die(mysql_error());
while($data = mysql_fetch_assoc($foresp)){
echo "<table><tr><td>Brugernummer:</td><td> ". $data[brugernummer] ."</td></tr>";
echo "<tr><td>Nickname:</td><td> ". $data[nick] ."</td></tr>";
echo "<tr><td>Navn:</td><td> ". $data[navn] ."</td></tr>";
echo "<tr><td>Adresse:</td><td> ". $data[adresse] ."</td></tr>";
echo "<tr><td>Postnr:</td><td> ". $data[postnr] ."</td></tr>";
echo "<tr><td>By:</td><td> ". $data[city] ."</td></tr>";
echo "<tr><td>E-mail:</td><td> ". $data[email] ."</td></tr></table><br><hr><br>";
}
?>


</div>
</BODY>
</HTML>


http://www.get-ready.dk/test2.php -

nu får jeg bare fejlen: Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /var/www/get-ready/test2.php on line 18
Avatar billede 44fire44 Nybegynder
24. marts 2005 - 19:12 #27
well - det endte med at jeg fandt en løsning ;)
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