Saya harus menampilkan halaman dari skrip php saya berdasarkan kondisi tertentu. Saya memiliki kondisi if dan saya melakukan "include" jika kondisinya memuaskan.
if(condition here){
include "myFile.php?id='$someVar'";
}
Sekarang masalahnya adalah server memiliki file "myFile.php" tetapi saya ingin membuat panggilan ke file ini dengan argumen (id) dan nilai "id" akan berubah dengan setiap panggilan.
Bisakah seseorang memberi tahu saya cara mencapai ini? Terima kasih.
php
parameters
include
lostInTransit
sumber
sumber
Jawaban:
Bayangkan penyertaan seperti apa adanya: Salinan & tempel konten dari file PHP yang disertakan yang kemudian akan diinterpretasikan. Tidak ada perubahan cakupan sama sekali, jadi Anda masih dapat mengakses $ someVar di file yang disertakan secara langsung (meskipun Anda mungkin mempertimbangkan struktur berbasis kelas di mana Anda meneruskan $ someVar sebagai parameter atau merujuk ke beberapa variabel global).
sumber
Anda dapat melakukan sesuatu seperti ini untuk mencapai efek yang Anda inginkan:
$_GET['id']=$somevar; include('myFile.php');
Namun, sepertinya Anda menggunakan ini termasuk seperti beberapa jenis panggilan fungsi (Anda menyebutkan memanggilnya berulang kali dengan argumen yang berbeda).
Dalam hal ini, mengapa tidak mengubahnya menjadi fungsi biasa, termasuk sekali dan dipanggil beberapa kali?
sumber
include("myFile.php?id=$somevar");
identik?include("myFile.php?...
tidak berfungsi sebagaimana mestinya.Termasuk seperti penyisipan kode. Anda mendapatkan kode yang disertakan variabel yang sama persis dengan yang Anda miliki di kode dasar Anda. Jadi Anda dapat melakukan ini di file utama Anda:
<? if ($condition == true) { $id = 12345; include 'myFile.php'; } ?>
Dan di "myFile.php":
<? echo 'My id is : ' . $id . '!'; ?>
Ini akan menghasilkan:
sumber
Jika Anda akan menulis ini termasuk secara manual di file PHP - jawaban Daff sempurna.
Bagaimanapun, jika Anda perlu melakukan apa yang menjadi pertanyaan awal, berikut adalah fungsi sederhana kecil untuk mencapai itu:
<?php // Include php file from string with GET parameters function include_get($phpinclude) { // find ? if available $pos_incl = strpos($phpinclude, '?'); if ($pos_incl !== FALSE) { // divide the string in two part, before ? and after // after ? - the query string $qry_string = substr($phpinclude, $pos_incl+1); // before ? - the real name of the file to be included $phpinclude = substr($phpinclude, 0, $pos_incl); // transform to array with & as divisor $arr_qstr = explode('&',$qry_string); // in $arr_qstr you should have a result like this: // ('id=123', 'active=no', ...) foreach ($arr_qstr as $param_value) { // for each element in above array, split to variable name and its value list($qstr_name, $qstr_value) = explode('=', $param_value); // $qstr_name will hold the name of the variable we need - 'id', 'active', ... // $qstr_value - the corresponding value // $$qstr_name - this construction creates variable variable // this means from variable $qstr_name = 'id', adding another $ sign in front you will receive variable $id // the second iteration will give you variable $active and so on $$qstr_name = $qstr_value; } } // now it's time to include the real php file // all necessary variables are already defined and will be in the same scope of included file include($phpinclude); }
?>
Saya sering menggunakan konstruksi variabel variabel ini.
sumber
Di file yang Anda sertakan, bungkus html dalam sebuah fungsi.
<?php function($myVar) {?> <div> <?php echo $myVar; ?> </div> <?php } ?>
Di file di mana Anda ingin memasukkannya, sertakan file tersebut dan kemudian panggil fungsi dengan parameter yang Anda inginkan.
sumber
Saya tahu ini sudah lama, namun, saya bertanya-tanya apakah cara terbaik untuk menangani ini adalah dengan memanfaatkan variabel sesi be
Di myFile.php Anda, Anda akan memilikinya
<?php $MySomeVAR = $_SESSION['SomeVar']; ?>
Dan di file panggilan
<?php session_start(); $_SESSION['SomeVar'] = $SomeVAR; include('myFile.php'); echo $MySomeVAR; ?>
Apakah ini akan menghindari kebutuhan yang "disarankan" untuk memfungsikan seluruh proses?
sumber
Saya telah mengalami ini saat melakukan formulir ajax di mana saya menyertakan beberapa set bidang. Mengambil contoh lamaran kerja. Saya memulai dengan satu set referensi profesional dan saya memiliki tombol yang bertuliskan "Tambahkan Lebih Banyak". Ini melakukan panggilan ajax dengan parameter $ count untuk memasukkan set input lagi (nama, kontak, telepon .. dll) Ini berfungsi dengan baik pada panggilan halaman pertama karena saya melakukan sesuatu seperti:
<?php include('references.php');` ?>
Pengguna menekan tombol yang membuat panggilan ajax
Kemudian di dalam file reference.php saya memiliki sesuatu seperti:ajax('references.php?count=1');
<?php $count = isset($_GET['count']) ? $_GET['count'] : 0; ?>
Saya juga memiliki penyertaan dinamis lainnya seperti ini di seluruh situs yang meneruskan parameter. Masalahnya terjadi ketika pengguna menekan kirim dan ada kesalahan formulir. Jadi sekarang untuk tidak menduplikasi kode untuk memasukkan set field ekstra yang disertakan secara dinamis, saya membuat fungsi yang akan mengatur include dengan params GET yang sesuai.
<?php function include_get_params($file) { $parts = explode('?', $file); if (isset($parts[1])) { parse_str($parts[1], $output); foreach ($output as $key => $value) { $_GET[$key] = $value; } } include($parts[0]); } ?>
Fungsi ini memeriksa parameter kueri, dan secara otomatis menambahkannya ke variabel $ _GET. Ini telah bekerja cukup baik untuk kasus penggunaan saya.
Berikut adalah contoh di halaman formulir saat dipanggil:
<?php // We check for a total of 12 for ($i=0; $i<12; $i++) { if (isset($_POST['references_name_'.$i]) && !empty($_POST['references_name_'.$i])) { include_get_params(DIR .'references.php?count='. $i); } else { break; } } ?>
Contoh lain dari memasukkan parameter GET secara dinamis untuk mengakomodasi kasus penggunaan tertentu. Semoga ini membantu. Harap dicatat kode ini tidak dalam keadaan lengkap tetapi ini seharusnya cukup untuk membuat siapa pun memulai dengan cukup baik untuk kasus penggunaan mereka.
sumber
Cara termudah untuk melakukannya adalah seperti ini
index.php
<?php $active = 'home'; include 'second.php'; ?>
second.php
<?php echo $active; ?>
Anda dapat berbagi variabel karena Anda menyertakan 2 file dengan menggunakan "sertakan"
sumber
Pertanyaan Anda tidak terlalu jelas, tetapi jika Anda ingin menyertakan file php (tambahkan sumber halaman itu ke Anda), Anda hanya perlu melakukan hal berikut:
if(condition){ $someVar=someValue; include "myFile.php"; }
Selama variabel itu bernama $ someVar di myFile.php
sumber
Saya berada dalam situasi yang sama dan saya perlu menyertakan halaman dengan mengirimkan beberapa parameter ... Tetapi pada kenyataannya yang ingin saya lakukan adalah mengarahkan ulang halaman ... jika kasusnya untuk Anda, kodenya adalah:
<?php header("Location: http://localhost/planner/layout.php?page=dashboard"); exit(); ?>
sumber
Jika ada orang lain dalam pertanyaan ini, saat menggunakan
include('somepath.php');
dan file itu berisi fungsi, var juga harus dideklarasikan di sana. Dimasukkannya$var=$var;
tidak selalu berhasil. Coba jalankan ini:one.php:
<?php $vars = array('stack','exchange','.com'); include('two.php'); /*----- "paste" contents of two.php */ testFunction(); /*----- execute imported function */ ?>
two.php:
<?php function testFunction(){ global $vars; /*----- vars declared inside func! */ echo $vars[0].$vars[1].$vars[2]; } ?>
sumber
Anda juga dapat menggunakan
$GLOBALS
untuk mengatasi masalah ini.$myvar = "Hey"; include ("test.php"); echo $GLOBALS["myvar"];
sumber
Melakukan hal ini:
NSString *lname = [NSString stringWithFormat:@"var=%@",tname.text]; NSString *lpassword = [NSString stringWithFormat:@"var=%@",tpassword.text]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:@"http://localhost/Merge/AddClient.php"]]; [request setHTTPMethod:@"POST"]; [request setValue:@"insert" forHTTPHeaderField:@"METHOD"]; NSString *postString = [NSString stringWithFormat:@"name=%@&password=%@",lname,lpassword]; NSString *clearpost = [postString stringByReplacingOccurrencesOfString:@"var=" withString:@""]; NSLog(@"%@",clearpost); [request setHTTPBody:[clearpost dataUsingEncoding:NSUTF8StringEncoding]]; [request setValue:clearpost forHTTPHeaderField:@"Content-Length"]; [NSURLConnection connectionWithRequest:request delegate:self]; NSLog(@"%@",request);
Dan tambahkan ke
insert.php
file Anda :$name = $_POST['name']; $password = $_POST['password']; $con = mysql_connect('localhost','root','password'); $db = mysql_select_db('sample',$con); $sql = "INSERT INTO authenticate(name,password) VALUES('$name','$password')"; $res = mysql_query($sql,$con) or die(mysql_error()); if ($res) { echo "success" ; } else { echo "faild"; }
sumber