Foros del Web » Programando para Internet » PHP »

problema al extraer consulta de datos de BD

Estas en el tema de problema al extraer consulta de datos de BD en el foro de PHP en Foros del Web. Buenas y calurosas tardes gente , he adaptado un código de consulta de datos en php y mysql pero no obtengo los datos, y no ...
  #1 (permalink)  
Antiguo 08/01/2012, 11:26
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Pregunta problema al extraer consulta de datos de BD

Buenas y calurosas tardes gente, he adaptado un código de consulta de datos en php y mysql pero no obtengo los datos, y no muestra ni mensaje de error de conexión ni nada.

db_con.php
Código PHP:
<?
$host
="localhost"// Host name
$username="xxxxxx"// Mysql username
$password="xxxxxx"// Mysql password
$db_name="xxxxxxx"// Database name
$tbl_name="like"// Table name
?>
search.php
Código PHP:
<?php
include('db_con.php');
mysql_connect("$host""$username""$password") or die("cannot connect");
mysql_select_db("$db_name") or die ('Error al seleccionar la Base de Datos: '.mysql_error());

if(
$search)
{
$search $_POST['search'];
$res mysql_query("SELECT * FROM `like` WHERE `id` "%$search%"");

if (!
$res)
echo 
"No se pudo realizar la búsqueda";
else
{
$comp mysql_num_rows($res);
if(
$comp 0)
{
echo 
"<b>Hay ".$comp." Resultado(s).</b>";
echo 
"<table border='0' width='450'>";
$c=1;
while(
$pru mysql_fetch_array($res))
{
if(
$c%2==0)
$color="afcbd9";
else
$color="ffffff";
echo 
"<tr bgcolor=".$color." style='text-align:left;font-weight:bold;'><td> ".$c."<br> Clave: ".$pru."</td></tr>";
$c++;
}
echo 
"</table>";
}
else
echo 
"<b>No hay registros con ese término</b>";
}
}
?>
<table width="400"><tr><td>
<form id="buscar" name="buscar" method="post" action="">
<p>Termino de Consulta:
<input type="text" name="search" id="search" />
<input type="submit" name="Submit" value="Consultar" />
</p>
</form>
</td></tr></table>
Hay algún error por ahí??? (comillas simple, doble, punto y coma (que no creo que sea del ";", agregar otra función) o que
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #2 (permalink)  
Antiguo 08/01/2012, 12:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema al extraer consulta de datos de BD

Si, definitivamente tienes bastantes errores.

El primero y mas importante es no tener habilitado el reporte de errores. Y sin eso, ¿pues como saber que error tienes?

Por favor, configura tu php.ini para que te muestre los errores.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/01/2012, 13:15
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: problema al extraer consulta de datos de BD

Cita:
Iniciado por pateketrueke Ver Mensaje
Si, definitivamente tienes bastantes errores.

El primero y mas importante es no tener habilitado el reporte de errores. Y sin eso, ¿pues como saber que error tienes?

Por favor, configura tu php.ini para que te muestre los errores.
lo tengo habilitado desde que tengo server; hay algo que falta en ese codigo xq no me lo muestra, y cuando hago (a proposito) un error en otro archivo, este me lo muestra.
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #4 (permalink)  
Antiguo 08/01/2012, 13:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: problema al extraer consulta de datos de BD

OK. Ahora bien, ¿podrías explicarme qué es lo que llega a contener la variable "%$search%" de este bloque:
Código MySQL:
Ver original
  1. $res = mysql_query("SELECT * FROM `like` WHERE `id` "%$search%"");
En ese contexto debería ser un operador lógico (<, >, <=, >=, =) más un valor, o bien la función de rango BEWEEN .... AND ...., o en su defecto la clausula IN en alguna de sus variantes con subconsulta o con grupo de valores.
¿Qué se supone que debe contener?
¿Has probado si la sentencia, una vez armada, está correctamente escrita? ¿Le hiciste un echo, para ver cómo quedó, y luego probado eso directamente en el MySQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/01/2012, 13:36
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: problema al extraer consulta de datos de BD

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Qué se supone que debe contener?
¿Has probado si la sentencia, una vez armada, está correctamente escrita? ¿Le hiciste un echo, para ver cómo quedó, y luego probado eso directamente en el MySQL?
lo saque de aca (de este mismo foro, y creo que le han dado por cualquier lado o solo por querer decir alguna cosa absurda. http://www.forosdelweb.com/f18/formu...da-php-820934/ y lo adapte a mi situacion
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #6 (permalink)  
Antiguo 08/01/2012, 13:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: problema al extraer consulta de datos de BD

Genial... Pero si miras con cuidado tu adaptación está copiando mal la sintaxis de los segmentos en SQL (te has salteado caracteres y estructuras)), y lógica de la consulta tomada de ejemplo.
En ciertos contextos no generará errores de sintaxis, pero tampoco devolverá datos.

Sería mejor que en lugar de copiar la consulta "adaptándola", trataras de verificar la sintaxis de la consulta que sirve para tu caso. "Adaptar" algo no siempre da el resultado esperado.
¿Por qué no pruebas creando una consulta manualmente en el phpMyadmin, y ves cuál es la sintaxis correcta para un ejemplo valido para tu aplicación.
Perderás menos tiempo, y el phpMyadmin luego te puede dar la versión para pegar en el PHP...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/01/2012, 13:56
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: problema al extraer consulta de datos de BD

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Genial...
cree la consulta en el phpmyadmin y es esta
Código:
SELECT `like`.`id` FROM like ORDER BY `like`.`id` ASC
(va es lo que me genero), pero noc reo que sea esa para que me muestre los datos, tmb tengo de una conexion de mi pagina de frases que es esta
Código:
$sql = "SELECT * FROM  `like` ORDER BY  `like`.`id` DESC LIMIT 0 , 9";
(esa es para que me muestre los registros por ID, ordenados del mas nuevo al mas viejo y que solo me traiga los 9 últimos creados)
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #8 (permalink)  
Antiguo 08/01/2012, 14:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: problema al extraer consulta de datos de BD

Hay varios detalles:
LIKE es una palabra reservada de MySQL, porque es una cláusula usada en el WHERE para búsquedas por patrones o similitudes por aproximación. En ese sentido, si por accidente se le pone ese nombre a la tabla, el nombre debe estar siempre encerrado entre acentos inversos, tal y como haces en los siguientes dos ejemplos.
En ese sentido, esta consulta debería generar un error de sintaxis:
Código MySQL:
Ver original
  1. SELECT `like`.`id`
  2. ORDER BY `like`.`id` ASC
Si por milagro no lo hace, perfecto.

Esta otra, por su lado, está bien:
Código MySQL:
Ver original
  1. FROM  `like`
  2. ORDER BY  `like`.`id` DESC
  3. LIMIT 0 , 9

ya que el "like" está encerrado correctamente y se interpretará como nombre de tabla.

Pero lo que pusiste en el script, está mal escrito:
Código MySQL:
Ver original
  1. FROM `like`
  2. WHERE `id` "%$search%"
Está mal, por al menos dos detalles:
1) No está claro qué comparación harás con el "id" en el WHERE.
2) Se infiere que quisiste copiar el ejemplo del caso que linkeaste, pero en ese la sintaxis es diferente:
Código MySQL:
Ver original
  1. $consulta = "select * from tabla where ".$tipobusqueda." like '%".$busqueda."%' ";
