Foros del Web » Programando para Internet » PHP »

No me sale el mensaje en la consulta

Estas en el tema de No me sale el mensaje en la consulta en el foro de PHP en Foros del Web. Hola amigos, necesito que aguien me ayude este es mi problema: no sale el mensaje, no sé que estoy haciendo mal, este es el codigo: ...
  #1 (permalink)  
Antiguo 04/09/2008, 16:43
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 15 años, 7 meses
Puntos: 1
No me sale el mensaje en la consulta

Hola amigos, necesito que aguien me ayude este es mi problema:

no sale el mensaje, no sé que estoy haciendo mal, este es el codigo:


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

Porfavor una ayudita.
  #2 (permalink)  
Antiguo 04/09/2008, 21:36
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: No me sale el mensaje en la consulta

Vamos a ver, creo que has cometido un error muy tonto, la función odbc_num_rows no te devulve un array asociativo con la información de los campos, sino te devuelve el numero (num) de las filas (rows) halladas, o sea, el número de registros encontrados en la consulta. Ese es tu error, corrígelo, pon la función adecuada, supongo que será: odbc_fetch_array. Honestamente no lo sé porque jamás he trabajado con funciones odbc, lo que si estoy seguro que odbc_num_rows te devuelve el numero de registros hallados por la consulta.
  #3 (permalink)  
Antiguo 05/09/2008, 14:05
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: No me sale el mensaje en la consulta

lo que pasa es que yó ya lo intente con el odbc_fetch_array, y me funciona cuando no hay adquisiciones pero cuando si las hay me elimina la primera adquisicion.
Hay alguien que me pueda ayudar
  #4 (permalink)  
Antiguo 06/09/2008, 15:50
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: No me sale el mensaje en la consulta

Bueno, pero no por eso vas a pretender usar una función de un modo que no corresponde, no entiendo porque se te elimina el primer registro (porque no has puesto suficiente codigo para entenderlo), pero en todo caso sería bueno que pongas más código y expliques exactamente lo que quieres hacer.
  #5 (permalink)  
Antiguo 10/09/2008, 10:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: No me sale el mensaje en la consulta

Eljavista disculpa que no te haya contestado, lo que paso es que no me di cuenta que me habian movido el tema. bueno este es el codigo completo de una consulta y como te dije me borra el primer registro:

<?php
$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 #14/01/2008# And #30/08/2008#) 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_fetch_array($result);
if($compa['Fecha']==0)
{
print "<table align='center' ><tr height=500><td>No Hay Nuevas Adquisiciones</td></tr>";
}else{
echo " <LINK HREF='estilo.css' REL='stylesheet' TYPE='text/css'>\n";
print "<table border=\"1\" align='center' width=\"850\">\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=\"250\" align='center'id='etiqueta' class='etiqueta'>$Titulo</td>\n <td width=\"200\" 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>\n";

}


}

Gracias por la atencion prestada
  #6 (permalink)  
Antiguo 10/09/2008, 12:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: No me sale el mensaje en la consulta

Te "borra" el primer registro porque al tu hacer:
Código PHP:
$compa=odbc_fetch_array($result); 
Descargas la primera fila de tu resultado por lo que al hacer el while ya no esta la informacion perteneciente al primer registro.

Mi recomendación es que cambies tu ciclo por un do/while.

Saludos.
  #7 (permalink)  
Antiguo 10/09/2008, 13:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: No me sale el mensaje en la consulta

Sino haz un reset() para volver a el 1er registro de la consulta.
  #8 (permalink)  
Antiguo 10/09/2008, 13:37
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: No me sale el mensaje en la consulta

GatorV Lo acabo de trabajar con do/while pero es peor por que no sale nada, la verdad no le veo el sentido de cambiarle el ciclo por es el mismo sino que la condicion se comprueba al final.

Ronruby la verdad es que trate e investigue pero no logre aplicar el reset() en mi codigo, sera que me puedes explicar mejor.

Última edición por mindoata; 10/09/2008 a las 15:23
  #9 (permalink)  
Antiguo 11/09/2008, 12:53
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: No me sale el mensaje en la consulta

Mira, se elimina el primer registro por esto:

Cita:
$compa=odbc_fetch_array($result);
if($compa['Fecha']==0)
{
print "<table align='center' ><tr height=500><td>No Hay Nuevas Adquisiciones</td></tr>";
}else{
echo " <LINK HREF='estilo.css' REL='stylesheet' TYPE='text/css'>\n";
print "<table border=\"1\" align='center' width=\"850\">\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)) {

Ve esas dos partes en negrita.
Lo que tienes que hacer, antes de hacer el while hacer el reset. http://www.php.net/reset
  #10 (permalink)  
Antiguo 11/09/2008, 17:04
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: No me sale el mensaje en la consulta

mira Ronruby lo trabaje asi pero no funciona me imagino que lo estoy trabajando mal:

<html>
<head>
<title>Adquisiciones de Metodologia de la Investigación</title>
<link rel="stylesheet" type="text/css" href="estilo.css">
<style>
INPUT{
font-size: 8pt;
font-family: Arial;
border-style: solid;
border-width: 1px;
color: #5B6469;
border-color: #D5D8D9;
margin: 0;
padding: 0;
width: 40pt;
}
</style>
</head>
<body>
<?php
echo"<table border=0>";
echo"<form action='prueba.php' method='post'>";
echo"<tr><td>Introduzca la fecha desde (dia/mes/año) <INPUT TYPE='text' NAME='Fecha_des'></td>";
echo"<td>hasta <INPUT TYPE='text' NAME='Fecha_has'></td></tr>";
echo"<tr><td><input type='submit' name='consul' value='Consultar'></td></tr>";
echo"</form>";
echo"</table>";
if(isset($_POST['consul']))
{
$db = odbc_connect('base','','');
if (!$db) {
exit('Error en la conexión a la base de datos');
} else {

$fecha1=$_POST['Fecha_des'];
$fecha2=$_POST['Fecha_has'];

$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_fetch_array($result);
if($valor['Fecha']==0)
{
print "<table align='center' ><tr height=500><td>No Hay Nuevas Adquisiciones</td></tr></table>";
}else{

echo " <LINK HREF='estilo.css' REL='stylesheet' TYPE='text/css'>\n";
print "<table border=\"1\" align='center' width=\"850\">\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";
reset($valor);
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=\"250\" align='center'id='etiqueta' class='etiqueta'>$Titulo</td>\n <td width=\"200\" 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>\n";

}


}
}
?>



</body>
</html>
  #11 (permalink)  
Antiguo 11/09/2008, 17:31
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: No me sale el mensaje en la consulta

El reset no debe ser a quien recibe sino al origen

reset($result);
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #12 (permalink)  
Antiguo 12/09/2008, 07:29
 
Fecha de Ingreso: septiembre-2008
Mensajes: 136
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: No me sale el mensaje en la consulta

Avatar yó tambien lo intente asi e igual no funciona, depronto no hay otra forma.
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 13:04.