Avatar billede tenniscamp Nybegynder
28. januar 2009 - 09:41 Der er 35 kommentarer og
1 løsning

<?php include inde i en dropdown liste

Hejsa,

Jeg ville høre om man kan lave en php include inde i en dropdown liste..

Jeg har forsøgt mig med følgende.

<select name="minSelect" id="minSelect" onchange="">
<option value="">-- Vælg her --<br>
<option value="Naestved" <?php include("naestved.php"); ?>  >Næstved<br>

Men det virker ikke.. Hvilket også giver fin mening, da der er alt for mange "<" og ">" i samme sætning vil jeg tro
Avatar billede showsource Seniormester
28. januar 2009 - 09:47 #1
Det kan du godt, men du skal lave noget brugbart html !
Avatar billede showsource Seniormester
28. januar 2009 - 09:49 #2
Der er ikke <br> i en option, og jeg mener du skal afslutte den også:
<select name="minSelect" id="minSelect" onchange="">
<option value="">-- Vælg her --</option>
<option value="Naestved"<?php include("naestved.php"); ?>>Næstved</option>

Og hvad mon du så har i din naestved.php ?
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 09:54 #3
i min næstved.php har jeg noget sql... som henter fra en database..

så ikke sikkert det kan virke..

Men jeg bliver nød til at have en <br> i min option.. fordi jeg har op til flere camps.. Det har den i hvert fald ikke brokket sig over endnu.. og haft den her dropdown i mange år...
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 09:57 #4
Avatar billede showsource Seniormester
28. januar 2009 - 10:00 #5
php kan ikke finde din include fil
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 10:13 #6
Ja, nåede ikke lige at på opdateret... Havde fanget den fejl

http://www.tenniscamp.dk/TennisCamp_Tilmeldinger2.php

så det er det her der er problemet..

Den skulle gerne vise de her tre i dropdown og hvis man så vælger Næstved, så skulle den gerne vise tabellen, men først når man vælger Næstved

Næstved
Sønderborg
Fredensborg
Avatar billede showsource Seniormester
28. januar 2009 - 10:17 #7
Er ikke lige helt med,
men de tre nævnte byer skal være i en dropdown?
Og når man vælger en af dem, skal der hentes fra db hvor f.eks. "næstved" indgår?
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 10:20 #8
Ja.. de tre byer skal være i dropdown.. når man så vælger næstved, så skal der hentes fra database..
Avatar billede showsource Seniormester
28. januar 2009 - 10:22 #9
Så bruger du jo en post eller get som action for din form.
Umiddelbart, hvis du VIL bruge special tegn, ( æ f.eks. ) vil jeg mene du bør bruge post, så du ikke får specialtegn i url'en
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 10:26 #10
Nu er jeg helt tabt..
Avatar billede showsource Seniormester
28. januar 2009 - 10:33 #11
<form ation="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<select name="byer" onchange="this.form.submit();">
<option value="Fredensborg">Fredensborg</option>
<option value="Sønderborg">Sønderborg</option>
<option value="Næstved">Næstved</option>
</select>
</form>

<?php
if(isset($_POST["byer"])) {

$sql = "SELECT navne FROM tabel WHERE byen = '"._POST["byer"]."'";

$deltagere = mysql_query($sql) or die (mysql_error());

}
?>

Men, personligt ville jeg slet ikke bruge specialtegn, hverken i post eller get.
Jeg ville nok ha' en tabel med mulige byer, hvor et felt er primary, autoincrement, og et andet felt er navnet på byen.
Og så en tabel med deltagere, hvor id fra bytabellen så står som reference.
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 10:39 #12
Det er sikkert også meget bedre, men jeg er ikke nogen ørn.. Jeg havde håbet, at man bare kunne gøre som jeg havde gjort det, men det kan man vist ikke..

Problemet med dit forslag er umiddelbart, at jeg nu skal have mit brugernavn og kodeord til databasen liggende til frit skue? da jeg formoder at jeg i ovenstående kode også skal have

