Foros del Web » Programando para Internet » PHP »

problema al mostrar datos de una consulta mysql

Estas en el tema de problema al mostrar datos de una consulta mysql en el foro de PHP en Foros del Web. hola, quiero mostrar una consulta que hago en mysql por html pero la consulta no me devuelve nada, aunque si pego el código sql en ...
  #1 (permalink)  
Antiguo 16/05/2008, 08:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
problema al mostrar datos de una consulta mysql

hola, quiero mostrar una consulta que hago en mysql por html pero la consulta no me devuelve nada, aunque si pego el código sql en la base de datos si funciona, con lo que supongo que lo que está mal es la parte php... pero no sé que pasa:

<html>
<body>
<?php
//conexion BD
$link = mysql_connect("localhost", "basedatos", "micontrasenna");
mysql_select_db("cuestionario", $link);

$result = mysql_query("SELECT AVG (Respuesta01) FROM Formulario", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td><b>Media</b></td> \n";
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["Respuesta01"]."</td> \n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
} else {
echo "No hay datos para mostrar";
}
?>
</body>
</html>

A ver si a alguien se le ocurre,

Muchas gracias!
  #2 (permalink)  
Antiguo 16/05/2008, 09:18
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: problema al mostrar datos de una consulta mysql

La verdad que soy bastante novato, pero tengo un codigo parecido y veo que hay una cosa que podrias probar. En el while donde tu pones:

while ($row = mysql_fetch_field($result))

Yo tengo puesto:

while ($field = mysql_fetch_field($result))


Espero que sea esoooooo

Suerte
  #3 (permalink)  
Antiguo 16/05/2008, 09:43
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: problema al mostrar datos de una consulta mysql

Prueba cambiar esta linea:
Código PHP:
$result mysql_query("SELECT AVG (Respuesta01) FROM Formulario"$link); 
Por esto:
Código PHP:
$result mysql_query("SELECT AVG (Respuesta01) FROM Formulario"$link) or die( mysql_error() ); 
Saludos.
  #4 (permalink)  
Antiguo 16/05/2008, 12:22
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: problema al mostrar datos de una consulta mysql

Sigue sin funcionar, me pinta la tabla pero no me pone el valor de la media (3,7 que sale al introducirlo en phpmyadmin...).
  #5 (permalink)  
Antiguo 16/05/2008, 12:25
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: problema al mostrar datos de una consulta mysql

Perdón no vi el código completo, prueba así:
Código PHP:
$result mysql_query("SELECT AVG(Respuesta01) AS 'Respuesta01' FROM Formulario"$link) or die( mysql_error() ); 
Saludos.
  #6 (permalink)  
Antiguo 16/05/2008, 15:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: problema al mostrar datos de una consulta mysql

Sí era eso! vaya...pues nunca se me hubiese ocurrido,

Ok, una pregunta, si el lugar de pasar fijo la Respuesta01 hago un combo donde se puede seleccionar de que Pregunta quieres la media (Respuesta01, Respuesta02, Respuesta03), cómo lo haría?

<?php

$link = mysql_connect("localhost", "basedatos", "micontrasenna");
mysql_select_db("cuestionario", $link);

$respuesta = (isset($_POST["respuesta"])) ? $_POST["respuesta"] : '';


$result = mysql_query("SELECT AVG($respuesta) AS $respuesta FROM Formulario", $link) or die( mysql_error() );
echo $row["$respuesta"];
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td><b>Media</b></td> \n";
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["$respuesta"]."</td> \n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
} else {
echo "No hay datos para mostrar";
}
?>


¿Sería así?

Gracias por vuestra ayuda!
  #7 (permalink)  
Antiguo 16/05/2008, 15:42
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: problema al mostrar datos de una consulta mysql

Cuando usas un alias (AS), recuerda que el valor tiene que estar entre comillas simples (').

Saludos.
  #8 (permalink)  
Antiguo 16/05/2008, 16:21
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola, lo he puesto con '' :

$link = mysql_connect("localhost", "basedatos", "micontrasenna");
mysql_select_db("cuestionario", $link);

$respuesta = (isset($_POST["respuesta"])) ? $_POST["respuesta"] : '';
$respuesta = (isset($_POST["respuesta"])) ? $_POST["respuesta"] : '';


$result = mysql_query("SELECT AVG ('$respuesta') AS '$respuesta' FROM Formulario", $link) or die( mysql_error() );
echo $row['$respuesta'];
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td><b>Media</b></td> \n";
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row['$respuesta']."</td> \n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
} else {
echo "No hay datos para mostrar";
}

Y me pasa como antes, me pinta la tabla pero no rellena el valor de media.

Muchsísimas gracias!

Última edición por chanseyn113; 16/05/2008 a las 16:36
  #9 (permalink)  
Antiguo 16/05/2008, 16:35
 
Fecha de Ingreso: abril-2008
Ubicación: Querétaro, Mexico
Mensajes: 44
Antigüedad: 16 años
Puntos: 2
Respuesta: problema al mostrar datos de una consulta mysql

hola que tal,

el error esta aqui:
Código PHP:
$result mysql_query("SELECT AVG '$respuesta' AS '$respuesta' FROM Formulario"$link) or die( mysql_error() ); 
debes de cambiarlo por:
Código PHP:
$result mysql_query("SELECT AVG($respuesta) AS '$respuesta' FROM Formulario"$link) or die( mysql_error() ); 
te faltan los () para indicar que AVG es una funcion de mysql
  #10 (permalink)  
Antiguo 16/05/2008, 16:43
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: problema al mostrar datos de una consulta mysql

Ahora en lugar de salirme la tabla de media sin el resultado me da este error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AS '' FROM Formulario' at line 1
  #11 (permalink)  
Antiguo 16/05/2008, 22:19
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: problema al mostrar datos de una consulta mysql

Prueba este código:
Código PHP:
$link mysql_connect("localhost""basedatos""micontrasenna");
mysql_select_db("cuestionario"$link);

$respuesta = (isset($_POST["respuesta"])) ? $_POST["respuesta"] : '';
if( empty( 
$respuesta ) ) {
        die( 
"No se envío una respuesta" );
}

$result mysql_query("SELECT AVG ('$respuesta') AS '$respuesta' FROM Formulario"$link) or die( mysql_error() );
echo 
$row['$respuesta'];
if (
$row mysql_fetch_array($result)){
echo 
"<table border = '1'> \n";
echo 
"<tr> \n";
echo 
"<td><b>Media</b></td> \n";
echo 
"</tr> \n";
do {
echo 
"<tr> \n";
echo 
"<td>".$row[$respuesta]."</td> \n";
echo 
"</tr> \n";
} while (
$row mysql_fetch_array($result));
echo 
"</table> \n";
} else {
echo 
"No hay datos para mostrar";

Saludos.
  #12 (permalink)  
Antiguo 17/05/2008, 07:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: problema al mostrar datos de una consulta mysql

Anda claro, el problema está en el envío del formulario...me sale que no se envió la respuesta...
Pero claro ahora la duda que me surge...mi formulario es así (es un combo)

<form id="calculo_media" name="calculo_media" action="media.php" method="POST">
<label>Deseo obtener la media de la siguiente pregunta:<br /><br />
<select name="select" size="1">
<option value="Respuesta01">1.1</option>
<option value="Respuesta02">1.2</option>
<option value="Respuesta03">1.3</option>
</select>
</label>
<input type="submit" name="Submit" value="Enviar" />
</form>

Se supone que se envia el valor que se seleccione...pero no sé como hacerlo para luego recogerlo....sorry te estoy dando mucha guerra...
  #13 (permalink)  
Antiguo 17/05/2008, 08:10
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: problema al mostrar datos de una consulta mysql

El nombre de tu select "respuesta"

Código HTML:
<form id="calculo_media" name="calculo_media" action="media.php" method="POST">
<label>Deseo obtener la media de la siguiente pregunta:<br /><br />
<select name="respuesta" size="1">
<option value="Respuesta01">1.1</option>
<option value="Respuesta02">1.2</option>
<option value="Respuesta03">1.3</option>
</select>
</label>
<input type="submit" name="Submit" value="Enviar" />
</form> 
y luego lo recoges como te indicaron

Código PHP:
$link mysql_connect("localhost""basedatos""micontrasenna");
mysql_select_db("cuestionario"$link);

$respuesta = (isset($_POST["respuesta"])) ? $_POST["respuesta"] : '';
if( empty( 
$respuesta ) ) {
        die( 
"No se envío una respuesta" );
}

$result mysql_query("SELECT AVG ('$respuesta') AS '$respuesta' FROM Formulario"$link) or die( mysql_error() );
echo 
$row['$respuesta'];
if (
$row mysql_fetch_array($result)){
echo 
"<table border = '1'> \n";
echo 
"<tr> \n";
echo 
"<td><b>Media</b></td> \n";
echo 
"</tr> \n";
do {
echo 
"<tr> \n";
echo 
"<td>".$row[$respuesta]."</td> \n";
echo 
"</tr> \n";
} while (
$row mysql_fetch_array($result));
echo 
"</table> \n";
} else {
echo 
"No hay datos para mostrar";



Saludos.
  #14 (permalink)  
Antiguo 17/05/2008, 12:51
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: problema al mostrar datos de una consulta mysql

Muchas gracias, eso hice despues de volverme loca intentado pillar el valor de combo con una variable...var x = document.getElementById("respuesta").value; vah un jaleo.
He puesto lo que me has dicho y ahora no me calcula la media correctamente, siempre me da 0...aunque si hago echo $respuesta; si que se está pasando bien el valor.
  #15 (permalink)  
Antiguo 18/05/2008, 14:42
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: problema al mostrar datos de una consulta mysql

Nada, he probado todo lo que se me ha ocurrido y nada....si imprimo el valor de la variable respuesta recoge bien el dato pero al ponerlo en la instrucción sql siempre me devuelve 0 y si en el sql pongo directamente tambien la respuesta lo hace bien...supongo que será algún lio de '' o algo así pero no consigo dar que con que será, ¿a alguien se le ocurre algo?

Saludos y gracias de antemano!
  #16 (permalink)  
Antiguo 19/05/2008, 07:34
 
Fecha de Ingreso: noviembre-2003
Mensajes: 22
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: problema al mostrar datos de una consulta mysql

Ya lo solucioné, era un problema con las ""

Así funciona por si le sirve a alguien
$query = "SELECT AVG(".$respuesta.") AS '".$respuesta."' FROM Formulario";
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 00:29.