Oprettet tir. d. 09. marts 2010 kl. 19:23:49

Thomsen11
Thomsen11 (4.495 point. Point ude: 320)

Dropdown i php

Hej eksperter.

Jeg har en hjemmeside hvor folk skal tilmelde sig til et arrangement. De skal oplyse nogle informationer som bliver smidt ind i en database. Jeg printer så, på en anden side, informationerne ud så man kan se hvilke der er tilmeldt.
Da det er et arrangement for tidligere elever skal de oplyse hvilke år de har gået på skolen. Som det er nu skal de bare skrive årstal ind, men jeg ville gerne have så de kan vælge mellem dropdown årstal, så de ikke selv skal skrive dem. Problemet ligger ikke i at lave et dropdown, men jeg aner ikke hvordan det skal sættes sammen så det indsættes i databasen.

Min nuværende kode ser sådan ud:

<?php
require_once("config.php");
if($_GET['do'] == "insert" && isset($_POST['Brugernavn']))
{
    $todb['Brugernavn'] = mysql_real_escape_string($_POST['Brugernavn']);
    $todb['Navn'] = mysql_real_escape_string($_POST['Navn']);
    $todb['Email'] = mysql_real_escape_string($_POST['Email']);
    $todb['Year'] = mysql_real_escape_string($_POST['Year']);
    $todb['Comment'] = mysql_real_escape_string($_POST['Comment']);
    $insert_data = mysql_query("INSERT INTO tilmeld(
                                                Brugernavn,
                                                Navn,
                                                Email,
                                                Year,
                                                Comment)VALUES(
                                                '".$todb['Brugernavn']."',
                                                '".$todb['Navn']."',
                                                '".$todb['Email']."',
                                                '".$todb['Year']."',
                                                '".$todb['Comment']."')");
    if($insert_data)
    {
        print"Du er tilmeldt. Vi glæder os til at se dig. <br /><br />";
    }
    else
    {
        print "<b>FEJL:</b> ".mysql_error();
    }
}
?>
<center>
<form action="?do=insert" method="post">
Navn:<br> <input type="text" name="Navn" value="<?=$_POST['Navn'];?>" /><br />
Email:<br> <input type="text" name="Email" value="<?=$_POST['Email'];?>" /><br />
Year:<br> <input type="text" name="Year" value="<?=$_POST['Year'];?>" /><br />
Kommentar:<br> <input type="text" name="Comment" value="<?=$_POST['Comment'];?>" /><br />
<input type="submit" value="Tilmeld" />
</form>


Hvis I vil hjælpe mig med det ville det være dejligt. Forstår I ikke mit spørgsmål så skriv endelig en kommentar, så jeg kan uddybe det bedre.

PS. Hvis I ved hvordan man gør så siden kun kan ses af de der er logget ind (Brugerne logges ind i session) vil det være dejligt hvis I vil vise mig det.

På forhånd tak!!!

Skrevet tir. d. 09. marts 2010 kl. 19:32:15| #1

kimsey0
kimsey0 (23.194 point)
jacobbundgaard.dk
W3schools er generelt ikke en hjemmeside man skal give alt for meget tillid, men i denne situation er den glimrende:
http://www.w3schools.com/ (...)
Hvad der står mellem start- og afslutnings-option-tag'et er, hvad der bliver vist til brugeren, og attributen value bestemmer hvad der bliver sendt til brugeren?

Hvordan logger brugerne ind på din side?

Skrevet tir. d. 09. marts 2010 kl. 21:04:55| #2

expnet
expnet (13.480 point)
Her har du din formular med select box
------------------