que si la escribimos sin los encadenamientos (.), y en una sola cadena qeudaría:
Código MySQL:
Ver original
  1. from tabla
  2. where $tipobusqueda like '%$busqueda%'
Si observas, LIKE en este caso es la cláusula del WHERE, como te decía, pero además los "%" son parte de la cadena del valor buscado, y además quedan encerrados entre apóstrofos, como deben ir las cadenas de texto en una sentencia de MySQL.
Si comparamos lo de ese ejemplo con lo tuyo notamos que: a) Te olvidaste de encerrar la expresión en apóstrofes, y b) no definiste la operación de comparación con el "like.id", como ya dije.

En ese contexto, si no indicas la operación, el resultado sería un error de MySQL, que no veo que estés capturando como tal.

Código PHP:
Ver original
  1. $search = $_POST['search'];
  2. $res = mysql_query("SELECT * FROM `like` WHERE `id` "%$search%"");
contra:
Código PHP:
Ver original
  1. $search = $_POST['search'];
  2. $res = mysql_query("SELECT * FROM `like` WHERE `id` LIKE '%$search%'");

En resumen, es posible que se produzca un error de sintaxis que no estés controlando, o que la sintaxis quede relativamente coherente, pero lógicamente errónea , y no devuelva datos, dependiendo de lo que llegue en la variable, que no se ve en los scripts que posteas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 08/01/2012, 14:58
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: problema al extraer consulta de datos de BD

Cita:
Iniciado por gnzsoloyo Ver Mensaje
...
bueno vamos a secar un poco las neuronas ya que esta bajando el sol y hacia unc alor terrible jeje; cualquier cosa mas a la noche te comento que sale; ah me olvidaba que es esa variable de "$tipobusqueda....$busqueda???
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #10 (permalink)  
Antiguo 08/01/2012, 15:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: problema al extraer consulta de datos de BD

Si te fijas con cuidado, la ubicación en la sentencia de la variable $tipobusqueda, permite deducir que esa variable contiene el nombre de la columna de la tabla contra la cual se hace la comparación, mientras que $busqueda corresponde al texto buscado en esa columna.
Lo que ha hecho, en definitiva, ese forista, es intentar crear un método dinámico para realizar diversas consultas contra diferentes columnas de una sola tabla, resolviendo en PHP (en un script que no se encuentra en el post) qué columna se usará para la consulta.

De todos modos, te hago notar una cosa: Usaste como fuente de tu código un post referido a un problema que no había sido resuelto, por lo que es muy posible que ese código contenga errores que no estemos viendo...

Cita:
Iniciado por http://www.forosdelweb.com/f18/formulario-busqueda-php-820934/#post3468464
amigos, no encuentro la solución, intenté de la forma que me ponen ahí, y buscando otros códigos, encontré ya varios, no me funcionan aún, con este código cuando lo corríjo me aparece la página en blanco y sí tengo registros en la base de datos, y tengo este otro código, pero no me manda ningún resultado...lo pongo espero puedan ayudarme...
O sea: Es muy posible que el ejemplo sea pura basura.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 08/01/2012 a las 16:01

Etiquetas: consulta_php, mysql+php
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 12:25.