20. januar 2005 - 08:19Der 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.
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>"; } ?>
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>"; }
<?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>"; }
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
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
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
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];?>">
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...
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!
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
<?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?
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 } }
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..
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 ??
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>
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
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.