<?php
require_once("config.php");
if($_GET['do'] == "insert" && isset($_POST['Brugernavn']))
{
    $todb['Brugernavn'] = mysql_real_escape_string($_POST['Brugernavn']);
    $todb['Navn'] = mysql_real_escape_string($_POST['Navn']);
    $todb['Email'] = mysql_real_escape_string($_POST['Email']);
    $todb['Year'] = mysql_real_escape_string($_POST['Year']);
    $todb['Comment'] = mysql_real_escape_string($_POST['Comment']);
    $insert_data = mysql_query("INSERT INTO tilmeld(
                                                Brugernavn,
                                                Navn,
                                                Email,
                                                Year,
                                                Comment)VALUES(
                                                '".$todb['Brugernavn']."',
                                                '".$todb['Navn']."',
                                                '".$todb['Email']."',
                                                '".$todb['Year']."',
                                                '".$todb['Comment']."')");
    if($insert_data)
    {
        print"Du er tilmeldt. Vi glæder os til at se dig. <br /><br />";
    }
    else
    {
        print "<b>FEJL:</b> ".mysql_error();
    }
}
?>
<center>
<form action="?do=insert" method="post">
Navn:<br> <input type="text" name="Navn" value="<?=$_POST['Navn'];?>" /><br />
Email:<br> <input type="text" name="Email" value="<?=$_POST['Email'];?>" /><br />
Year:<br> <select name="Year" size="1">
    <option selected="selected" value="">Vælg årstal</option>
    <option value="1983">1983</option>
    <option value="1982">1982</option>
    <option value="1981">1981</option>
</select><br>
Kommentar:<br> <input type="text" name="Comment" value="<?=$_POST['Comment'];?>" /><br />
<input type="submit" value="Tilmeld" />
</form>

Skrevet tir. d. 09. marts 2010 kl. 21:34:55| #3

Thomsen11
Thomsen11 (4.495 point)
Tak til jer begge for jeres hurtige svar.
Det er ikke problemet for mig at lave en dropdown men at få den sammen med scriptet så den sender til databasen.
expnet jeg har prøvet dit script men når jeg trykker på Tilmeld sker der ikke noget, den printer hverken svaret (Du er tilmeldt. Vi glæder os til at se dig.) eller fejlmeldingen.
Jeg har prøvet at rette lidt på det men kan ikke få det til at fungere. Tror måske fejlen er at den ikke sender value="<?=$_POST['Email'];?>" ligesom de andre.

Skrevet tir. d. 09. marts 2010 kl. 21:44:48| #4

I din første if-condition betinger du også at $_POST["Brugernavn"] også er sat, men den sender du ikke med fra din form, hvorfor der så ikke sker noget.
Forslaget fra #2 ser rigtigt ud, bortset fra din if-condition som evalueres til falsk og derfor ikke kommer videre.

Skrevet ons. d. 10. marts 2010 kl. 09:38:26| #5

expnet
expnet (13.480 point)
Hvis du ikke har et felt med name="Brugernavn" skal du tjekke på andet eks. navn el. email
------------------

<?php
require_once("config.php");
if($_GET['do'] == "insert" && isset($_POST['Brugernavn']))
{
    $todb['Brugernavn'] = mysql_real_escape_string($_POST['Brugernavn']);
    $todb['Navn'] = mysql_real_escape_string($_POST['Navn']);
    $todb['Email'] = mysql_real_escape_string($_POST['Email']);
    $todb['Year'] = mysql_real_escape_string($_POST['Year']);
    $todb['Comment'] = mysql_real_escape_string($_POST['Comment']);
    $insert_data = mysql_query("INSERT INTO tilmeld(
                                                Brugernavn,
                                                Navn,
                                                Email,
                                                Year,
                                                Comment)VALUES(
                                                '".$todb['Brugernavn']."',
                                                '".$todb['Navn']."',
                                                '".$todb['Email']."',
                                                '".$todb['Year']."',
                                                '".$todb['Comment']."')");
    if($insert_data)
    {
        print"Du er tilmeldt. Vi glæder os til at se dig. <br /><br />";
    }
    else
    {
        print "<b>FEJL:</b> ".mysql_error();
    }
}
?>
<center>
<form action="?do=insert" method="post">
Brugernavn:<br> <input type="text" name="Brugernavn" value="<?=$_POST['Brugernavn'];?>" /><br />
Navn:<br> <input type="text" name="Navn" value="<?=$_POST['Navn'];?>" /><br />
Email:<br> <input type="text" name="Email" value="<?=$_POST['Email'];?>" /><br />
Year:<br> <select name="Year" size="1">
    <option selected="selected" value="">Vælg årstal</option>
    <option value="1983">1983</option>
    <option value="1982">1982</option>
    <option value="1981">1981</option>
