Ayuda con código php

Hola experto:
La consulta es para que me orientes o me digas en donde esta el error de mi aplicación: Te paso a comentar: estoy empezando a estudiar php, estoy trabajando con wamp server 5 que usa php 5.1 y mysql 4.1, he cambiado la password en mysql en modo consola, configure el phpmyadmin y he logrado crear la base de datos llamada estadisg con dos tablas, trabajo con el editor maguma y el archivo de trabajo configure, la conexión y el acceso a la base de datos, y con el previe del maguma me muestra la consulta y la imagen que le cargo. Pero al querer ejecutarlo desde el internet explorer
me da el siguiente error
                                    DATOS DE LA CONSULTA
= '01' AND `fecinimes` <= '09' group by `fecinimes`,`mesa`"); if (!$result) { echo 'Could not run query: ' . Mysql_error(); exit; } echo ""; //imprime los nombre de los campos for ($i = 0; $i < mysql_num_fields($result); $i++) { print " ".mysql_field_name($result, $i)." \n"; } while ($registro = mysql_fetch_row($result)) { echo "
"; foreach($registro as $clave) { echo " ",$clave," "; } } echo "
"; mysql_close(); ?>
Y se muestra la imagen cargada en forma normal.
Lo que no me muestra es la consulta, o sea en su lugar me muestra el código de la consulta donde este el error o que debo hacer para corregir esto.
Desde ya muchas gracias por tu atención. Mi dirección de correo es (xxxxxx)
Respuesta
1
Parece que debe haber alguna confusión en tu código y por eso la consulta se interpreta mal. Seguramente algún problema con las comillas.
Si copias las líneas originales del código donde se encuentra la consulta, seguramente podré ver el error. Sino puedes repasar las comillas simples y dobles que seguramente ahí estará el problema.
Hola David:
                  Comencé haciendo lo que me indicaste pero no he logrado avanzar nada, en el maguma si se realiza la consulta, pero cuando lo invoco con el ie7 o ie6 me devuelve el código de la consulta. Te envío el código que estoy empleando, desde ya muchas gracias por tu rápida contestación. Mi dirección de correo es (xxxxxx).
Código empleado:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Title here!</title>
<BODY BGCOLOR="white">
<center>
<font size=4
color="navy" > TITULOS</font><font size=4> </font> <br>
<br>
<font size=4
color="navy" > DATOS </font><font size=4> </font> <br>
<br>
</head>
<body>
<?php
include('conexion.php'); //INCLUIMOS SCRIPT DE CONEXIÓN A BASE DE DATOS
$tabla="datagraf"; //NOMBRE DE LA TABLA A MOSTRAR
$result = mysql_query('select `feciiniano` AS AÑO,`mesa` AS MESA, descrimes AS MES,`cantexp` As CANTIDAD FROM datagraf left join `meses` on (datagraf.fecinimes = meses.idmes)
where `mesa` like "00101" and `fecinimes` >= "01" AND `fecinimes` <= "09"
group by `fecinimes`,`mesa`');
echo "
<table bgcolor=\"#DDDDDD\" align=center style=\"border:2px outset black\">
";
//imprime los nombre de los campos
for ($i = 0; $i < mysql_num_fields($result); $i++)
{
print "<th>".mysql_field_name($result, $i)."</th>\n";
}
while ($registro = mysql_fetch_row($result))
{
echo "
<tr>
";
foreach($registro as $clave)
{
echo "
<td bgcolor=\"#BBBBBB\"style=\"border:2px groove black\" align=\"center\">",$clave,"</td>
";
}
}
echo "
</tr>
</table>
";
mysql_close();
?>
<br><br><br>
<center>
<IMG SRc="imagenes/GRAF-00101.PNG"
</center>
</body>
</html>
Como me temía era un problema de comillas. Además hay un par de cosas más que te comento.
En lugar de:
$result = mysql_query('select `feciiniano` AS AÑO,`mesa` AS MESA, descrimes AS MES,`cantexp` As CANTIDAD FROM datagraf left join `meses` on (datagraf.fecinimes = meses.idmes)
where `mesa` like "00101" and `fecinimes` >= "01" AND `fecinimes` <= "09"
group by `fecinimes`,`mesa`');
Deberías no usar comillas dobles para las cadenas, en SQL deben usarse comillas simples. No recomiendo usar nombres con caracteres no estándar como AÑO, no siempre da problemas pero en determinados contextos puede ser un inconveniente. Un like sin comodines es una comparación simple: mesa like '00101' es lo mismo que mesa='00101'
El resultado correcto:
$result = mysql_query("select `feciiniano` AS `AÑO`,`mesa` AS MESA, descrimes AS MES,`cantexp` As CANTIDAD FROM datagraf left join `meses` on (datagraf.fecinimes = meses.idmes)
where `mesa` like '00101' and `fecinimes` >= '01' AND `fecinimes` <= '09'
group by `fecinimes`,`mesa`");
Hola experto:
                      Desde ya muchas gracias por tu atención y rapidez para darme una solución al problema planteado, probé lo que dijiste pero no funciona, y he leído que para que el código php colocado dentro de una página html es necesario hacer una modificación de un archivo o crearlo. Me puedes aclarar esto. Por favor. Mi dirección de ocrreo es (xxxxxx)
Si esta a tu alcance me podría enviar un ejemplo en php para ver si soluciono mi problema.
               Desde ya muchas gracias.
¿Podrías explicar más concretamente el significado de 'no funciona'? La sentencia es ahora correcta siempre y cuando los campos correspondan a las tablas indicadas en tu base de datos, cosa que yo no puedo saber.
Te recomiendo que los revises. Por ejemplo, el primer campo tiene 3 'ies' y yo diría que sólo debería tener 2, pero eso sólo puedes saberlo tu que tienes la base de datos a la vista.
Otra cosa que puedes hacer es 'debugar' un poquito: reduce la sentencia a otra menos complicada y podrás ir acotando dónde puede estar el error.
Por ejemplo puedes empezar con un 'select * FROM datagraf' e ir añadiendo partes a medida que vaya funcionando hasta que falle.
Para más información puedes imprimir el error que te dará más información:
echo mysql_error();
En cuanto a eso de que hay que hacer una modificación de un archivo o crearlo para acceder a la base de datos, es bastante vago pero no me suena de nada.
Se supone que en tu fichero 'conexión.php' se realiza una conexión correcta a la base de datos donde tienes tus tablas. Si no es así, desde luego es 'normal' que no funcione.
Buenísima la explicación y muy didáctica la forma de solucionar el problema presentado, me abocare a seguir tus consejos. Desde ya muchs gracias.
Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas