Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] que fallo encuentran en esta linea?

Estas en el tema de que fallo encuentran en esta linea? en el foro de PHP en Foros del Web. Hola amigos como estan, Vereis tengo un codigo que me autocompleta la cosa es que en el php que muestra las sigerencias me sale la ...
  #1 (permalink)  
Antiguo 02/07/2013, 08:48
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
que fallo encuentran en esta linea?

Hola amigos como estan,

Vereis tengo un codigo que me autocompleta la cosa es que en el php que muestra las sigerencias me sale la etiqueta <a href... estas son las lineas:

Código PHP:
if (mysql_num_rows($listado)>0){ 

echo 
"{
  query:'"
.$busqueda."', 
  suggestions:["

  
while(
$palabra mysql_fetch_array($listado)){

$enlace $palabra['descripcion'] ; // donde "link" es el nombre de la tabla en mysql que contiene los enlaces 
$juego $palabra['descripcion']; // lo mismo, esta es la tabla con el nombre del juego 

$array "'<a href=\'".$enlace."\'>".$juego."</a>',";}; // end while 

$array substr ($array0strlen($array) - 1); // elimino ultima coma 
echo $array
echo 
"]}"
}else{ 
// no hay conicidencias

A ver si ven algo

Un saludo
  #2 (permalink)  
Antiguo 02/07/2013, 08:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 100
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: que fallo encuentran en esta linea?

Puedes explicar que error te arroja o en teoria cual es el problema sobre tu codigo?
No fue muy claro lo que comentaste, ahi le falta una llave para cerrar tu while pero supongo que tu codigo no esta completo y por ende solo es un fragmento, te recomiendo mas claridad en tu mensaje para poderte ayudar
  #3 (permalink)  
Antiguo 02/07/2013, 09:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: que fallo encuentran en esta linea?

Por supuesto hay un mal uso de comillas, te sugiero leer lo siguiente: http://www.forosdelweb.com/f18/como-...s-bien-588701/

Además no sabemos si el plugin de auto-completado que estás usando te dice que pongas enlaces de HTML directamente en la lista de sugerencias, ya que por lo que comentas no deberías hacerlo, de otra forma vas a seguir viendo dichas etiquetas al auto-completar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 02/07/2013, 09:03
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: que fallo encuentran en esta linea?

Tienes un problema de conceptos con las comillas simples y dobles.

Usando comillas simples y dobles
Código PHP:
Ver original
  1. $array = '<a href="'.$enlace.'">'.$juego.'</a>,';

Usando escapado
Código PHP:
Ver original
  1. $array = "<a href=\"$enlace\">$juego</a>,";

usando Heredoc
Código PHP:
Ver original
  1. $array = <<<EOT
  2. <a href="$enlace">$juego</a>,
  3. EOT;

Igualmente te recomiendo leer http://php.net/manual/es/language.types.string.php
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Última edición por h2swider; 02/07/2013 a las 09:08
  #5 (permalink)  
Antiguo 02/07/2013, 09:11
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: que fallo encuentran en esta linea?

umm, gracias amigos por los link me ha ayudado a resolver el problema.

Tambien me acabo de dar cuenta que el while solo me esta mostrando un resultado y hay varias decenas, pero solo muestra uno no entiendo muy bien esto.

U saludo y mil gracias amigos!!
  #6 (permalink)  
Antiguo 02/07/2013, 09:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Pro que no me escribe el array?

Amigos hola de nuevo,

Vereis tengo este codigo:

Código PHP:
$dbhost="localhost"// servidor. Generalmente localhost si el archivo esta alojado en el servidor ya. 
$dbusuario="xxxxx"// aqui debes ingresar el nombre de usuario 
$dbpassword="xxxx"// password de acceso para la base de datos 
$db="xxxx"// Seleccionamos la base con la cual trabajar 


 
$conexion mysql_connect($dbhost$dbusuario$dbpassword); 
mysql_select_db($db$conexion); 


$busqueda $_GET['q']; // esto representa a lo que el usuario esta escribiendo en el teclado,por ej: 'Li'  
$listado mysql_query ("Select descripcion FROM empresas_listas_articulos2 WHERE descripcion like '%$busqueda%'"); 
$palabra mysql_fetch_array($listado)


$q strtolower($_GET["q"]);
if (!
$q) return;
$items $palabra

foreach ($items as $key=>$value) {
    if (
strpos(strtolower($key), $q) !== false) {
        echo 
"$key|$value\n";
    }

Y pensaba que estaba todo bien la cosa es que nome lista el array, por que puede ser?

A ver si ustedes ven algo.

Un saludo y gracias
  #7 (permalink)  
Antiguo 02/07/2013, 09:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Pro que no me escribe el array?

Primera falla que veo:

Cita:
$q = strtolower($_GET["q"]);
if (!$q) return;
1) No puedes cojer un $_GET sin verificar primero que tenga la variable (en tu caso 'q')

2) Ni siquiera imagino que quieres hacer con ese if() .. o lo que tiene $_GET["q"] es un string o un boolean, ponte de acuerdo
__________________
Salu2!
  #8 (permalink)  
Antiguo 02/07/2013, 10:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Pro que no me escribe el array?

Por otro lado tienes que hacer el loop de los resultados, al llamar solamente 1 vez a mysql_fetch_array solo te va a devolver un registro, no todos los registros.

Luego estas haciendo una búsqueda dos veces ya la haces en MySQL y luego vuelves a comparar en PHP, eso no es correcto.
  #9 (permalink)  
Antiguo 02/07/2013, 10:58
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Pro que no me escribe el array?

Amigos gracias por la atencion,

He modificado bastante el codigo pero sigue igual solo muestra un registro:

Código PHP:
Ver original
  1. $conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);
  2. mysql_select_db($db, $conexion);
  3.  
  4.  
  5. $busqueda = $_GET['query']; // esto representa a lo que el usuario esta escribiendo en el teclado,por ej: 'Li'
  6. $listado = mysql_query("Select * FROM empresas_listas_articulos2 WHERE descripcion LIKE '$busqueda%'");
  7.  
  8.  
  9. if (mysql_num_rows($listado)>0){
  10.  
  11. echo "{
  12.  query:'".$busqueda."',
  13.  suggestions:[";
  14.  
  15. while($palabra = mysql_fetch_array($listado)){
  16.  
  17. $enlace = $palabra['descripcion'] ; // donde "link" es el nombre de la tabla en mysql que contiene los enlaces
  18. $juego = $palabra['descripcion']; // lo mismo, esta es la tabla con el nombre del juego
  19. $array = "'".$juego."',";}; // end while
  20. //$array = "'<a href=\'".$enlace."\'>".$juego."</a>',";}; // end while
  21.  
  22. //$array = substr ($array, 0, strlen($array) - 1); // elimino ultima coma
  23. echo $array;
  24. echo "]}";
  25. }else{ // no hay conicidencias
  26. }

Voi a mirar lo que dices GatorV

Un saludo y mil gracias!
  #10 (permalink)  
Antiguo 02/07/2013, 11:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: que fallo encuentran en esta linea?

¿Haz verificado que tu query te de los resultados que esperas? Ejecuta el query en tu RDBMS y ve que resultados obtienes.

Por otro lado lo que haces no es correcto, puedes perfectamente usar un array normal y luego pasarlo por json_encode en lugar de construir un JSON manualmente.

Saludos.
  #11 (permalink)  
Antiguo 02/07/2013, 11:08
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: que fallo encuentran en esta linea?

yo lo haría así:
Código PHP:
if (mysql_num_rows($listado)>0){ 
    
$lista '';
    while(
$palabra mysql_fetch_array($listado)){
        
$enlace $palabra['link'] ; // donde "link" es el nombre de la tabla en mysql que contiene los enlaces 
        
$juego $palabra['descripcion']; // lo mismo, esta es la tabla con el nombre del juego 
        
$lista .= (strlen($lista>0)?',':'');
        
$lista .= '<a href="'.$enlace.'">'.$juego.'</a>';
    } 
// end while 
    
echo "{query:'$busqueda',suggestions:['$lista']}"
}else{ 
// no hay conicidencias

__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #12 (permalink)  
Antiguo 02/07/2013, 11:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: que fallo encuentran en esta linea?

Hola amigo jcxnet, gracias por tu atencion, va estupendo la unica cosa es cuando no encuentra nada no oculta los resultados encontrados, por ejemplo si introduces "coche" muestra los coches y se qedan fijos viendose pero si añades a coches "rojo" quedando "coche rojos" como no hay ninguna coincidencia sigue mostrando los resultados de "coche" y deberia mostrar no hay resultados o no mostrar nada.

He incluido a tu codigo en el else:

Código PHP:
Ver original
  1. if (mysql_num_rows($listado)>0){
  2.     $lista = '';
  3.     while($palabra = mysql_fetch_array($listado)){
  4.         $enlace = $palabra['link'] ; // donde "link" es el nombre de la tabla en mysql que contiene los enlaces
  5.         $juego = $palabra['descripcion']; // lo mismo, esta es la tabla con el nombre del juego
  6.         $lista .= (strlen($lista>0)?',':'');
  7.         $lista .= '<a href="'.$enlace.'">'.$juego.'</a>';
  8.     } // end while
  9.    
  10. echo "{query:'$busqueda',suggestions:['$lista']}";
  11. }else{ echo 'No hay resultados';
  12. }

Pero no funciona

Un saludo amigo y gracias por tu atencion amigo
  #13 (permalink)  
Antiguo 02/07/2013, 11:58
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: que fallo encuentran en esta linea?

Ya consegui solucionarlo metiendo en el else{

Código PHP:
Ver original
  1. echo "{query:'$busqueda',suggestions:['$lista']}";

Un saludo y gracias amigos!!
  #14 (permalink)  
Antiguo 02/07/2013, 13:24
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: que fallo encuentran en esta linea?

Cita:
Ya consegui solucionarlo metiendo en el else{
que bueno; no olvides marcar el tema como solucionado ;)
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **

Etiquetas: fallo, mysql, select, 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 19:43.