Avatar billede karmus Nybegynder
30. august 2006 - 00:15 Der er 4 kommentarer og
1 løsning

Overførsel af values fra dropdown-bokse til URL

Hej. Hvordan får jeg to værdier af en month- og en year-boks til at blive passed direkte til URL'en uden at skulle trykke to gange? Det sker fordi ved første tryk opsnappes værdierne af $_REQUEST og lægges ind i <form action="XXX">. Næste tryk bruger forrige værdier til at parse ind i URL'en. Jeg vil gerne have at den ved første tryk både tager de to decimaler fra måned og to fra år (evt. fjerne "?blog=list" fra month) og sætter dem ind i en skabelon á la den her (efter root skal der normalt stå index.php men det kan også udelades da det er default): "?blog=list$month$year", som så loader siden "index_show.php" og inkluderer indholdet af filen "list$month$year.inc". Starten er defineret i min index.php-fil i rooten som bestemmer at ?side=blog skal referere til blog/index.php og "?blog=listMMYY" / "?blog=postDDMMYY(_#)" skal referere til blog/index_show.php som includer blog/entries/listMMYY.inc og *ditto*/postDDMMYY(_#).inc alt efter hvilken _GET den har fået.

Her er relevante koder fra
index.php (http://www.karmus.dk/):

<?php if ($side == mig) { include("mig.php"); }
elseif ($side == hiphop) { include("hiphop.htm"); }
elseif ($side == blog) { include("blog/index.php"); }
elseif ($blog != null) { include("blog/index_show.php"); }
elseif ($side == billeder) { include("billeder.htm"); }
elseif ($side == tekster) { include("tekster.htm"); }
elseif ($side == grafik) { include("grafik.htm"); }
elseif ($side == links) { include("links.htm"); }
elseif ($side == download) { include("download.php"); }
elseif ($side == musik) { include("musik.htm"); }
elseif ($side == tagwall) { include("tagwall/index.php"); }
elseif ($side == kontakt) { include("kontakt.php"); }
elseif ($side == login) { include("blog/login.htm"); }
elseif ($side == tagwall_show) { include("tagwall/tagwall.php"); }
elseif ($side == tagwall_sign) { include("tagwall/sign.php"); }
else { include("forside.htm"); } ?>


http://www.karmus.dk/?side=blog (http://www.karmus.dk/blog/index.php):

<?php $curmonth = strftime("%B");
$monthdecimal = strftime("%m");
$curyear = strftime("%Y");
$yeardecimal = strftime("%y");
?>
<p class="center">
<strong>Dagbog:</strong>
</p>
<form class="center" method="post" action="<?php echo $_REQUEST['month']; echo $_REQUEST['year']; ?>">
<select name="month">
<option value="?blog=list<?php echo $monthdecimal; ?>"><?php echo $curmonth; ?>*</option>
<option value="?blog=list01">Januar</option>
<option value="?blog=list02">Februar</option>
<option value="?blog=list03">Marts</option>
<option value="?blog=list04">April</option>
<option value="?blog=list05">Maj</option>
<option value="?blog=list06">Juni</option>
<option value="?blog=list07">Juli</option>
<option value="?blog=list08">August</option>
<option value="?blog=list09">September</option>
<option value="?blog=list10">Oktober</option>
<option value="?blog=list11">November</option>
<option value="?blog=list12">December</option>
</select>
<select name="year">
<option value="<?php echo $yeardecimal; ?>"><?php echo $curyear; ?>*</option>
<option value="07">2007</option>
<option value="06">2006</option>
</select>
<input type="submit" value="Vis">
<br>
(* = indeværende måned/år)
</form>


index_show.php (http://www.karmus.dk/blog/index_show.php):

<p class="center">
<strong>Dagbog:</strong>
<br>
<br>
<a href="?side=blog" target="_self">Tilbage</a>
<br>
<a href="java script:popUp('http://www.karmus.dk/blog/comments_post.php?id=<?php echo $blog; ?>')">Skriv kommentar</a>
</p>
<?php $filename = "/mounted-storage/home19d/sub001/sc19932-ELMW/karmus/blog/entries/$blog.inc";
if (file_exists($filename)) { include($filename); }
else { echo "<p class=\"center\">\n<em>Ingen indlæg tilføjet endnu!\n<br>\nEller <tt>$blog</tt> er muligvis ikke en gyldig syntaks...</em>\n</p>"; } ?>


Som du kan se så er $blog selve tegnene efter = på ?blog som altså udgør et filnavn punktum inc. Håber I kan hjælpe mig. Tusind tak for hjælpen.
PS: Jeg arbejder stadig på siden så den virker ikke optimalt endnu. Brug venligst ikke nogle aktive funktioner som kan skabe rod i systemet!
Avatar billede Slettet bruger
30. august 2006 - 06:02 #1
Når du har så mange forspørgelser på om $side er lige det, det eller det osv., så ville jeg lave en switch(), frem for if-elseif-else.

switch($side) {
    case "mig" : include("mig.php");
        break;
    case "hiphop" : include("hiphop.htm");
        break;
    case "blog" : include("blog/index.php");
        break;
    case "billeder" : include("billeder.htm");
        break;
    case "tekster" : include("tekster.htm");
        break;
    case "grafik" : include("grafik.htm");
        break;
    case "links" : include("links.htm");
        break;
    case "download" : include("download.php");
        break;
    case "musik" : include("musik.htm");
        break;
    case "tagwall" : include("tagwall/index.php");
        break;
    case "kontakt" : include("kontakt.php");
        break;
    case "login" : include("blog/login.htm");
        break;
    case "tagwall_show" : include("tagwall/tagwall.php");
        break;
    case "tagwall_sign" : include("tagwall/sign.php");
        break;
    default : include("forside.htm");
        break;
}

læs mere her: www.php.net/switch
Avatar billede karmus Nybegynder
30. august 2006 - 17:58 #2
Jeg dropper lortet. Det er for svært og tidskrævende. Laver en totalliste per år i stedet for og nøjes med én <form> i stedet. Skulle gå uden PHP med method=get i stedet.
Avatar billede karmus Nybegynder
30. august 2006 - 17:58 #3
Men tak alligevel.
Avatar billede karmus Nybegynder
15. marts 2007 - 22:48 #4
Lukker emnet.
Avatar billede fire-fox Nybegynder
20. februar 2008 - 02:25 #5
husk at ligge et svar og tage dine points retur :)
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