</select><br>
Kommentar:<br> <input type="text" name="Comment" value="<?=$_POST['Comment'];?>" /><br />
<input type="submit" value="Tilmeld" />
</form>

Skrevet ons. d. 10. marts 2010 kl. 10:21:58| #6

Thomsen11
Thomsen11 (4.495 point)
Godt set repox. Jeg havde helt overset at jeg ikke havde den i min form. Nu virker det.
Hvis du smider et svar må dig og expnet dele om pointene, hvis det er ok?

Men er der nogle der ved hvordan man gør så man bliver sendt videre til en anden side når man har trykket på Tilmeld?

Skrevet ons. d. 10. marts 2010 kl. 11:42:16| #7

Der var et svar fra mig her.

Angående dit tillægsspørgsmål...
Det normale at gøre er at videresende personen ved hjælp af en header med informationen Location.
header("Location: http://example.org/ (...));


For god ordens skyld anbefales det at du dræber scriptet, så resten af koden ikke eksekveres uhensigtsmæssigt:
header("Location: http://example.org/ (...));
exit;


Problemet er bare at en header ikke kan sendes, hvis du har haft output. Output er tomme linier, html, tekst, osv...

En nem og god fremgangsmåde at komme udover de generelle problemer på er noget ala:
<?php

  if( isset($_POST) )
  {
    if( alle data er som de skal være og alt er gået godt )
    {
      //indsæt i databasen, send mail eller hvad man nu lige er til
      header("Location: http://example.org/ (...));
      exit;
    }
    else
    {
      $errorMessage = "Ikke alle felter var udfyldt";
    }
  }
?>
<!DOCTYPE...>
<html>
  <head>
    <title>...
  </head>
  <body>

    blah blah blah

    <form ...>
     
      <?php if( isset($errorMessage) ): ?>
      <p class="error">
        <?php echo $errorMessage; ?>
      </p>
      <?php endif; ?>
    </form>
  </body>
</html>


Bemærk at det PHP der skal reagere på brugerens input sker som de første.

Skrevet man. d. 15. marts 2010 kl. 19:59:11| #8

Thomsen11
Thomsen11 (4.495 point)
Kan det lade sig gøre at dele pointene? For mig ser det ikke ud som om det er muligt. Ellers må i lige hjælpe mig med hvordan vi for fordelt pointene.

Men er der nogle der ved hvordan man gør så det kun er brugere der kan se siden? Mine brugere logger ind i sessions. Dvs. at de logger ind på forsiden og fra den bliver sendt ind på "loginsiden". Her er lidt kode fra den:

<?php
session_start();
require_once("config.php");

if(!isset($_POST['Submit'])) {
    echo "Du skal komme fra forsiden";
    }else{
        $postbruger = $_POST['Brugernavn'];
        $postpass = $_POST['Password'];
       
        $resultat = mysql_query("SELECT Id FROM `brugere` WHERE Brugernavn = '$postbruger' AND Password = '$postpass'");

        $number = mysql_num_rows($resultat);
        if($number == 1) {
        $_SESSION['loget_in'] = 1;
        $_SESSION['Brugernavn'] = $postbruger;
        $_SESSION['Password'] = $postpass; //Sætter session variablerne
        echo "<center>Du er nu logget ind</center>
             
";

        }else echo"De indtastede oplysninger er ikke korrekte";
        }
?>

Skrevet tor. d. 18. marts 2010 kl. 17:28:35| #9

Thomsen11
Thomsen11 (4.495 point)
Grundet point er det er nok mest fair hvis jeg opretter en ny tråd med det sidste spørgsmål, om det er muligt kun at brugerne kan se siden. Det er hermed gjordt. Link: http://www.eksperten.dk/ (...)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

php problem få en kode fra en anden side

Oprettet den 11. februar 2012 kl. 23.53
jesperkaae95 giver 30 point for svar | Giv et svar »

Udtræk af enkelte felter fra bestemte kolonner i mysql

Oprettet den 11. februar 2012 kl. 19.27
hrole giver 30 point for svar | Giv et svar »

Procentregning

Oprettet den 11. februar 2012 kl. 11.26
sevinding giver 60 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger