Foros del Web » Programando para Internet » PHP »

Búsqueda multilingue

Estas en el tema de Búsqueda multilingue en el foro de PHP en Foros del Web. Estoy realiazando de la siguiente manera, una búsqueda según el idioma que seleccione el usuario: Código PHP: if( $lang  ==  'es' ) { $_pagi_sql  =  "SELECT * FROM noticias where title like '%" ...
  #1 (permalink)  
Antiguo 03/03/2005, 11:27
Avatar de yampoo  
Fecha de Ingreso: noviembre-2001
Ubicación: Vilanova i la Geltrú
Mensajes: 1.942
Antigüedad: 22 años, 5 meses
Puntos: 0
Búsqueda multilingue

Estoy realiazando de la siguiente manera, una búsqueda según el idioma que seleccione el usuario:

Código PHP:
if($lang == 'es') {
$_pagi_sql "SELECT * FROM noticias where title like '%".$palabra."%' or description like '%".$palabra."%' and lang = 'es' order by newsrank,fecha desc";

if(
$lang=='en') {
$_pagi_sql "SELECT * FROM noticias where title like '%".$palabra."%' or description like '%".$palabra."%' and lang = 'en' order by newsrank,fecha desc";
}

if(
$lang=='it') {
$_pagi_sql "SELECT * FROM noticias where title like '%".$palabra."%' or description like '%".$palabra."%' and lang = 'it' order by newsrank,fecha desc";

Pero no me hace ni caso... lo podéis ver funcionando en www.bcntimes.com.

El dato "lang" lo recibe en una variable, que viene de un botón de opción.

¿QUé estoy haciendo mal?

Mil gracias.
  #2 (permalink)  
Antiguo 03/03/2005, 11:40
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
Por lo que se ve no hay ningun error, el formulario se envia y los nombres de variables estan bien. Antes de usar la variable $lang hiciste un global $lang;?
Saludos
  #3 (permalink)  
Antiguo 03/03/2005, 11:45
Avatar de yampoo  
Fecha de Ingreso: noviembre-2001
Ubicación: Vilanova i la Geltrú
Mensajes: 1.942
Antigüedad: 22 años, 5 meses
Puntos: 0
No... Que tendría que poner al inicio del código global $lang o algo por el estilo? No esto muy enterado de esto.
  #4 (permalink)  
Antiguo 03/03/2005, 11:53
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
las variables que vienen por http sean por get o post las puedes utilizar como variables globales siempre que este activado esta opcion en el php.ini.Entonces antes de usuar una variable la declaras como global y toma el valor de la que viene desde el formulario.

Antes de usarla declaras
Global $lang;
Con esto ya estaria.


Otro caso es usar los $_GET['lang']) . Con esto recupera variables pasadas por get si estan pasadas por post utilizas $_POST['lang'].

Prueba alguna de estas alternativas y me cuentas.
Saludos
  #5 (permalink)  
Antiguo 03/03/2005, 12:15
Avatar de yampoo  
Fecha de Ingreso: noviembre-2001
Ubicación: Vilanova i la Geltrú
Mensajes: 1.942
Antigüedad: 22 años, 5 meses
Puntos: 0
Pues ni poniendo $_get... me hace caso. Ni poniendo global... ni nada, no hace ni caso.
  #6 (permalink)  
Antiguo 03/03/2005, 12:18
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
puedes poner el codigo?.El formulario ya lo vi. y dime la ruta que sigue. Es decir, probablemente entre en un index.php que captura la accion, incluyes otro php que tiene la funcion que trata esta accion. Puedes hacerme este favor.
Saludos
  #7 (permalink)  
Antiguo 03/03/2005, 12:28
Avatar de yampoo  
Fecha de Ingreso: noviembre-2001
Ubicación: Vilanova i la Geltrú
Mensajes: 1.942
Antigüedad: 22 años, 5 meses
Puntos: 0
Formulario:
Código PHP:
<form method="GET" action="search.news">
        <
input type="text" name="palabra" size="45" style="border-style: solid; border-width: 1">
        <
input type="submit" value="Buscar" name="search" style="border-style: solid; border-width: 1; background-color: #C0C0C0"></p>
    
        <
input type="radio" value="es" name="lang">Castellano<input type="radio" name="lang" value="en">English<input type="radio" name="lang" value="it">Italiano</font></form
Buscador:
Código PHP:
 <?
 
//Conexión a la base de datos
Global $lang;
$con mysql_connect("server","user","pass") or die (mysql_error());
mysql_select_db("table",$con) or die (mysql_error());

//Sentencia sql (sin limit)
$_pagi_sql "SELECT * FROM noticias where lang = '".$_GET['lang']."' and title like '%".$palabra."%' or description like '%".$palabra."%'  order by fecha desc";

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 10;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

//Leemos y escribimos los registros de la página actual
while($row mysql_fetch_array($_pagi_result)){

    echo 
"· <a href=".$row['link']."><b>".$row['title']."</b> -<i><font color=#1551B4> ".$row['fuente']." - ".$row['fecha']."</i></font></a><br><br>".$row['description']."<br><br>";

}

//Incluimos la barra de navegación
?>
Es todo lo que se usa.
  #8 (permalink)  
Antiguo 03/03/2005, 12:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
la variable palabra llega bien? No tenes nada raro en el codigo como para que no ande.
  #9 (permalink)  
Antiguo 03/03/2005, 12:36
Avatar de yampoo  
Fecha de Ingreso: noviembre-2001
Ubicación: Vilanova i la Geltrú
Mensajes: 1.942
Antigüedad: 22 años, 5 meses
Puntos: 0
Sí la variable palabra llega perfectamente... no entiendo por que nova...
  #10 (permalink)  
Antiguo 03/03/2005, 12:46
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
La verdad, la verdad es que de la misma forma que usas la variable $palabra deberias poder usar $lang. No encuentro ningun error en el codigo. Imprimiendo la variable $lang para saber si esta vacia o no.Pero seguramente lo este.
Saludos, y disculpa que no te pueda ayudar
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 22:19.