2013-07-09 12 views
5

Czy można utworzyć łącze HREF, które wywołuje funkcję PHP i przekazuje wraz z nią zmienną?HREF wywołać funkcję PHP i przekazać zmienną?

<?php 
function sample(){ 
    foreach ($json_output->object){ 
     $name = "{$object->title}"; 
     $id = "{$object->id}"; 

     print "<a href='search($id)' >$name</a>"; 
    } 
} 

function search($id){ 
    //run a search via the id provide by the clicking of that particular name link 
} 
?> 
+1

Jest możliwe użycie AJAX z linku HTML zadzwonić skrypt PHP, przekazując wartości i powrocie coś, ale co masz nie zadziała. – Revent

+0

@ Czy jeśli wstawię przycisk wprowadzania i przesyłania każdego linku, czy to zadziała? – Squirtle

+0

Prawdopodobnie nie tak, jak myślisz. Nie ma ** sposobu na wywołanie funkcji PHP bez wysyłania kolejnego żądania do serwera. –

Odpowiedz

1

Nie, przynajmniej nie bezpośrednio.

  1. Można połączyć do adresu URL
  2. Można zawierać dane w ciągu kwerendy tego URL (<a href="myProgram.php?foo=bar">)
  3. To URL mogą być obsługiwane przez program PHP
  4. Program PHP można nazwać funkcja jako jedyną rzeczą, to nie
  5. można przekazać dane z $_GET['foo'] do tej funkcji
+0

, jeśli wstawię przycisk wprowadzania i przesyłania na każdym łączu, czy to zadziała? – Squirtle

+0

Nie. Możesz użyć formularza z przyciskiem przesyłania * zamiast linku * (a następnie zmienić krok 1 odpowiedzi na "Możesz wysłać formularz na adres URL"), ale nie możesz umieścić przycisku wewnątrz linku (lub nawzajem). – Quentin

-1

Tak, jest to możliwe, b ut potrzebujesz struktury typu MVC i włączone jest również przepisywanie URL-a na .htaccess.

Oto kilka materiałów do czytania, które pomogą Ci zrozumieć, czym jest MVC.

http://www.phpro.org/tutorials/Model-View-Controller-MVC.html 

A jeśli chcesz wybrać słodki ramy, zamiast wymyślać koło MVC, bardzo sugerują, LARAVEL 4

+0

Dlaczego upadek ?? Jest to uzasadniona odpowiedź jak każda inna. To prawda ... jeśli OP chce mnóstwa funkcji i tych funkcji, które mogą być "stronami", które można nazwać, wtedy MVC jest sposobem na obejście tego problemu. – KyleK

+0

MVC jest zbyt skomplikowane dla tego, co OP próbuje zrobić. Po prostu poznaj małą AJAX. –

+0

Ajax jest zbyt skomplikowany dla tego, o co prosił OP o – Quentin

2

Potrzeby wyjściowe HTML wyglądać

<a href="php_file.php?id=1">anchor text</a> 

czynność będzie trzeba wyprowadzić te informacje w tym formacie.

2

Nie, nie możesz tego zrobić bezpośrednio. Możesz tylko połączyć z adresem URL.

W tym przypadku, można przekazać nazwę funkcji i parametrów w ciągu kwerendy, a następnie obsługiwać go w PHP, jak pokazano poniżej:

print "<a href='yourphpscript.php?fn=search&id=$id' >$name</a>"; 

I w kodzie PHP:

if ($_GET['fn'] == "search") 
    if (!empty($_GET['id'])) 
      search($id); 

Upewnij się, że odkażasz parametry GET.

+0

Czy "yourphpscript.php" musi odnosić się do tej samej strony php, co instrukcja print wyprowadzająca link? Czy musi być na innej stronie? Nie ma znaczenia? –

+1

Może to być ta sama strona lub inna. Nie ma znaczenia – janenz00

+0

OK, to ma sens. Próbowałem użyć innej strony i działało dobrze. –

9

Możesz to łatwo zrobić bez korzystania z frameworka. Domyślnie wszystko, co przychodzi po? w adresie URL jest zmienną GET.

Tak na przykład, www.google.com/search.html?term=blah

pójdzie do www.google.com/search.html, i przekazać zmienną GET „pojęcie” o wartości "bla".

wielu zmiennych może być oddzielone &

Tak na przykład www.google.com/search.html?term=blah & TERM2 = chłodna

Sposób GET niezależnie PHP i jest częścią specyfikacji HTTP.

PHP obsługuje żądania GET w prosty sposób, automatycznie tworząc superglobalną zmienną $ _GET [], gdzie każdy indeks tablicy jest nazwą zmiennej GET, a wartość indeksu tablicy jest wartością zmiennej.

Oto kod demo, aby pokazać jak to działa:

<?php 
    //check if the get variable exists 
    if (isset($_GET['search'])) 
    { 
     search($_GET['search']); 
    } 

    function Search($res) 
    { 
     //real search code goes here 
     echo $res; 
    } 


?> 

<a href="?search=15">Search</a> 

który będzie drukować 15, ponieważ jest to wartość wyszukiwania i moje poszukiwania funkcja manekin tylko wypisuje żadnych rezultatów to dostaje

0

Wystarczy zrobić to

<?php 
function sample(){ 
    foreach ($json_output->object){ 
     $name = "{$object->title}"; 
     $id = "{$object->id}"; 

     print "<a href='?search=" . $id . "' > " . $name . "</a>"; 
    } 
} 

if (isset($_REQUEST['search'])) { 
    search($_REQUEST['search']); 
} 

function search($id){ 
    //run a search via the id provide by the clicking of that particular name link 
} 
?> 

również upewnić się, że jest dostępny z $json_output jest funkcja sample().
Można zrobić to albo sposób

<?php 
function sample(){ 
    global $json_output; 
    // rest of the code 
} 
?> 

lub

<?php 
function sample($json_output){ 
    // rest of the code 
} 
?> 
0

zestaw ciąg kwerendy w swój link na href o wartości i do niego dostęp z $_GET lub $_REQUEST

<?php 
    if (isset($_REQUEST['search'])) { 
     search($_REQUEST['search']); 
    } 

    function Search($res) { 
     // search here 
    } 

    echo "<a href='?search='" . $id . "'>" . $name . "</a>"; 
?> 
1

Tak, można Zrób to. Przykład:

ze swojego widzenia:

<p><a href="test/1" class="btn blue">Edit</a> 

Gdzie 1 jest parametrem chcesz wysłać. Mogą to być również dane pobierane z obiektu.

Od kontrolera:

function test($id){ 
    #code... 
} 
Powiązane problemy