Foros del Web » Programando para Internet » PHP »

Ayuda porfavor!!!!.

Estas en el tema de Ayuda porfavor!!!!. en el foro de PHP en Foros del Web. Hola amigos, soy un novato en php y hoy solicito de su valiosa colaboración, hace un par de días, escribi un mensaje que se llamó ...
  #1 (permalink)  
Antiguo 26/11/2002, 10:05
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
Ayuda porfavor!!!!.

Hola amigos, soy un novato en php y hoy solicito de su valiosa colaboración, hace un par de días, escribi un mensaje que se llamó Estructura con PHP, lo que solicitaba en ese mensaje, era la forma de crear una plantilla única para mi sitio, y que lo único que fuera cambiando, fuera el contenido en cierta parte de la plantilla.

Use la opción switch que me recomendaron, pero ahora tengo el problema de que no se despliega nada en el área donde yo quiero que salga la info, mi plantilla se llama pagina.php, y en el área donde yo quiero que salga el contenido, escribo el siguiente código:

<?
switch ($seccion) {
case n3e1:
include("noticias/n3e1.dat");
break;
case n4e1:
include("noticias/n4e1.dat");
break;
}
?>
Como lo estoy probando en mi máquina escribo la siguiente dirección:
http://localhost/paginas/pagina.php?seccion=n3e1

pero lo único que sale es la plantilla y en el área donde yo quiero que salga el archivo .dat este no aparece.

Estaré haciendo algo mal?

Ayuda por favor.
  #2 (permalink)  
Antiguo 26/11/2002, 11:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Los case valor .. han de estar entre comillas (o así siempre lo he visto para cadenas; strings)

case "n3e1":

tambien puedes añadir una opcion mas:

default:
echo "No existe seccion";

al final del ultimo case/break

Y asegurate que $seccion tenga el valor esperado antes de entrar al condicional switch ... (con un echo lo puedes ver)

Un saludo,

Última edición por Cluster; 26/11/2002 a las 11:42
  #3 (permalink)  
Antiguo 26/11/2002, 13:08
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
Gracias Cluster, pero aun así no funciona, creo que hay un problema con la variable $seccion, hize la prueba definiendo esta variable así:

$seccion = "n3e1.dat"

pero me marca este error a la hora de correr el archivo:

"Parse error: parse error, unexpected T_ECHO in c:\archivos de programa\apache group\apache\htdocs\paginas\munikat2002\index.php on line 115"

y mi código empieza en la linea 113
<?
$seccion = ("n3e1.dat")
echo("$seccion") //-----------------> Linea 115
switch ($seccion) {
case "n3e1":
include("n3e1.dat");
break;
case "n4e1":
include("noticias/n4e1.dat");
break;
case "n5e1":
include("noticias/n5e1.dat");
break;
}
?>

Mi pregunta es ¿Como definir la variable seccion para que almacene cada archivo .dat?

Me haran falta más scripts?

Lo unico que tengo es mi página index.php, y en una tabla tengo el código anterior, será esto suficiente?

Perdon por la preguntadera.

Gracias de nuevo.
  #4 (permalink)  
Antiguo 26/11/2002, 13:20
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Código PHP:
echo("$seccion"//-----------------> Linea 115 
No es mejor

Código PHP:
echo $seccion
??
  #5 (permalink)  
Antiguo 26/11/2002, 13:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Se te han olvidado los ; de las lineas

$seccion = ("n3e1.dat");
echo("$seccion");

Y por cierto, ¿como tienes configurado el register_globals en el php.ini o viendo phpinfo()? Mira en el mensaje de los FAQs (primero del foro).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 26/11/2002, 16:25
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
Sigo teniendo problemas

Ha funcionado, yo creo que eran los errores de sintaxis, y tenía que habilitar register_globals, ya que se encontraba off.

Les agradezco su ayuda, gracias a todos.

Ahora han surgido 2 dudas más,

Duda No. 1

Mi archivo n3e1.dat lleva inserta una foto, pero ahora que ya funcionó el llamado, la foto no sale, mi página index.php esta ubicada en:

public_htm/index.php

y el archivo n3e1.dat esta en
public_htm/noticias/n3e1.dat (el contenido de este archivo ya se logro ver)

y la foto esta en:
public_htm/noticias/fotos/foto1.jpg (esta es la foto del archivo n3e1, que no se puede ver)

¿Tendré que poner la foto en las fotos en la carpeta public_html/fotos/foto1.jpg
y además de ello mover el archivo .dat un nivel arriba?

Duda No 2:

¿Que va a pasar cuando tenga mas de 20 noticias?

Tengo que crear 20 case en la funcion switch, es decir:

Código PHP:
<?
switch ($seccion) {
      case 
"n1":
          include(
"noticias/n3e1.dat");
      break;
      case 
"n2":
          include(
"noticias/n4e1.dat");
      break;
      
//hasta 20
      
case "n20":
          include(
"noticias/n4e1.dat");
      break;

}
?>
o existe una forma más fácil de hacerlo, (que no sea una base de datos, ya que no las puedo manejar aún)

Gracias amigos por resolver mi duda.

Saludos
  #7 (permalink)  
Antiguo 26/11/2002, 16:39
Avatar de execon  
Fecha de Ingreso: enero-2002
Ubicación: Temuco
Mensajes: 179
Antigüedad: 22 años, 3 meses
Puntos: 0
Creo que debewrias manejar las bases de datos o archivos, de otro modo tu código se incrementará infinitamente si las noticias van aumentando.

Considera esa alternativa.
__________________
----------------------------------
APP Developer
[email protected]
----------------------------------
  #8 (permalink)  
Antiguo 26/11/2002, 16:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Duda 1:

Al hacer el include() todos los path relativos se hacen relativos al script que hace el include(). Solucion: en el .dat pon los path absolutos a la imagen, ej, <img src="/noticias/fotos/foto1.jpg">

Duda 2:

Puedes usar arrays. Por ejemplo:
Código PHP:
$array_noticias=array("n1"=>"n3e1.dat""n2"=>"n4e1.dat");
include(
"/noticias/".$array_noticias[$seccion]); 
Aunque seria solo si $seccion contendria noticias. Ademas, seria muy recomendable, e incluso obligatorio (paranoias de seguridad), hacer un array_key_exists($seccion) antes del include, por si las moscas.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 26/11/2002, 17:08
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
Si no fueran solo noticias las que tuviera, tendría que hacer un array para cada sección que quiera incluir?

¿La página la llamaría de la misma forma?
www.pagina.com/index.php?seccion=n1

Me podrías dar un enlace para tomar una mejor idea de la función del array_key_exists.

Gracias.
Y hasta pronto.
  #10 (permalink)  
Antiguo 27/11/2002, 16:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, a lo que referia era que asi solo puedes incluir los ficheros que esten en el directorio noticias, porque en el include() he puesto fijo ese directorio. Pero si ponemos:
Código PHP:
$array_noticias=array("n1"=>"/noticias/n3e1.dat""n2"=>"/articulos/n4e1.dat");

include(
$array_noticias[$seccion]); 
asi podriamos incluir los ficheros de cualquier directorio.

Sobre el array_key_exists(), mira en el manual en www.php.net . Pero basicamente lo que hace el devolver true si la clave que le pasas existe en el array. Asi evitarias que intentara hacer includes de secciones no existentes.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 07:05.