mysql_connect("localhost", ....
Avatar billede showsource Seniormester
28. januar 2009 - 10:44 #13
Nej, hvis ellers serveren er sat korrekt op til at parse php filer, kan man ikke se dit brugernavn og kodeord til mysql, fra et php script.

<?php

$user = "bruger";
$pass = "password";
$host = "localhost";
$database = "dindb";

$conn = @mysql_connect($host,$user,$pass) or die("Kan ikke connecte til databasen!");
@mysql_select_db($database, $conn) or die("Kan ikke vælge database!");

?>

Ovenstående vil blot vise en tom side.
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 10:44 #14
Og jeg kan ikke lige gennemskue hvorhenne jeg henter fra selve databasen.. altså bruger den SQL som jeg har lavet der skal hente bestemte felter fra tabellen og sortere dem efter navn..
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 10:45 #15
ok.. det anede jeg intet om :)
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 10:59 #16
Men jeg kan stadig ikke lige gennemskue hvorhenne jeg henter fra selve databasen.. altså bruger den SQL som jeg har lavet der skal hente bestemte felter fra tabellen og sortere dem efter navn..
Avatar billede showsource Seniormester
28. januar 2009 - 11:01 #17
hmm, at dømme ud fra dit link, så er man netop tilmeldt, når siden vises?
Så henter du jo bare med det samme.

Men ellers så henter du når der postes eller "get'es"
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 11:07 #18
jeg kan godt se at det her er lige en tand for kompliceret.. jeg er slet ikke dygtig nok..

Tanken er at den skal vise en oversigt over alle tilmeldte til den pågældende camp. også dem der har tilmeldt sig fra en uge siden..
Avatar billede showsource Seniormester
28. januar 2009 - 11:16 #19
"Den pågældende camp" kan du jo få ved f.eks. den dropdown.
Når den er sat, henter du fra db hvor by er lig med "pågældende camp"
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 11:19 #20
hmm.. ok.. så koden skal stadig være:

<form ation="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<select name="byer" onchange="this.form.submit();">
<option value="Fredensborg">Fredensborg</option>
<option value="Sønderborg">Sønderborg</option>
<option value="Næstved">Næstved</option>
</select>
</form>

<?php
if(isset($_POST["byer"])) {

$sql = "SELECT navne FROM tabel WHERE byen = '"._POST["byer"]."'";

$deltagere = mysql_query($sql) or die (mysql_error());

}
?>
Avatar billede showsource Seniormester
28. januar 2009 - 11:21 #21
hmm, ja, nu ved jeg jo ikke hvordan din db er bygget op.
Og igen, den med special tegn er ikke så god.
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 11:24 #22
nej.. ok.. jeg leger lidt med det.. og hvis ikke det virker
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 12:00 #23
Nu får jeg den her fejl:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /customers/tenniscamp.dk/tenniscamp.dk/httpd.www/TennisCamp_Tilmeldinger2.php on line 172

og der kommer ikke noget frem, når jeg vælger Næstved.. jeg ved, at der er data, der bør kommer frem der..

Min kode ser ud som følgende:

<form ation="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<select name="byer" onchange="this.form.submit();">
<option value="">---Vælg her---</option>
<option value="Fredensborg">Fredensborg</option>
<option value="Sønderborg">Sønderborg</option>
<option value="Næstved">Næstved</option>
</select>
</form>

<?php

mysql_connect("localhost", "BRUGERNAVN", "KODE") or die(mysql_error());
mysql_select_db("tenniscamp_dk") or die(mysql_error());
if(isset($_POST["byer"])) {

$sql = "SELECT * FROM Tilmeldinger WHERE Camp = '".$_POST["byer"]."' ORDER BY Navn";

$deltagere = mysql_query($sql) or die (mysql_error());

}

echo "<table BORDER=1 WIDTH=60%><tr><th>Navn</th><th>Alder</th><th>Pakke valg</th></tr>\n";
while($tilmeldte=mysql_fetch_assoc($res)){
  echo "<tr><td>".$tilmeldte['Navn']."</td><td>".$tilmeldte['Alder']."</td><td>".$tilmeldte['Pakke']."</td></tr>\n";
}
echo "</table>\n";
?>
Avatar billede showsource Seniormester
28. januar 2009 - 12:07 #24
<?php

if(isset($_POST["byer"])) {

mysql_connect("localhost", "BRUGERNAVN", "KODE") or die(mysql_error());
mysql_select_db("tenniscamp_dk") or die(mysql_error());

$sql = "SELECT * FROM Tilmeldinger WHERE Camp = '".$_POST["byer"]."' ORDER BY Navn";

$deltagere = mysql_query($sql) or die (mysql_error());

    if(mysql_num_rows($deltagere) > 0) {
    echo "<table BORDER=1 WIDTH=60%><tr><th>Navn</th><th>Alder</th><th>Pakke valg</th></tr>\n";

        while($tilmeldte=mysql_fetch_assoc($deltagere)){
        echo "<tr><td>".$tilmeldte['Navn']."</td><td>".$tilmeldte['Alder']."</td><td>".$tilmeldte['Pakke']."</td></tr>\n";
        }

    echo "</table>\n";

    } // END num_rows


} // END if(isset()

