Avatar billede flappen Nybegynder
20. januar 2005 - 08:19 Der er 22 kommentarer og
1 løsning

Drop down box med data fra Mysql

Hey eksperten...

Jeg er lige gået igang med at lære lidt PHP programming da jeg har fået til opgave at lave en form for login system. Jeg har en database med rækkerne Navn og password. Det jeg vil lave, men ikke helt kan gennemskue, er sådan at jeg har en drop down box med alle Navnene fra rækken i og derefter et tekst felt hvor man skal skrive sin kode og logge ind. I bund og og grund skal jeg have fundet ud af hvordan jeg får en drop down box til at bruge værdier fra en variabel. Jeg er nybegynder i php og har brug for hjælp. Håber i forstår spørgsmålet.
Avatar billede wordwrap Nybegynder
20. januar 2005 - 08:54 #1
<select name="navn">
<?
$result = mysql_query("select xxxx from xxxx");
while ($row = mysql_fetch_array($result))
{
echo "<option value=\"$row[navn]\">".$row[navn]."</option>";
}
?>
</select>

sådan ca.. xxxx skal så lige byttes lidt ud med i første tilfælde de felter du vil ha ud af tabelen, og derefter tabel navnet...

i $row[navn] skal navn være navnet på det felt du vil ha data fra...
Avatar billede Slettet bruger
20. januar 2005 - 08:57 #2
echo '<form method="POST" action=""><p>
  <select name="D1">';

$sql = "SELECT `navn` FROM `tabel` GROUP BY `navn` ORDER BY `navn` asc";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $qh ) ) {
echo '<option>'.$row[`navn`].'</option>';
}
echo '</select></p>
</form>';

her er der en lidt mere udbygget version
Avatar billede Slettet bruger
20. januar 2005 - 08:58 #3
måske skal du have sådan:

echo '<form method="POST" action=""><p>
  <select name="D1">';

