Foros del Web » Programando para Internet » PHP »

Una duda MySQL

Estas en el tema de Una duda MySQL en el foro de PHP en Foros del Web. Hola, tengo una instrucción query asi: "Select id from soft where fecha like %$date3% order by id ASC limit 1" Y en los campos de ...
  #1 (permalink)  
Antiguo 02/08/2003, 09:19
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
Pregunta Una duda MySQL

Hola, tengo una instrucción query asi:
"Select id from soft where fecha like %$date3% order by id ASC limit 1"

Y en los campos de fecha de soft los tengo asi en Varchar:
26-7-03 |00:04:29|

Y la variable $date3 contiene un dato asi:
26-7-03

entonces, xq esa intrucción no me selecciona ninguna id si tengo bastantes campos de soft con 26-7-03? Si solo kiero q me selecciona la primera ....
que falla?
  #2 (permalink)  
Antiguo 02/08/2003, 10:15
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 8 meses
Puntos: 1
Pueba asi:
Código PHP:

"Select id from soft where fecha like %$date3% order by id ASC limit 0,1" 
Un Saludo
  #3 (permalink)  
Antiguo 02/08/2003, 11:32
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
uy, eso no sería lo que fallaria xq sigue =
haber:
Código PHP:
$o=1;
$limit=30;
while(
$o<=$limit){     
                
$dia= (int) $date[0];              
    
$datedate2$dia-1;
    
$dates$datedate2.'-'.$date[1].'-'.$date[2];
    
$query="Select id from soft where fecha like %$dates% order by id DESC limit 0,1";
    print(
$query);
    
$resulttrmysql_query($query);
    if(
$resulttr)
    { break; }else{ 
$o++; }}
                
$riomysql_fetch_array($resulttr); 
He intentado ver el query para ver si lo muestra, y el bucle nunca se para, hago mal el if, que puedo poner para que pare?
La funcion del bucle sería parar cuando encontrara en soft la primera id de esa fecha, y sino hubiera ninguna restar un dia hasta que encontrará alguna fecha...
(y soft tiene fechas muy cercanas)
  #4 (permalink)  
Antiguo 02/08/2003, 14:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Sobre la consulta, si la comparacion es de un texto, te flata las comillas, '%$dates%'. Esto supongo que te estaria causando un error de MySQL que podrias haber detectado haciendo:
Código PHP:
$resulttrmysql_query($query) or die("Error en $query<br>MySQL dice: ".mysql_error()); 
Luego el if no mira si te devuelve registros o no, sino que comprueba si la consulta genero errores o no. Si quieres saber los registros que devolvio usa la funcion mysql_num_rows() (www.php.net/mysql_num_rows).

Tambien decirte que tal como tienes el bucle, $datedate2 siempre tendra el mismo valor en todos los ciclos. Siempre es $date[0]-1, y como no acmbia el valor de $date, siempre vale lo mismo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 03/08/2003, 13:27
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
ya me selecciona la fecha correcta pero cuando pongo:
print($rio['id']); n imprime nada, y en cambio no me da ningun error mysql y cuando imprimo el query ahora me sale bien, que mas me falta?
  #6 (permalink)  
Antiguo 03/08/2003, 13:36
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Lo mas probable es que tu query no te esta entregando nada, aunque el select es correcto.

Es decir, la sentencia es correcta, pero la BD no encuentra ninguna coincidencia.

A mi parecer es porque estas usando el LIKE incorrectamente. El operador '%palabra%' funciona para buscar algun valor que tenga la palabra ENTRE mas caracteres, es decir, te busca un campo que tenga:

ALGO 26-7-03 |00:04:29|

La forma correcta sería sí...

... where fecha like '$dates%' order ...
__________________
Manoloweb
  #7 (permalink)  
Antiguo 03/08/2003, 14:48
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Manoloweb, aunque es mas correcto usar el like como has dicho para este caso, es porque es mas parecido a lo que quiere, encontrar las cadenas que comiencen por ese texto. Pero el otro de '%$dates%' tambien le deberia funcionar, porque el % es 0 o mas caracteres, asi que tambien incluye a los que comienzan por esa cadena.

Como bien ha dicho Manoloweb, lo mas probable es que no tengas ningun registro que cumpla la condicion de tener en ese campo ese valor. Prueba a crear un registro con ese valor.

Tambien puedes mirar lo que te comente en mi mensaje anterios de mysql_num_rows() y tu ultimo if.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 03/08/2003, 17:21
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
ara lo e exo con mysql_num_rows all final asi:
Código PHP:
$resulttmysql_query($query) or die("Error en $query<br>MySQL dice: ".mysql_error());
    
$row mysql_num_rows($resultt);
    if(
$row>=1)
    { break; }else{ 
$i++; }} 
    
$riumysql_fetch_array($resultt); 
y vuelve a producirse el bucle sin fin, xq será? si, si q tengo registros sobre ese dia...
  #9 (permalink)  
Antiguo 04/08/2003, 13:41
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
x lo menos decirme pliz si e echo bien lo de mysql_num_rows y el if
  #10 (permalink)  
Antiguo 04/08/2003, 13:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Bueno, en tu primer codigo ponias $o como la variable del bucle, y en tu ultimo pones en el if $i. No se si es que te has liado al ponerlo en el mensaje.

Haz un echo de la consulta y del valor de mysql_num_rows(). Y si tienes un administrador de base de datos como el phpMyAdmin, copia la consulta que te muestra el echo y ejecutala en el phpMyAdmin.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 04/08/2003, 16:40
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
tengo muchos problemas con lo de la fecha, supongo q será xq está en VARCHAR.
Si la pongo como Date en la base de datos la podría reconocer más fácilmente en PHP? como¿¿¿¿????
  #12 (permalink)  
Antiguo 04/08/2003, 17:37
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Por ahi hubieramos empezado...

Claaaro que sería mucho mas sencillo.

select tal from tabla where fecha=$fecha

__________________
Manoloweb
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:42.