Foros del Web » Programando para Internet » PHP »

problema: funciones php y ajax

Estas en el tema de problema: funciones php y ajax en el foro de PHP en Foros del Web. Saludos, no se si esto valla en php o javascript, si esta mal aqui porfavor disculpen. Tengo estos archivos: index.php Código: include('a.php'); include('b.php'); mas includes... ...
  #1 (permalink)  
Antiguo 28/02/2012, 02:17
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 9 meses
Puntos: 3
problema: funciones php y ajax

Saludos, no se si esto valla en php o javascript, si esta mal aqui porfavor disculpen.

Tengo estos archivos:



index.php
Código:
include('a.php');
include('b.php');

mas includes...


a.php
Código:
function fech($tiempo){

	 $dia   = date("j",$tiempo); 

	 $mes   = date("n",$tiempo); if($mes==1){$mes="Enero";} elseif($mes==2){$mes="febrero";} elseif($mes==3){$mes="Marzo";} elseif($mes==4){$mes="Abril";} elseif($mes==5){$mes="Mayo";} elseif($mes==6){$mes="Junio";} elseif($mes==7){$mes="Julio";} elseif($mes==8){$mes="Agosto";} elseif($mes==9){$mes="Septiembre";} elseif($mes==10){$mes="Octubre";} elseif($mes==11){$mes="Noviembre";} elseif($mes==12){$mes="Diciembre";}

	 $año   = date("o",$tiempo);

	 $horas = date("g a",$tiempo);

	 $tiempo  = "El $dia de $mes del $año a las $horas";

	 return $tiempo;
}


b.php
Código:
echo'<div id="ajax">';

$link = mysql_query("SELECT * FROM tabla WHERE campo=$_GET[campo]); 

while($row = mysql_fetch_array($link)) {

echo'

'.fech($row[fecha]).'

'.row[campo].'

'.row[campo].'

'.row[campo].'

</div>;

}

Todo funciona muy bien el index, solo contiene los includes, a.php es solo una funcion para transformar la fecha, y b.php es donde se muestran los datos, todo funciona muy bien aqui, el problema es cuando mando el valor $_GET[campo] por ajax, pues se actualiza todo lo que es <div id="ajax"> entonces me marca un error de que no he declarado la funcion fech(), y yo se es logico, porque solo actualizo b.php, y ahi no se encuentra fech(). El problema es que cree esa funcion por que la utilizo en muchos archivos, asi que poner todo ese codigo en cada archivo seria molestoso, y no se si hay una forma que se pueda arreglar.
  #2 (permalink)  
Antiguo 28/02/2012, 02:59
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: problema: funciones php y ajax

El problema es el orden en la inclusión de archivos, si b.php hace referencia a funciones en a.php no te queda otra alternativa que incluirlo. Sin entrar mucho en detalles, tal vez tendrías que seguir un poco el modelo MVC. Si index.php inicia la acción, no deberías tener el output en b.php que es un archivo incluído y mucho menos con echo, pero ese es otro tema. En principio el orden de inclusión de los archivos solucionaría el error que tienes ahora. Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 28/02/2012, 11:26
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: problema: funciones php y ajax

Como arias esto usando el modelo MVC que dices? Y pues como comente antes, utilizo esa funcion es casi todos los archivos, seria un poco molesto escribirla en todos ellos.
  #4 (permalink)  
Antiguo 28/02/2012, 11:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema: funciones php y ajax

Lo que tienes que hacer es tener por ejemplo tus funciones separadas en un archivo/archivos, por ejemplo esa de fech() la pones en un archivo: includes/funciones/fechas.php

Luego en tus archivos PHP donde haces ya la implementación de tus funciones, o a donde llegan tus requests (por ejemplo index.php / ajax.php, etc.) Solamente las incluyes, así las puedes incluir varias veces en todos tus archivos sin problema.
  #5 (permalink)  
Antiguo 28/02/2012, 11:35
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: problema: funciones php y ajax

No tienes que "escribir" la función en todos los archivos sino mas bien, tenerla en un lugar donde sea accesible para todos los archivos. Es decir, en un archivo php que te asegures que siempre será incluído como ocurre, por ejemplo, con las conexiones a la DB.
Respecto de MCV es un tema un poco extenso, pero en pocas palabras, separa la vista del controlador, o sea, separa el HTML del PHP. Intenta no hacer esos echo de html dentro de variables. Como poco, si vas a mezclar código, prueba algo así:

<?php
//codigo php, variables, etc...
?>
<table>.... y ahora sueltas todo el html.

Algo que te puede ayudar si no trabajas con un framework es Smarty, que es un sistema de plantillas para separar el código del diseño. No es un sistema de plantillas en el sentido de "diseño prefabricado", si no que te permite separar código. Es mucho más fácil de implementar de lo que parece y una vez que lo domines (un par de días si eres un poco burro) enseguida empezarás a notar las ventajas. Empieza por solucionar el tema de la inclusión a ver qué pasa, saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #6 (permalink)  
Antiguo 28/02/2012, 11:38
manugiralda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema: funciones php y ajax

En realidad, solo tendrias que meter la funcion de a.php en el archivo b.php por encima del echo. De este modo, cada vez que te cargue b.php, la funcion estara incluida y si te tomara un valor.

De todas maneras, yo estoy de acuerdo con "repara2". Yo en tu lugar, no podria el archivo b.php a parte del resto de la página.
  #7 (permalink)  
Antiguo 29/02/2012, 01:05
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: problema: funciones php y ajax

Cita:
Iniciado por GatorV Ver Mensaje
Lo que tienes que hacer es tener por ejemplo tus funciones separadas en un archivo/archivos, por ejemplo esa de fech() la pones en un archivo: includes/funciones/fechas.php

Luego en tus archivos PHP donde haces ya la implementación de tus funciones, o a donde llegan tus requests (por ejemplo index.php / ajax.php, etc.) Solamente las incluyes, así las puedes incluir varias veces en todos tus archivos sin problema.
De hecho es justo lo que hago, esta en una carpeta llama funciones, todo lo tengo separado las conexiones, el css, los js, por eso el index maneja muchos includes, y solo ahi los pongo para no tener que poner todos los includes en cada archivo, pero por mas que he tratado de acomodarlo, no se me ocurre nada.

Etiquetas: ajax, funciones, mysql, tabla
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 18:20.