Foros del Web » Programando para Internet » PHP »

Tengo un problema con odbc_num_rows

Estas en el tema de Tengo un problema con odbc_num_rows en el foro de PHP en Foros del Web. este es el codigo: $db = odbc_connect('base','',''); if (!$db) { exit('Error en la conexión a la base de datos'); } else { $consulta = "SELECT ...
  #1 (permalink)  
Antiguo 15/09/2008, 08:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 16 años, 2 meses
Puntos: 1
Tengo un problema con odbc_num_rows

este es el codigo:

$db = odbc_connect('base','','');
if (!$db) {
exit('Error en la conexión a la base de datos');
} else {

$consulta = "SELECT *FROM Fichas WHERE (((Fichas.Fecha) Between #$fecha1# And #$fecha2#) AND ((Fichas.Clasificacion)>='001' And (Fichas.Clasificacion)<='002'))
ORDER BY Fichas.Fecha DESC";

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

$valor = odbc_num_rows($result);

echo" las filas son : $valor";


}
odbc_close($db);


}


}


?>

el problema es que cuando mando una consulta sin registro la variable $valor obtiene -1 y cuando la consulta si consigue registro me obtiene de nuevo -1, osea no puedo diferenciar cuando consigue registro y por esto no he podido terminar el codigo.


porfavor diganme si me estoy equivacando o si ha y otra forma.
  #2 (permalink)  
Antiguo 15/09/2008, 11:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 16 años, 2 meses
Puntos: 1
problema con odbc_num_rows

mi problema es que con la funcion odbc_num_rows siempre me devuelve -1 y por esto no me funciona la condicion, de que otra forma puedo trabajarlo, este es el codigo:

<?php
if(isset($_POST['dates']))
{
$db = odbc_connect('base','','');
if (!$db) {
exit('Error en la conexión a la base de datos');
} else {

$fecha1=$_POST['dates'];
$fecha2=$_POST['dates1'];

$consulta = "SELECT *FROM Fichas WHERE (((Fichas.Fecha) Between #$fecha1# And #$fecha2#) AND ((Fichas.Clasificacion)>='001' And (Fichas.Clasificacion)<='002'))
ORDER BY Fichas.Fecha DESC";

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

$compa= odbc_num_rows($result);
if($compa == 0)

{
print "<table align='center' ><tr height=200><td>No Hay Nuevas Adquisiciones</td></tr></table><br><br><br><br>";
}else{



echo " <LINK HREF='estilo.css' REL='stylesheet' TYPE='text/css'>\n";

print "<table border=\"1\" align='center' width=\"750\">\n <tr bgcolor='#669933'>
<th id='etiqueta1' class='etiqueta1'>Fecha</th>\n <th id='etiqueta1' class='etiqueta1'>Titulo</th>\n <th id='etiqueta1' class='etiqueta1'>Autor</th>\n <th id='etiqueta1' class='etiqueta1'>ISBN</th>\n <th id='etiqueta1' class='etiqueta1'>Clasificacion</th>\n <th id='etiqueta1' class='etiqueta1'>Año</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'];
$cadena=$valor['DatosFijos'];
$cadena_original = substr ($cadena, 6);
$longitud_cadena_original = strlen ($cadena_original);
$resto = $longitud_cadena_original -22;
$cadena_original = substr ($cadena, 6, $resto);


print " <tr>\n <td width=\"115\" align='center' id='etiqueta' class='etiqueta'>$Fecha</td>\n <td width=\"200\" align='center'id='etiqueta' class='etiqueta'>$Titulo</td>\n <td width=\"150\" align='center'id='etiqueta' class='etiqueta'>$Autor</td>\n <td width=\"115\" align='center'id='etiqueta' class='etiqueta'>$ISBN</td>\n <td width=\"115\" align='center'id='etiqueta' class='etiqueta'>$Clasificacion</td>\n <td width=\"60\" align='center'id='etiqueta' class='etiqueta'>$cadena_original</td>\n </tr>\n";

}


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

}


}


}


?>
  #3 (permalink)  
Antiguo 15/09/2008, 12:19
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: problema con odbc_num_rows

Cita:
$compa= odbc_num_rows($result);
if($compa <= 0)
Pero creo que deberias revisar mejor la consulta porque manda -1 en caso de error
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #4 (permalink)  
Antiguo 15/09/2008, 12:58
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Respuesta: Tengo un problema con odbc_num_rows

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #5 (permalink)  
Antiguo 15/09/2008, 13:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Tengo un problema con odbc_num_rows

Hola mindoata,

Es un problema de tu adaptador que usas con ODBC, para que te de los datos correctos creo debes de usar COUNT(*) desde tu SQL, o configurar bien el adaptador en el panel de ODBC.

Saludos.
  #6 (permalink)  
Antiguo 16/09/2008, 14:46
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Tengo un problema con odbc_num_rows

bueno GatorV hago el count, pero lo no sé como lo comparo en php, te agradeceria si lo me explicaras con el codigo, gracias por tu ayuda.
  #7 (permalink)  
Antiguo 16/09/2008, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Tengo un problema con odbc_num_rows

Puedes hacer algo asi:
Código php:
Ver original
  1. $consulta = "SELECT COUNT(*) AS 'total' FROM Fichas WHERE (((Fichas.Fecha) Between #$fecha1# And #$fecha2#) AND ((Fichas.Clasificacion)>='001' And (Fichas.Clasificacion)<='002'))
  2. ORDER BY Fichas.Fecha DESC";
  3.  
  4. $result = odbc_exec($db,$consulta);
  5. $fila = odbc_fetch_array($result)
  6. $total = $fila['total'];
  7. echo "numero de filas: $total";

Saludos.
  #8 (permalink)  
Antiguo 16/09/2008, 15:13
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Tengo un problema con odbc_num_rows

Disculpa GatorV pero me sale error en la consulta, osea que el error esta en la consulta, aqui esta el codigo para ver si me ayudas a encontrar el problema:

<?php
if(isset($_POST['dates']))
{
$db = odbc_connect('base','','');
if (!$db) {
exit('Error en la conexión a la base de datos');
} else {

$fecha1=$_POST['dates'];
$fecha2=$_POST['dates1'];

$consulta = "SELECT count (*) as cuenta FROM Fichas WHERE (((Fichas.Fecha) Between #$fecha1# And #$fecha2#) AND ((Fichas.Clasificacion)>='001' And (Fichas.Clasificacion)<='002'))
ORDER BY Fichas.Fecha DESC";

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

$valor = odbc_fetch_array($result);
$total = $valor['cuenta'];
echo"este: $total";
odbc_close($db);


}


}


}


?>

Última edición por mindoata; 16/09/2008 a las 15:18
  #9 (permalink)  
Antiguo 16/09/2008, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Tengo un problema con odbc_num_rows

Puede ser el adaptador que usas, el COUNT(*) es de MySQL, pero depende de tu motor de bases de datos necesitas ver que funcion usar para contar registros.

Saludos.
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 14:42.