Avatar billede hurra Novice
21. juli 2003 - 13:58 Der er 14 kommentarer og
1 løsning

Flere variabler i addressbaren

Jeg er ikke sikker på om det her problem egentligt har noget med php at gøre, men nu er jeg stødt i problemet mens jeg lavede noget i php, så...

Jeg har lavet en funktion hvor man kan browse efter nogle filer på serveren. I adressebaren bliver der skrevet hvilken dir brugeren lige nu ser, fx.

test.php?dir=pic/test

Der er så også nogle knapper på siden, med hvilke man kan kalde nogle forskellige funktioner. Normalt ville knap trykket jo også blive sendt på samme måde som jeg nu sender info om diren, men når jeg trykker på en knap nu, vil adressen blive

test.php?dir=pic/test?function=make

Det er jo vist ikke så godt.

Kan jeg gøre et eller andet smart, let, simpelt, rigtigt så adressen bliver

test.php?dir=pic/test&function=make

eller kan jeg måske gemme min variable $dir på en anden måde. Eller er der måske noget der er endnu smartere ?
Avatar billede exp Juniormester
21. juli 2003 - 14:03 #1
test.php?dir=pic/test&function=make

men hvis du bruger formularer til at sende med, kan du jo bare hente variablerne via $_POST['var']
Avatar billede hurra Novice
21. juli 2003 - 14:10 #2
Ja, den første linie vidste jeg, og det er egentligt det jeg prøvede på at lave. Men når nu der står

test.php?dir=pic/test

og jeg så sender via formen, kommer der jo et "?" på ved næste variabel, og ikke et "&".

Det kan godt være jeg lige skulle bruge et lille exempel på den anden linie der du skriver. Jeg skal jo vel så ha hentet variablerne ud inden jeg sender med formen igen eller ?
Avatar billede avminarm Juniormester
21. juli 2003 - 14:15 #3
jeg ville hellere se lidt af din egen kode
Avatar billede exp Juniormester
21. juli 2003 - 14:18 #4
Forstår ikke helt hvorfor der kommer ?, men hvis du har en formular med fx en input-boks <input type='text' name='var'> og du trykker udfør, så kan indholdet af inputboksen hentes sådan:
echo $_POST['var'];
Avatar billede tipsen Nybegynder
21. juli 2003 - 14:28 #5
Avatar billede hurra Novice
21. juli 2003 - 14:33 #6
Der kommer lige lidt kode, det ehr er body fra filen test.php:

<body>
<form action="<? PHP_SELF; ?>" method="get" name="FormName">
<input type="submit" name="function" value="Make" border="0">
</form>
<?
if($function == "Make")
{
    Make();
}
View(); ?>
</body>

det her er starten af Make funktionen:
function Make()
{
    global $view;
    $dir = opendir($view);


Hvis jeg skriver
test.php?dir=pic/test&function=make
i adressebaren virker det godt nok. Jeg henter jo godt nok variablen på en anden måde end $_POST[], men man kan måske noget andet på den måde her du siger.
Avatar billede avminarm Juniormester
21. juli 2003 - 14:40 #7
kan du ikke vise hvad der er i view()
Avatar billede hurra Novice
21. juli 2003 - 14:48 #8
Jo, det virker fint nok, jeg kan både se view, og se at den faktisk viser de forskellige dirs jeg vælger. Hvis jeg står i et dir, og i adressebaren tilføjer
&function=Make
Køre den godt nok også funktionen Make, og det virker også. Men hvis jeg trykker på den knap som jeg gerne ville ha til at gøre dette, skriver den
...?view=noget?function=Make
og ikke
...?view=noget&function=Make
Avatar billede avminarm Juniormester
21. juli 2003 - 14:52 #9
derfor vil jeg gernse hvad der sker nåe der bliver trykket på denne knap - hvad er der i View()? - vis den
Avatar billede hurra Novice
21. juli 2003 - 15:20 #10
I kan lige få lov til at se siden, det hjælper nok også en hel del på forståelsen :)
http://test.b2vn.dk/
Variablerne $function og $view bliver også skrevet ud der. Funktionen view() er den der viser filerne/billederne, den virker godt nok.
Avatar billede exp Juniormester
21. juli 2003 - 15:25 #11
jeg er stadigvæk ikke med...
Avatar billede avminarm Juniormester
21. juli 2003 - 15:36 #12
jeg kan se view virker, men VIS NU KODEN FRA VIEW() (undskyld jeg råber ;o])
Avatar billede fgsupermand Nybegynder
21. juli 2003 - 15:49 #13
Jeg tror heller ikke helt jeg forstår dit spørgsmål, så snart du kliker på en "submit" knap, så vil variabler som allerede "var i url'en" forsvinde og det er kun dem som er i formen du får med over på næste side.

