Avatar billede Jacobmoller Nybegynder
15. august 2012 - 17:33 Der er 7 kommentarer og
1 løsning

Kald PHP funktion i link

Hej - hvad gør jeg galt ved følgende?
Jeg vil gerne have at når jeg trykker på et link, så kører funktionen - og min URL opdateres derved.

Min kode:
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
if(!function_exists("add_var_to_url")){
    function add_var_to_url($variable_name,$variable_value,$url_string){

        if(strpos($url_string,"?")){
            $start_pos = strpos($url_string,"?");
            $url_vars_strings = substr($url_string,$start_pos+1);
            $names_and_values = explode("&",$url_vars_strings);
            $url_string = substr($url_string,0,$start_pos);
            foreach($names_and_values as $value){
                list($var_name,$var_value)=explode("=",$value);
                if($var_name != $variable_name){
                    if(strpos($url_string,"?")===false){
                        $url_string.= "?";
                    } else {
                        $url_string.= "&";
                    }
                    $url_string.= $var_name."=".$var_value;
                }
            }
        }

        if(strpos($url_string,"?")===false){
            $url_string .= "?".$variable_name."=".$variable_value;
        } else {
            $url_string .= "&".$variable_name."=".$variable_value;
        }
        return $url_string;
    }
}


$url = curPageURL();
?>
<a href="<?php add_var_to_url("category",426,$url); ?>">kategori 426</a>

OBS. Hvis jeg bare laver en echo på add_var_to_url - så skriver den url'en som den skal.
echo add_var_to_url("category",426,$url);
15. august 2012 - 20:05 #1
Hvad jeg forstår er, at du har en funktion der kaldes ved en url.  Den kode du giver i spørgsmålet genererer et link der indeholder denne url.  Så med tryk på linket skulle url'en aktiveres og funktionen udføres.  Når du echoer add_var_to_url(..) får du den forventede url udskrevet,

Du forklarer ikke hvad problemet er.  Uden tvivl udføres den forventede funktion ikke, når du trykker på linket, men hvad sker der?  Får du en fejlmelding eller en blank skærm, eller hvad?

Hvis du får den forventede url ved at echoe, så kunne det tyde på, at problemet ikke ligger i den kode du viser, men i den kode der kaldes.  Vis os den url du får udskrevet ved at echoe.  Hvis du skriver den url i adresselinjen i en browser, hvad sker der så?  Hvis koden du kalder er korrekt, så skulle funktionen udføres.
Avatar billede Jacobmoller Nybegynder
15. august 2012 - 20:38 #2
Koden generer en url der - hvis jeg selv indsætter den i adressebaren, står som den skal.

Det jeg gerne vil er at lave en <a href="#"> der selv linker direkte til den generede URL.

Derfor vil jeg gerne køre funktionen og opdatere URL'en, når jeg klikker på linket lavet ved <a href="#">
Avatar billede Jacobmoller Nybegynder
15. august 2012 - 20:49 #3
Altså hvis jeg kører en echo udskriver den:

www.domæne.dk/test.php?category=426

Jeg kan selvfølgelig løse problemet ved at køre funktionen som en variabel, og så udskrive variablen i <a href=""> - og det virker fint.
<?
$url = curPageURL();
$cat426 = add_var_to_url("category",426,$url);
$cat425 = add_var_to_url("category",425,$url);
?>
<a href="<?php echo $cat426;?>">426</a>
<a href="<?php echo $cat425;?>">425</a>

Men er der ikke en løsning hvor jeg kan gøre det direkte i linket?
15. august 2012 - 21:09 #4
Undskyld jeg er lidt sløv - jeg skal lige være sikker på, at jeg forstår.  Du siger: "Koden generer en url der - hvis jeg selv indsætter den i adressebaren, står som den skal."  Betyder det, at funktionen udføres som forventet?  Ligeledes, hvis du ændrer koden som du viser i #3 og så klikker på linket, udføres den forventede function så?  Og endnu engang:  Med den kode du viser i dit oprindelige spørgsmål, hvad sker der så når du trykker på linket?
Avatar billede Jacobmoller Nybegynder
15. august 2012 - 21:18 #5
selve funktionen genererer en URL helt som forventet.

Mit problem er egentlig blot at jeg ikke kan kalde funktionen direkte gennem et link - og det er det jeg søger en løsning på
15. august 2012 - 22:56 #6
Aha, funktionen du taler om er function curPageURL().  (Min tænkning var i denne retning:  Når der i browserens adresselinje står www.domæne.dk/test.php?category=426, så skal der ske et eller andet, og jeg troede, at det var det der ikke skete med koden i dit oprindelige spørgsmål.)  Hvad du siger er, at din kode ikke placerer en url i linket, således at www.domæne.dk/test.php?category=426 kaldes ved tryk på linket.

Det er nok fordi du skal erstatte
<a href="<?php add_var_to_url("category",426,$url); ?>">kategori 426</a>
med
<a href="<?php echo add_var_to_url("category",426,$url); ?>">kategori 426</a>
Avatar billede Jacobmoller Nybegynder
16. august 2012 - 09:41 #7
Var jeg næsten sikker på at jeg havde prøvet - men det virkede, så tak for det.

Smider du et svar?
16. august 2012 - 10:00 #8
Jamen jeg er glad for, at det endelig lykkedes os at kommunikere og at du fik det til at virke.
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

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