?>
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 12:47 #25
ja ja.. der nærmer sig.. men når jeg vælger næstved nu, så sker der intet.. skærmen blinker lige et sekund, men der kommer ikke nogen tabel frem
Avatar billede showsource Seniormester
28. januar 2009 - 12:54 #26
Prøv:

<?php

if(isset($_POST["byer"])) {

mysql_connect("localhost", "BRUGERNAVN", "KODE") or die(mysql_error());
mysql_select_db("tenniscamp_dk") or die(mysql_error());

$sql = "SELECT * FROM Tilmeldinger WHERE Camp = '".$_POST["byer"]."' ORDER BY Navn";
echo $sql."<p>";

$deltagere = mysql_query($sql) or die (mysql_error());

    if(mysql_num_rows($deltagere) > 0) {
    echo "<table BORDER=1 WIDTH=60%><tr><th>Navn</th><th>Alder</th><th>Pakke valg</th></tr>\n";

        while($tilmeldte=mysql_fetch_assoc($deltagere)){
        echo "<tr><td>".$tilmeldte['Navn']."</td><td>".$tilmeldte['Alder']."</td><td>".$tilmeldte['Pakke']."</td></tr>\n";
        }

    echo "</table>\n";

    }else{

    echo"Ingen rows fundet for ".$_POST["byer"];

    } // END num_rows


} // END if(isset()

?>
Avatar billede showsource Seniormester
28. januar 2009 - 12:55 #27
Og du bør nok også bruge urlencode() når du har specialtegn
<option value="?php echo urlencode("Sønderborg"); ?>">Sønderborg</option>
<option value="<?php echo urlencode("Næstved"); ?>">Næstved</option>
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 12:57 #28
Jeg har lavet det om så der står Sonderborg og Naestved
Avatar billede showsource Seniormester
28. januar 2009 - 12:57 #29
godt nok ! :O)
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 12:59 #30
cool... nu virker det sgu.. men jeg kunne godt tænke mig, at den der sql sætning ikke lige er synlig..
Avatar billede showsource Seniormester
28. januar 2009 - 13:04 #31
Så fjerner du den jo bare :O)
Avatar billede showsource Seniormester
28. januar 2009 - 13:07 #32
Og lige en ting, man skal ALTID sikre sig mod "sql-injection" når man udfører en query baseret på brugerinput.
Så lige her og nu, vil mysql_real_escape_string() sikkert være fint nok:

$sql = "SELECT * FROM Tilmeldinger WHERE Camp = '".mysql_real_escape_string($_POST["byer"])."' ORDER BY Navn";
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 13:15 #33
ok.. jeg fandt ud af det med at fjerne SQL..

Det er sgu lækkert nu..Lidt ked af at den skriver Naestved og ikke Næstved, men overlever det nok..

Det virker som om den starter med at vise en tilfældig camp (som regel den forrige jeg valgte) - kan man gøre noget ved det, så den er "blank" så at sige, når man klikker ind..?

OG en sidste ting, kan man ikke få tekst eller noget efter .$_POST["byer"]" kode.. jeg ville gerne indsætte et break, men har også prøvet andre steder at få noget tekst ind og det kan jeg heller ikke finde ud af.

Hvad mener du med sql-injection.. hvad betyder det


echo "Følgende har tilmeldt sig ".$_POST["byer"]"<p>";
Avatar billede showsource Seniormester
28. januar 2009 - 13:24 #34
sql-injection => En ond sindet bruger kan lave en query som f.eks. sletter hele databasen.
Prøv at kikke her:
http://dk.php.net/manual/en/function.mysql-real-escape-string.php


Ehh, den viser vel først noget når man vælger fra dropdown ?

Hvor vil du ha' noget tekst?
Du kan evt. "hoppe ud" af php

<?php

if($noget) {
?>
Ude af php<p>
Tekst
<?php
}
?>
Avatar billede tenniscamp Nybegynder
28. januar 2009 - 13:37 #35
Det er top nice nu..

Hvis du lige smider et svar, så skal du få point
Avatar billede showsource Seniormester
28. januar 2009 - 13:40 #36
Ok

Og go' "kodelyst" :O)
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