Derfor kan du lave en skjult "input" sådan her:
<body>
<form action="<? PHP_SELF; ?>" method="get" name="FormName">
<input type="submit" name="function" value="Make" border="0">
<input type="hidden" name="dir" value="<?=$dir?>">

</form>
<?
if($function == "Make")
osv...
Avatar billede hurra Novice
21. juli 2003 - 16:09 #14
FGsupermand> Det er jo lige det den skal. Det var godt nok let og havde ingenting med php at gøre, men det var lige det jeg havde brug for. Tak.

avminarm> Du må jo hellere få lidt kode :) Der er nu ikke mange kommentarer.
function View()
{
    global $view;
    $rowcount = 0;
    $rowlength = 4;
    $billeder = "pic";

    if(!$view)
        $fileview = $billeder."/";
    else
        $fileview = $billeder.$view."/";

//Forbind til databasen
    mysql_select_db("b2vn_dk", $db) or die("Selection error: " . mysql_error());


    $foresp = mysql_query("SELECT * FROM B2Gallery WHERE Path='$fileview' AND ByteSize=0 ORDER BY Name") or die("Invalid query: " . mysql_error());
//Vis Mapper
    echo"<table width='620' border='0' cellspacing='0' cellpadding='0'>\n";
    while($data = mysql_fetch_array($foresp, MYSQL_BOTH))
    {
        //Vis billed
        if($rowcount == 0)
            echo "  <tr>\n";
        echo"<td><div align='center'><a href='$PHP_SELF?view=/$data[1]'><img src='grafic/mappe.gif' border=0><br>$data[1]</a></div></td>";
        $rowcount++;

        if(($rowcount >= $rowlength))
        {//Er nået til enden af en række,
            echo"  </tr>\n";
            $rowcount = 0;
        }
    }
    $foresp = mysql_query("SELECT * FROM B2Gallery WHERE Path='$fileview' AND ByteSize>0 ORDER BY Name") or die("Invalid query: " . mysql_error());
//Vis billeder
    while($data = mysql_fetch_array($foresp, MYSQL_BOTH))
    {
        //Vis billed
        if($rowcount == 0)
            echo "  <tr>\n";
        echo"      <td width='150'><div align='center'><font size=1><a href='java script:openw('popup.php?url=$data[5]$data[1]&W=$data[2]&H=$data[3]')'>
            <img src='$data[5]thumb_$data[1]' border=0><br>\n";
        echo"      $data[1]</a><br>$data[2]x$data[3]<br>";
        echo number_format(round($data[4]/1024))." kb";
        echo "</font></div></td>\n";
        $rowcount++;

        if(($rowcount >= $rowlength))
        {//Er nået til enden af en række, vis nu info
            echo"  </tr>\n";
            $rowcount = 0;
        }
    }
    echo "</table>\n";
//Luk forbindelsen til databasen
    mysql_close($db);
}
Avatar billede avminarm Juniormester
21. juli 2003 - 16:29 #15
ok - hvis bare det virker for dig ;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