$sql = "SELECT `navn`, `id` FROM `tabel` GROUP BY `navn` ORDER BY `navn` asc";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $qh ) ) {
echo '<option value=\"". $row['id'] ."\">'.$row[`navn`].'</option>';
}
echo '</select></p>
</form>';
Avatar billede flappen Nybegynder
20. januar 2005 - 09:37 #4
Jeg takker mange gange, dejligt folk gider svare så hurtigt og hjælpe så meget. Jeg har dog et lille problem endnu. Jeg skal have lavet sådan at man vælger et navn i drop down boxen, skriver et password og trykker på en knap, så skal den så smide data ind i data basen hvis passwordet er korrekt (har en tabel med passwords i databasen. Hvis password er forkert skal den så ydermere gå videre til en side der fortæller at passwordet er forkert. Min kode ser sådan ud pt.

<?php
//forbindelse til mysql serveren
mysql_connect("localhost", "root", "****");
//vælger database
mysql_select_db("tavle");
// Hent data ind i variabel
$resultat = mysql_query("select Navn from tavle order by Navn");
print "<select name=navn>";
mysql_connect ("localhost", "root", "");
mysql_select_db("tavle");
$resultat = mysql_query("select Navn from tavle order by Navn");
while ($row = mysql_fetch_array($resultat)) {
echo "<option value=\"$row[Navn]\">".$row[Navn]."</option>";
}
?>
Avatar billede flappen Nybegynder
20. januar 2005 - 09:41 #5
ups...koden er lidt forkert...den skal se sådan ud :

<?php
//forbindelse til mysql serveren
mysql_connect("localhost", "root", "****");
//vælger database
mysql_select_db("tavle");
print "<select name=navn>";
// Hent data ind i variabel
$resultat = mysql_query("select Navn from tavle order by Navn");
while ($row = mysql_fetch_array($resultat)) {
echo "<option value=\"$row[Navn]\">".$row[Navn]."</option>";
}
Avatar billede wordwrap Nybegynder
20. januar 2005 - 10:00 #6
<?php
//forbindelse til mysql serveren
mysql_connect("localhost", "root", "****");
//vælger database
mysql_select_db("tavle");

if (isset($_REQUEST[name], $_REQUEST[pass]))
{
$result = mysql_query("select navn, pass from tavle where navn='$_REQUEST[navn]' AND pass='$_REQUEST[pass]');
if (mysql_num_rows($result)==0)
{
  //bruger navn og pass ikke fundet
}
else
{
//brugernavn og pass fundet
}
}



<form name="form" action="<?=$_SERVER[REQUEST_URI];?>">
<select name="navn">
// Hent data ind i variabel
$resultat = mysql_query("select Navn from tavle order by Navn");
while ($row = mysql_fetch_array($resultat)) {
echo "<option value=\"$row[Navn]\">".$row[Navn]."</option>";
}

<input type="password" name="pass">
<input type="submit" value="login">
</form>


måske noget i den stil ??? håber du selv lige kan flyde koden ud til hvad der skal ske, hvis brugernavn og pass blir fundet eller ikke fundet, er ikke helt med på hvad der skal ske der
Avatar billede flappen Nybegynder
20. januar 2005 - 10:05 #7
Hvis brugernavn og pass passer sammen skal den smide data ind i data basen. Hvis ikke videre til en side der siger wrong pass.. :D eller noget i den stil :D
Avatar billede wordwrap Nybegynder
20. januar 2005 - 10:12 #8
hvad er det for nogen data der skal ind i databasen ?? bruger navn og pass er der jo allerede ?? så den er jeg ik med på

du kan redirecte med header: http://dk2.php.net/header
ville så nok selv bruge js til det <script>window.location='enside.php';</script> men op til dig
Avatar billede wordwrap Nybegynder
20. januar 2005 - 10:13 #9
<script>window.location.href='enside.php';</script>

wupz lille rettelse
Avatar billede flappen Nybegynder
20. januar 2005 - 10:18 #10
Hmm den kode du har skrevet kan jeg ikke helt få til at virke...problemmet ligger i denne linje : <form name="form" action="<?php=$_SERVER[REQUEST_URI];?>">
Avatar billede flappen Nybegynder
20. januar 2005 - 10:19 #11
Hmm det er om personen er er mødt eller ikke...Altså når personen vælger sit navn og skriver hans kode skal den smide ind i data basen at han er mødt. har lavet en status side der viser hvem der er mødt og ikke mødt...
Avatar billede flappen Nybegynder
20. januar 2005 - 10:44 #12
Nå så lang så godt. Nu får jeg ingen fejl længere men hvis jeg skriver en forkert password gør den slet ingenting. Som om den slet ikke sammenligner navn og pass!
Avatar billede wordwrap Nybegynder
20. januar 2005 - 11:05 #13
prøv lige og smid din kode ind her igen, som den er nu
Avatar billede wordwrap Nybegynder
20. januar 2005 - 11:13 #14
Hmm den kode du har skrevet kan jeg ikke helt få til at virke...problemmet ligger i denne linje : <form name="form" action="<?php=$_SERVER[REQUEST_URI];?>">

<form name="form" action="<?php=$_SERVER[REQUEST_URI];?>" method="post"> prøv lige med den
Avatar billede flappen Nybegynder
20. januar 2005 - 11:51 #15
Hmmm hele min kode ser sådan ud...

<?php
//forbindelse til mysql serveren
mysql_connect("localhost", "root", "");
//vælger database
mysql_select_db("tavle");
if (isset($_REQUEST[pass]))
{
$result = mysql_query("password from tavle where password='$_REQUEST[pass]'");
if (mysql_num_rows($result)==0)
{
print "<script>window.location.href='enside.php';</script>";
//bruger navn og pass ikke fundet
}
else {
$insertSQL = "insert into tavle (status) values ('mødt')";
//værdier der bliver sat ind
mysql_query($insertSQL);
//sætter dataen ind
//brugernavn og pass fundet
}
}
?>
<html>
<head>
<body>
<form name="form" action="<?=$_SERVER[REQUEST_URI];?>" method="post">
<select name="navn">
<?php
// Hent data ind i variabel
$resultat = mysql_query("select Navn from tavle order by Navn");
while ($row = mysql_fetch_array($resultat)) {
echo "<option value=\"$row[Navn]\">".$row[Navn]."</option>";
}
?>
<html>
<head>
<body>
<input type="password" name="pass">
<input type="submit" value="login">
</form>
</body>
</head>
</html>

Det den skal gøre er at se i data basen om det valgte navn passer sammen med den kode man har skrevet i input boksen. Hvis koden ikke er den rigtige skal den sende brugeren vidre til en side der siger forkert password. Hvis koden er korrekt skal indsætte data i databasen. Hvad er problemmet med denne kode?
Avatar billede wordwrap Nybegynder
20. januar 2005 - 12:07 #16
if (isset($_REQUEST[pass]))
{
$result = mysql_query("select navn, password from tavle where password='$_REQUEST[pass]' AND navn = '$_REQUEST[navn]'");
if (mysql_num_rows($result)==0)
{
print "<script>window.location.href='enside.php';</script>";
//bruger navn og pass ikke fundet
}
else {
$insertSQL = "insert into tavle (status) values ('mødt')"; <-- mangler en where, eks: where navn = '$_REQUEST[navn]'
//værdier der bliver sat ind
mysql_query($insertSQL);
//sætter dataen ind
//brugernavn og pass fundet
}
}


ellers kan jeg ikke se det store lige pt
Avatar billede flappen Nybegynder
20. januar 2005 - 12:20 #17
Hmm tror ikke du har forstået helt præcis hvad det skal. Jeg har en database med 3 rows (navn, password og status), I status står der std "ikke mødt". Det skal fungere sådan at personen vælger sit navn i drop down boxen, skriver sin kode og hvis koden er korrekt skifter den status over til "mødt" og hvis koden er forkert skifter den over til siden der skriver wrong password. Håber det hjalp på det... og tak for hjælpen indtil videre..
Avatar billede wordwrap Nybegynder
20. januar 2005 - 12:32 #18
ok, hvis den skal opdatere i databasen skal du ikke bruge insert, men update

linien $insertSQL = "insert into tavle (status) values ('mødt')";
skifter du lige ud med

$updateSQL = "update tavle set status = 'mødt' where navn='$_REQUEST[navn]' AND password='$_REQUEST[pass]'";

og mysql_query($insertSQL); = mysql_query($updateSQL);


så skulle den gerne, når pass er sat i formen,lave en kontrol på om brugernavn og pass passer til en række i databasen, hvis dette er tilfældet opdatere den i databasen, ellers sender den brugeren videre til en anden side, lyder det korrekt ??
Avatar billede flappen Nybegynder
20. januar 2005 - 12:38 #19
ja prøver lige :D
Avatar billede flappen Nybegynder
20. januar 2005 - 12:42 #20
Lige meget hvad jeg skriver sker der ingenting. koden ser sådan ud:

<?php
//forbindelse til mysql serveren
mysql_connect("localhost", "root", "");
//vælger database
mysql_select_db("tavle");
if (isset($_REQUEST[Navn], $_REQUEST[pass]))
{
$result = mysql_query("select Navn, password from tavle where password='$_REQUEST[pass]' AND Navn= '$_REQUEST[Navn]'");
if (mysql_num_rows($result)==0)
{
print "<script>window.location.href='enside.php';</script>";
//bruger navn og pass ikke fundet
}
else {
$updateSQL = "update tavle set status = 'mødt' where navn='$_REQUEST[navn]' AND password='$_REQUEST[pass]'";
mysql_query($updateSQL);
//sætter dataen ind
//brugernavn og pass fundet
}
}
?>
<html>
<head>
<body>
<form name="form" action="<?=$_SERVER[REQUEST_URI];?>" method="post">
<select name="navn">
<?php
// Hent data ind i variabel
$resultat = mysql_query("select Navn from tavle order by Navn");
while ($row = mysql_fetch_array($resultat)) {
echo "<option value=\"$row[Navn]\">".$row[Navn]."</option>";
}
?>
<html>
<head>
<body>
<input type="password" name="pass">
<input type="submit" value="login">
</form>
</body>
</head>
</html>
Avatar billede wordwrap Nybegynder
20. januar 2005 - 12:50 #21
prøvede lige selv og lave siden, virker her når den ser sådan ud

<?php
//forbindelse til mysql serveren
mysql_connect("localhost", "root", "");
//vælger database
mysql_select_db("tavle");
if (isset($_REQUEST[Navn], $_REQUEST[pass]))
{
$result = mysql_query("select navn, password from tavle where password='$_REQUEST[pass]' AND Navn= '$_REQUEST[Navn]'");
if (mysql_num_rows($result)==0)
{
print "<script>window.location.href='enside.php';</script>";
//bruger navn og pass ikke fundet
}
else {
$updateSQL = "update tavle set status = 'mødt' where navn='$_REQUEST[Navn]' AND password='$_REQUEST[pass]'";
mysql_query($updateSQL);
//sætter dataen ind
//brugernavn og pass fundet
}
}
?>
<html>
<head>
<body>
<form name="form" action="<?=$_SERVER[REQUEST_URI];?>" method="post">
<select name="Navn">
<?php
// Hent data ind i variabel
$resultat = mysql_query("select Navn from tavle order by Navn");
while ($row = mysql_fetch_array($resultat)) {
echo "<option value=\"$row[Navn]\">".$row[Navn]."</option>";
}
?>
<html>
<head>
<body>
<input type="password" name="pass">
<input type="submit" value="login">
</form>
</body>
</head>
</html>


det eneste der er blevet rettet til er store og små bogstaver, så kig efter om navn, password og status i din database er med store eller små og ret det til så det passer
Avatar billede flappen Nybegynder
20. januar 2005 - 13:39 #22
Det virker...takker mange... :D
Avatar billede wordwrap Nybegynder
20. januar 2005 - 13:47 #23
np :-D

så smider jeg lige et 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
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