Tengo que mostrar una página de mi script php en función de ciertas condiciones. Tengo una condición if y estoy haciendo una "inclusión" si la condición se cumple.
if(condition here){
include "myFile.php?id='$someVar'";
}
Ahora el problema es que el servidor tiene un archivo "myFile.php" pero quiero hacer una llamada a este archivo con un argumento (id) y el valor de "id" cambiará con cada llamada.
¿Alguien puede decirme cómo lograr esto? Gracias.
php
parameters
include
perdido en el transito
fuente
fuente
Respuestas:
Imagine la inclusión como lo que es: una copia y pegado del contenido del archivo PHP incluido que luego será interpretado. No hay ningún cambio de alcance, por lo que aún puede acceder a $ someVar en el archivo incluido directamente (aunque podría considerar una estructura basada en clases en la que pasa $ someVar como parámetro o hace referencia a algunas variables globales).
fuente
Podría hacer algo como esto para lograr el efecto que busca:
$_GET['id']=$somevar; include('myFile.php');
Sin embargo, parece que estás usando este include como una especie de llamada a función (mencionas llamarlo repetidamente con diferentes argumentos).
En este caso, ¿por qué no convertirla en una función regular, incluida una vez y llamada varias veces?
fuente
include("myFile.php?id=$somevar");
idéntico?include("myFile.php?...
no funciona según lo previsto.Una inclusión es como una inserción de código. Obtiene en su código incluido exactamente las mismas variables que tiene en su código base. Entonces puedes hacer esto en tu archivo principal:
<? if ($condition == true) { $id = 12345; include 'myFile.php'; } ?>
Y en "myFile.php":
<? echo 'My id is : ' . $id . '!'; ?>
Esto dará como resultado:
fuente
Si va a escribir esto, incluya manualmente en el archivo PHP: la respuesta de Daff es perfecta.
De todos modos, si necesita hacer lo que era la pregunta inicial, aquí hay una pequeña función simple para lograrlo:
<?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); }
?>
Estoy usando esta construcción de variable variable muy a menudo.
fuente
En el archivo que incluye, envuelva el html en una función.
<?php function($myVar) {?> <div> <?php echo $myVar; ?> </div> <?php } ?>
En el archivo donde desea que se incluya, incluya el archivo y luego llame a la función con los parámetros que desee.
fuente
Sé que ha pasado un tiempo, sin embargo, me pregunto si la mejor manera de manejar esto sería utilizar la (s) variable (s) de sesión be
En su myFile.php tendrías
<?php $MySomeVAR = $_SESSION['SomeVar']; ?>
Y en el archivo de llamadas
<?php session_start(); $_SESSION['SomeVar'] = $SomeVAR; include('myFile.php'); echo $MySomeVAR; ?>
¿Eludiría esto la necesidad "sugerida" de Funcionalizar todo el proceso?
fuente
Me encontré con esto al hacer formularios ajax donde incluyo varios conjuntos de campos. Tomando por ejemplo una solicitud de empleo. Empiezo con un conjunto de referencia profesional y tengo un botón que dice "Agregar más". Esto hace una llamada ajax con un parámetro $ count para incluir el conjunto de entrada nuevamente (nombre, contacto, teléfono, etc.). Esto funciona bien en la llamada de la primera página, ya que hago algo como:
<?php include('references.php');` ?>
El usuario presiona un botón que hace una llamada ajax
Luego, dentro del archivo referencias.php tengo algo como:ajax('references.php?count=1');
<?php $count = isset($_GET['count']) ? $_GET['count'] : 0; ?>
También tengo otras inclusiones dinámicas como esta en todo el sitio que pasan parámetros. El problema ocurre cuando el usuario presiona enviar y hay un error de formulario. Entonces, ahora para no duplicar el código para incluir esos conjuntos de campos adicionales que se incluyeron dinámicamente, creé una función que configurará la inclusión con los parámetros GET apropiados.
<?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]); } ?>
La función busca parámetros de consulta y los agrega automáticamente a la variable $ _GET. Esto ha funcionado bastante bien para mis casos de uso.
Aquí hay un ejemplo en la página del formulario cuando se llama:
<?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; } } ?>
Otro ejemplo más de cómo incluir parámetros GET de forma dinámica para adaptarse a determinados casos de uso. Espero que esto ayude. Tenga en cuenta que este código no está en su estado completo, pero esto debería ser suficiente para que cualquiera pueda comenzar bastante bien en su caso de uso.
fuente
La forma más sencilla de hacer esto es así
index.php
<?php $active = 'home'; include 'second.php'; ?>
second.php
<?php echo $active; ?>
Puede compartir variables ya que está incluyendo 2 archivos usando "incluir"
fuente
Tu pregunta no es muy clara, pero si quieres incluir el archivo php (agrega la fuente de esa página al tuyo), solo tienes que hacer lo siguiente:
if(condition){ $someVar=someValue; include "myFile.php"; }
Siempre que la variable se llame $ someVar en myFile.php
fuente
Yo estaba en la misma situación y necesitaba incluir una página enviando algunos parámetros ... Pero en realidad lo que quería hacer es redirigir la página ... si es tu caso, el código es:
<?php header("Location: http://localhost/planner/layout.php?page=dashboard"); exit(); ?>
fuente
Si alguien más está en esta pregunta, cuando se usa
include('somepath.php');
y ese archivo contiene una función, la var también debe declararse allí. La inclusión de$var=$var;
no siempre funcionará. Intente ejecutar estos: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]; } ?>
fuente
También puede utilizar
$GLOBALS
para resolver este problema.$myvar = "Hey"; include ("test.php"); echo $GLOBALS["myvar"];
fuente
Hacer esto:
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);
Y agregue a su
insert.php
archivo:$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"; }
fuente