Foros del Web » Creando para Internet » Diseño web »

Problemas con mi consulta

Estas en el tema de Problemas con mi consulta en el foro de Diseño web en Foros del Web. Hola amigos mi problema es el siguiente: Estoy haciendo una consulta a la base de datos en access de las ultimas aquisiciones de libros de ...
  #1 (permalink)  
Antiguo 03/09/2008, 17:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 9 años, 3 meses
Puntos: 1
Problemas con mi consulta

Hola amigos mi problema es el siguiente:
Estoy haciendo una consulta a la base de datos en access de las ultimas aquisiciones de libros de una biblioteca, estos libros se dividen en sus respectivas clasificaciones y en la clasificacion de generalidades no hay nuevas adquisiciones, el problema es que no he logrado poner el mensaje "Noy hay nuevas aquisiciones ", por que no sé como ponerlo. este el codigo:

<?php
$db = odbc_connect('base','','');
if (!$db) {
exit('Error en la conexión a la base de datos');
} else {
$consulta = "SELECT * FROM Fichas where Clasificacion >= '007' and Clasificacion <= '099' and Fecha between #14/01/2008# and #30/08/2008#";

$result = odbc_exec($db,$consulta);
if (!$result) {
exit("Error en la consulta");
} else {

if(!$valor['Fecha']=odbc_fetch_array($result)){
echo('No Hay Nuevas Adquisiciones');
}else{

print "<table border=\"1\" align='center'>\n <tr>
<th>Fecha</th>\n <th>Titulo</th>\n <th>Autor</th>\n <th>ISBN</th>\n <th>Clasificacion</th>\n </tr>\n";
while ($valor = odbc_fetch_array($result)) {

$Fecha = $valor['Fecha'];
$Titulo = $valor['Titulo'];
if(!$valor['Autor']){
$Autor = ('NA');
}else{
$Autor = $valor['Autor'];
}
if(!$valor['ISBN']){
$ISBN = ('NI');
}else{
$ISBN = $valor['ISBN'];
}
$Clasificacion = $valor['Clasificacion'];


print " <tr>\n <td>$Fecha</td>\n <td>$Titulo</td>\n <td>$Autor</td>\n <td>$ISBN</td>\n <td>$Clasificacion</td> </tr>\n";

}
odbc_close($db);
print "</table>\n";

}
}

}
?>


La parte en rojo es la condicion que coloque para el mensaje, pero esto lo invente y no me funciona bien, porque cuando busco en otra clasificacion que si haiga adquisiciones nuevas, me elimina la primera adquisicion.
porfavor les agradezco cualquier ayuda.
  #2 (permalink)  
Antiguo 04/09/2008, 04:33
 
Fecha de Ingreso: septiembre-2008
Mensajes: 13
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Problemas con mi consulta

Porque deberia ir asi

Código PHP:
if(!$valor['Fecha']==odbc_fetch_array($result)) 
== si pones dos compara
= si pones uno asigna
  #3 (permalink)  
Antiguo 04/09/2008, 08:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Problemas con mi consulta

no lo que yo estaba intentando era asignarle el array de resultados a una variable que la comparaba y si no habia nada mandara el mensaje, pero esta no es la forma ideal, porque en otras consultas que si haigan nuevas adquisiciones pierdo un libro en la consulta

if(!$valor['Fecha']=odbc_fetch_array($result)) //asigno a una variable el resultado para comparar
  #4 (permalink)  
Antiguo 04/09/2008, 08:57
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Problemas con mi consulta

ahora estuve tratando con empty y me funciona bien cuando hay nuevas adquisiciones porque no pierdo ninguna fila, PERO cuando no la hay nuevas adquisiciones no sale el mensaje.
Osea que estoy en las mismas.

<?php
$db = odbc_connect('base','','');
if (!$db) {
exit('Error en la conexión a la base de datos');
} else {
$consulta = "SELECT * FROM Fichas where Clasificacion >= '007' and Clasificacion <= '099' and Fecha between #14/01/2008# and #30/08/2008#";

$result = odbc_exec($db,$consulta);
if (!$result) {
exit("Error en la consulta");
} else {

if(empty($result)){
echo'No Hay Nuevas Adquisiciones';
}else{
print "<table border=\"1\" align='center'>\n <tr>
<th>Fecha</th>\n <th>Titulo</th>\n <th>Autor</th>\n <th>ISBN</th>\n <th>Clasificacion</th>\n </tr>\n";
while ($valor = odbc_fetch_array($result)) {

$Fecha = $valor['Fecha'];
$Titulo = $valor['Titulo'];
if(!$valor['Autor']){
$Autor = ('NA');
}else{
$Autor = $valor['Autor'];
}
if(!$valor['ISBN']){
$ISBN = ('NI');
}else{
$ISBN = $valor['ISBN'];
}
$Clasificacion = $valor['Clasificacion'];


print " <tr>\n <td>$Fecha</td>\n <td>$Titulo</td>\n <td>$Autor</td>\n <td>$ISBN</td>\n <td>$Clasificacion</td> </tr>\n";

}
odbc_close($db);
print "</table>\n";

}
}

}
?>

Será que hay alguien que me pueda ayudar
  #5 (permalink)  
Antiguo 04/09/2008, 10:30
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 13 años, 8 meses
Puntos: 6
Respuesta: Problemas con mi consulta

Podes probar con
Código PHP:
if (odbc_num_rows($result) > 0) {
    
//algo...
} else {
    echo 
"No hay nuevas adquisiciones...";

Nunca trabaje con odbcs, pero creo que la funcionalidad entre mysql_num_rows() y este deben ser las mismas...

Salu2.
  #6 (permalink)  
Antiguo 04/09/2008, 10:59
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Problemas con mi consulta

no Nirvana, sigo con el mismo problema no me sale el mensaje.
  #7 (permalink)  
Antiguo 04/09/2008, 12:06
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Problemas con mi consulta

listo parese que consegui la solucion:

$compa= odbc_num_rows($result);
if(!isset($compa['Fecha']))
{
..............................
..............................
..............................
}else
{
echo("No hay nuevas adquisiciones");
}
gracias Nirvana, saludos.
  #8 (permalink)  
Antiguo 04/09/2008, 15:42
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Problemas con mi consulta

No no me funciona, no sale el mensaje...............................
no consigo que hacer! será que hay alguien que me ayude en mi equivocacion

$compa= odbc_num_rows($result);
if(!isset($compa['Fecha']))
{
..........................
..........................
..........................
}else{
echo("No hay adquisiciones");

}
me funciona bien cuando si hay adquisiciones, pero cuando no las hay no sale el mensaje.
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:16.