21. juli 2003 - 13:58Der 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 ?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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 ?
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'];
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.
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
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.
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?>">
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";
//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); }
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.