Foros del Web » Programando para Internet » PHP »

variables en los includes

Estas en el tema de variables en los includes en el foro de PHP en Foros del Web. A ver si alguien me puede ayudar con lo siguiente: No consigo que una variable, $af, por ejemplo, tome un valor determinado cuando está dentro ...
  #1 (permalink)  
Antiguo 08/04/2003, 15:51
 
Fecha de Ingreso: junio-2002
Mensajes: 14
Antigüedad: 21 años, 9 meses
Puntos: 1
Mensaje variables en los includes

A ver si alguien me puede ayudar con lo siguiente:
No consigo que una variable, $af, por ejemplo, tome un valor determinado cuando está dentro de un include y sí lo hace normalmente si escribo el contenido del archivo en el script principal sin utilizar el include (archivo.php)
(En dicho archivo abro y cierro <? php ?>)

Saludos

José Antonio
  #2 (permalink)  
Antiguo 08/04/2003, 16:00
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 1 mes
Puntos: 0
hola,

eso no debería pasar, todas las variables en los includes pasan al contexto del script principal. lo más probable es que esté fallando el include. comprueba si está fallando asignándole una variable al comando include, como

$incluir = include 'archivo.inc';

si $incluir devuelve false, o 0, es que falló; si haces

echo $incluir

e imprime "1" quiere decir que devolvió true... a mí me pasa que al hacerle un echo a esa variable, si la variable es false, o 0, no imprime nada, así que si no imprime nada es que está devolviendo false también

una solución más elegante sería usar "require" en lugar de include. require es para cuando el archivo a incluir se necesita sí o sí dentro del script principal; si require falla, entonces todo el script se interrumpe.

require 'archivo.inc';


saludos
__________________
webdeveloper
http://www.javascripters.com.ar/
diseño web y tecnología
  #3 (permalink)  
Antiguo 08/04/2003, 16:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cuando llamas a un scritp/archivo via include() .. se "mezcla" tu código de la página que lo llama junto con el código que insertas en el mismo punto que lo llamas (q haces el include) ..

Por ende, para "preseleccionar o pasar" una variable (su estado) al scritp que estas incluyendo .. debes de hacerlo "antes" de que llames a tu script.

osese:

Código PHP:
<?
$variable
="hola";
include(
"mensaje.php");
?>
donde mensaje.php sería por ejemplo:

Código PHP:
<?
echo $variable;
?>
Para no ir "desperdigando" include() en el momento que requieras "pasar" una variable al include que llamas lo que se usa son Funciones .. Las funciones las guardas en tu "include()" .. el include lo llamas al principio de tu scrip .. y le pasas variables a tus funciones via valor/referencia/globales ...

Ejemplo:

Código PHP:
<?
include("funciones.php");
mensaje("hola"); 
// bla bla bla código
mensaje("adios");
?>
siendo funciones.php
Código PHP:
<?
function mensaje($mensaje){ // la funcion q declaro y llamo cuando necesite ..
   
echo $mensaje;
}
?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 09/04/2003, 17:05
 
Fecha de Ingreso: junio-2002
Mensajes: 14
Antigüedad: 21 años, 9 meses
Puntos: 1
Sigue sin funcionar include

Hola,
utilizo un include () y no un require () porque necesito que funcione dentro de la condición if...

Ejemplo:

$CODIGO=125;
$PRODUCTO=12;
IF ($PRODUCTO=12){
include (archivo.php);
}

---------------------------------
donde archivo.php es:

<?
echo '<a href="http://dominio.com/index.php?COD='.$CODIGO.'&PRODUCTO=12"> LINK <a>';
?>
---------------------------------------
esto me imprime el link siguiente:

http://dominio.com/index.php?COD=&PRODUCTO=12

y yo necesito que cree el siguiente:

http://dominio.com/index.php?COD=125&PRODUCTO=12

seguro que es algo sencillo porque el inlclude funciona pero la variable no toma su valor....

saludos

José Antonio
  #5 (permalink)  
Antiguo 10/04/2003, 07:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No sé si fué error al cortar y pegar tu código .. pero:

El "signo" de "igualdad" en un condicional es == (doble =) el = simple es "asignación" y el === (triple =) es exacto (en tipo de variable y valor .. el == solo es en valor )

El include() o requiere() o lo que sea la ruta que le indicas es una cadena "string" .. así que tiene ir entre comillas ..

Código PHP:
$CODIGO=125;
$PRODUCTO=12;
IF (
$PRODUCTO==12){
include (
"archivo.php");

Así funciona correctamente .. con tu $codigo donde debe ir ..

Ahora .. Si $CODIGO lo estas pasando desde otra página via URL o formulario .. Deberias recoger las variables por sú método de envio .. ya sea GET o POST (en las FAQ's de este foro tienes una explicación al respecto).

Un saludo,

pd: Para otra vez .. en lugar de intentar "explicarlo" con palabras en un principio pon el ejemplo que estes usando .. Veras que se te resuelven más rápido las preguntas.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 10/04/2003 a las 07:24
  #6 (permalink)  
Antiguo 13/04/2003, 05:33
 
Fecha de Ingreso: junio-2002
Mensajes: 14
Antigüedad: 21 años, 9 meses
Puntos: 1
Ejemplo completo

Voy a poner un ejemplo concreto y un link de comprobación, pues sigo sin ver el error....

archivo index.php
--------------------------------------------------------------
Código PHP:
<?
include ('http://www.registrar-dominio.com/documentos/header.html');
if (
$oferta=='registrar_dominio'){
include (
'http://www.registrar-dominio.com/documentos/dominio.php');
}
elseif (
$oferta=='servidor_economico'){
    include (
'http://www.registrar-dominio.com/documentos/economico.php');
}
else {
    include (
'http://www.registrar-dominio.com/documentos/portada.html');
}
include (
'http://www.registrar-dominio.com/documentos/botton.html');
?>
-------------------------------------------------------------------
Archivo economico.php :

------------------------------------------------------------------------
Código PHP:
<? echo '
<table border="0" width="100%" cellspacing="4">
        <tr>
          <td bgcolor="#FFFFFF" width="50%" valign="top">
            <p align="center"><font face="Arial" color="#cc3333" size="4"><u>Oferta
            Económica Profesional</u></font></p>
            <p align="left">El alojamiento web mas <b>profesional</b> ahora en
            su versión mas <b>económica</b> mantiene el 100% de su <b>rendimiento</b>.</p>
            <p align="left">Contrate ahora el <b>Plan Económico Profesional</b>
            y disfrute del mejor alojamiento web para su empresa o negocio on-line.</p>
            <p align="left">Gracias a esta oferta puede disfrutar de:</p>
            <ul>
              <li>
                <p align="left">Su propio Nombre de Dominio <a href="http://www.miempresa.com">www.miempresa.com</a></p>
              <li>
                <p align="left">Su propio email <a href="mailto:[email protected]">[email protected]</a>&nbsp;</p>
              <li>
                <p align="left">Buzones de email POP (5) e ilimitados alias de
                email.</p>
              <li>
                <p align="left">Autorrespondedores de correo.</p>
              <li>
                <p align="left">Su propia lista de correo.</p>
              <li>
                <p align="left">Antivirus en el servidor actualizado a diario.</p>
              <li>
                <p align="left">50 Mbytes de espacio web y 1 Gbyte de
                transferencia mensual.</p>
              <li>
                <p align="left">Soporte de sus propios CGI, Php, Base de datos
                MySQL.</p>
              <li>
                <p align="left">Extensiones de FrontPage.</p>
              <li>
                <p align="left">Soporte por email 24/7/365.</p>
              <li>
                <p align="left">Cuentas FTP (5)</p>
              <li>
                <p align="left">Disponibilidad 99.8 %</p>
              <li>
                <p align="left">Panel de Control de Administrador basado en web.</p>
              </li>
            </ul>
            <p align="left">Precio: 120 €/año<font size="1">* + IVA</font>
            <p align="left"><b><a href="http://www.dominios15.com/servidores/formulario3.php?af='
.$afiliado.'&amp;pid=16">Contratar
            ahora.</a> <font size="1">*</font></b><font size="1">Oferta válida
            hasta final de mes.</font>
                      </td>
        </tr>
  </center>
  <center>
        <tr>
          <td bgcolor="#FFFFFF" width="50%" valign="top">
            <p align="center"><font face="Arial" color="#cc3333" size="4"><u>Ampliaciones</u></font></p>
            <ul>
              <li>
                <p align="left">Planes totalmente ampliables en cualquier
                momento.</p>
              <li>
                <p align="left">Instalación de Software para creación y gestión
                de portales.(Nuke) <b><font size="2">Precio 60 € una sola vez.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <a href="http://www.fuera.org" target="_blank">Ejemplo</a></font></b></p>
              <li>
                <p align="left">Instalación de Software para creación y gestión
                de Tienda Virtual. (osCommerce) <b><font size="2">Precio 200 €
                una sola vez <a href="http://www.dominios15.com/catalog/" target="_blank">Ejemplo</a></font></b></p>
              </li>
            </ul>
            <p align="left">Solicitar en el momento de la contratación o en
            cualquier momento por email: <font size="2"><b><a href="mailto:[email protected]">[email protected]</a></b></font>
          </td>
        </tr>
        <tr>
          <td bgcolor="#FFFFFF" width="50%" valign="top">&nbsp;</td>
        </tr>
      </table> '
?>
-----------------------------------------------------------------------
Para probar en el servidor usar este enlace:

http://www.registrar-dominio.com/index.php?oferta=servidor_economico&afiliado=prueb [email protected]

http://www.registrar-dominio.com/[email protected]
  #7 (permalink)  
Antiguo 13/04/2003, 14:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Supongo que te refieres a la variable afiliado. Prueba a hacer un echo $afiliado antes del include() a ver que te muestra. Puede ser que en alguno de los otros includes pises el valor de la variable.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 15/04/2003, 06:07
 
Fecha de Ingreso: junio-2002
Mensajes: 14
Antigüedad: 21 años, 9 meses
Puntos: 1
Si lo hago antes del include si funciona echo $afiliado pero no funciona si lo hago dentro del include.

Saludos
  #9 (permalink)  
Antiguo 15/04/2003, 14:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Te pido perdon, ayer no estaba muy despierto. Con el codigo que me pusiste ya podia haberte contestado. Pero mas vale tarde que nunca.

El problema esta en que haces tus include() con la URL del script que quieres incluir, en lugar de con el PATH del script. La diferencia esta que con la URL, tal como lo haces tu, lo que se incluye es el HTML generado por PHP al ejecutar el script cuya URL has puesto. Mientras que usando el PATH, lo que se incluye es el codigo PHP del script. No se si me explico. Pongamos un ejemplo. Sea p1.php el script que quieres incluir:
Código PHP:
<?php
echo '<!-- fichero incluido -->';
echo 
'Hola, '.$nombre.' ¿como estas?';
?>
Caso A: con URL
Código PHP:
<?php
$nombre
='josemi';
include(
"http://midominio.tld/p1.php");
?>
esto es equivalente a:
Código PHP:
<?php
$nombre
='josemi';
?>
<!-- fichero incluido -->Hola,  ¿como estas?
<?php
?>
Lo que se ha incluido es el codigo HTML generado al llamar al servidor web la URL http://midominio.tld/p1.php .

Caso B: usando el PATH
Código PHP:
<?php
$nombre
='josemi';
include(
"./p1.php"); // ./ es para decir que estan en el mismo directorio
?>
esto equivale a
Código PHP:
<?php
$nombre
='josemi';
?>
<?php
echo '<!-- fichero incluido -->';
echo 
'Hola, '.$nombre.' ¿como estas?';
?>
<?php
?>
Se incluye el codigo PHP que se ejecuta bien.

Solucion a tu problema: si ambos scripts estan el mismo servidor usa el PATH; si los scripts estan en distintos servidores usa la URL pero pasandole los valores por la URL como en los links normales.

Ya siento no haberme dado cuenta ayer.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 16/04/2003, 12:41
 
Fecha de Ingreso: junio-2002
Mensajes: 14
Antigüedad: 21 años, 9 meses
Puntos: 1
Te agradezco mucho, enseguida lo pruebo y...
... no tienes nada que sentir, hombre!!! todo lo contrario.

A estas alturas ya habrás visto que el archivo en cuestión se tiene que poder incluir desde cualquier servidor... así sólo con modificar uno tendré modificados todos los webs... por eso es necesario utilizar la URL

Una vez más, gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:13.