Foros del Web » Programando para Internet » PHP »

Error consulta, devuelve en blanco.

Estas en el tema de Error consulta, devuelve en blanco. en el foro de PHP en Foros del Web. Buenos días a tod@s, y gracias por estar ahí ayudando. Resulta que cuando realizo una consulta para que me muestre diferentes datos de una asignatura ...
  #1 (permalink)  
Antiguo 21/04/2008, 05:12
 
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años
Puntos: 0
Error consulta, devuelve en blanco.

Buenos días a tod@s, y gracias por estar ahí ayudando.

Resulta que cuando realizo una consulta para que me muestre diferentes datos de una asignatura (la web es de profesorado) concreta me lo devuelve en blanco y con un warning.

El error que me da, después de investigar es:

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 '' at line 1

El código erroneo sería:
Código PHP:
      $consulta "SELECT * FROM docencia WHERE id_asignatura=" $id_asignatura;
    
$resultado mysql_query($consulta$conec) or die( mysql_error() );
    
$asignatura mysql_fetch_object($resultado); 
Supongo que es una tontería pero por mucho que he introducido variables no consigo arreglarlo.

Gracias.
  #2 (permalink)  
Antiguo 21/04/2008, 06:50
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 17 años, 10 meses
Puntos: 3
Re: Error consulta, devuelve en blanco.

esto es mysql
prueba así
$consulta = "SELECT * FROM docencia WHERE id_asignatura='$id_asignatura'";
comillas simples en la variable $id_asignatura
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #3 (permalink)  
Antiguo 21/04/2008, 07:12
 
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años
Puntos: 0
Re: Error consulta, devuelve en blanco.

Gracias The_scorpion, formalmente está corregido porque no me da ningún warning ¡¡¡Gracias!!! pero no me devuelve el contenido de la base de datos sino el formulario en blanco.

La función que llama al archivo editar.php que tien que devolver el contenido de la BB.DD.

Código PHP:
<a href="editar.php?id_asignatura=<?php echo $asignatura->id_asignatura?>">Editar</a>
Resultando un enlace de este tipo:

http://www.****.com/modulos/docencia/admin/editar.php?id_asignatura=1

El fichero completo con los campos del formulario es:

Código PHP:
<?php
    
require_once("modulo.inc.php");
    
//Inicio la sesión
session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
    
//si no existe, envio a la página de autentificacion
    
header("Location: index.php");
    
//ademas salgo de este script
    
exit();
}

    
$conec conectar_bd();
    
    
// obtiene información general del módulo
      
$consulta "SELECT * FROM docencia WHERE id_asignatura='$id_asignatura'";
    
$resultado mysql_query($consulta$conec) or die( mysql_error() );
    
$asignatura mysql_fetch_object($resultado);
?>
<html>
<head>
<title>Adminsitraci&oacute;n</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="admin.css" rel="stylesheet" type="text/css">
<script language="javascript">
<!--
    function openWindow(url, ancho, alto) {
        window.open(url, "", "location=no,directories=no,resizable=no,status=no,scrollbars=yes,width=" + ancho + ",height=" + alto + ",top=" + ((window.screen.height - alto) / 2) + ",left=" + ((window.screen.width - ancho) / 2));
    }
//-->
</script>
</head>
<body>
<table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0" class="tablaConBorde">
  <tr class="cabeceraTabla">
    <td width="59%" height="30" align="left">::<?php echo strtoupper(obtener_nombre_modulo($conec)); ?>::EDITAR 
      ASIGNATURA</td>
    <td width="41%" align="right" class="textoNormalBlanco"> 
    <span onClick="javascript: openWindow('../../ficheros/admin/index.php?id_modulo=<?php echo $id_modulo?>&tag=<?php echo $id_asignatura?>', 800, 480);" class="enlaceNormalBlanco">Ficheros</span> |
    <span onClick="javascript: openWindow('../../enlaces/admin/index.php?id_modulo=<?php echo $id_modulo?>&tag=<?php echo $id_asignatura?>', 800, 480);" class="enlaceNormalBlanco">Enlaces</span> |
    <a href="index.php" class="enlaceNormalBlanco">Volver</a> 
    </td>
  </tr>
  <tr bgcolor="#CCCCCC">
    <td colspan="2" align="center" valign="top" class="textoGrandeNegro">      <br>
      <table width="90%"  border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tablaConBorde">
        <tr>
          <td class="cabeceraTablaPequena">Datos de la asignatura:</td>
        </tr>
        <tr>
          <form action="operaciondocencia.php" method="post">
          <input type="hidden" name="id_asignatura" value="<?php echo $id_asignatura?>">
          <input type="hidden" name="operacion" value="actualizar_asignatura">
          <td>
          <table width="100%"  border="0" align="center" cellpadding="0" cellspacing="2" class="textoNormalNegro">
                <tr> 
                  <td colspan="2" align="center" bgcolor="#FFCCCC">Nombre:</td>
                  <td><input name="asignatura" type="text" class="input" value="<?php echo pro_in($asignatura->asignatura); ?>" size="60"></td>
                </tr>
                <tr> 
                  <td colspan="2" align="center" bgcolor="#FFCCCC">Presentaci&oacute;n:</td>
                  <td><textarea name="presentacion" cols="60" rows="10" class="input" id="presentacion"><?php echo pro_in($asignatura->presentacion); ?></textarea></td>
                </tr>
                <tr> 
                  <td colspan="2" align="center" bgcolor="#FFCCCC">Imparten:</td>
                  <td><textarea name="quien_imparte" cols="60" rows="5" class="input" id="quien_imparte"><?php echo pro_in($asignatura->quien_imparte); ?></textarea></td>
                </tr>
                <tr> 
                  <td colspan="2" align="center" bgcolor="#FFCCCC">Lugar:</td>
                  <td><input name="lugar_imparticion" type="text" class="input" id="lugar_imparticion" value="<?php echo pro_in($asignatura->lugar_imparticion); ?>" size="60"></td>
                </tr>
                <tr> 
                  <td colspan="2" align="center" bgcolor="#FFCCCC">N&ordm; horas:</td>
                  <td><input name="numero_horas" type="text" class="input" id="numero_horas" value="<?php echo $asignatura->numero_horas?>"></td>
                </tr>
                <tr> 
                  <td width="13%" rowspan="2" align="center" bgcolor="#FFCCCC">Tutor&iacute;as</td>
                  <td width="12%" align="center" bgcolor="#FFFF99">Horario:</td>
                  <td width="75%"><input name="horario_tutorias" type="text" class="input" id="horario_tutorias" value="<?php echo pro_in($asignatura->horario_tutorias); ?>" size="50"></td>
                </tr>
                <tr> 
                  <td align="center" bgcolor="#FFFF99">Lugar</td>
                  <td width="75%"><input name="lugar_tutorias" type="text" class="input" id="lugar_tutorias" value="<?php echo pro_in($asignatura->lugar_tutorias); ?>" size="60"></td>
                </tr>
                <tr align="center"> 
                  <td colspan="3"><input name="Submit" type="submit" class="boton" value="Guardar cambios"></td>
                </tr>
              </table>
          </td>
          </form>
        </tr>
      </table>    
      <br>
    </td>
  </tr>
</table> 
</body>
</html>
¿Cuál puede ser el problema?

Gracias por tu tiempo y ayuda
  #4 (permalink)  
Antiguo 21/04/2008, 11:34
 
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años
Puntos: 0
Re: Error consulta, devuelve en blanco.

Hola de nuevo, ya encontré el error, más grande y no lo veo. Resulta que tenía register_globals en off y claro no funcionaba nada.

La solución que he encontrado puede no ser la más segura, pero en mi caso son más de 60 archivos a modificar y sinceramente las páginas que son no merecen el trabajo por ser muy antiguas y con poco uso.

La solución es introducir en siguiente código al principio de los archivos implicados:
Código PHP:
<?php
// Emular register_globals on
if (!ini_get('register_globals')) {
    
$superglobales = array($_SERVER$_ENV,
        
$_FILES$_COOKIE$_POST$_GET);
    if (isset(
$_SESSION)) {
        
array_unshift($superglobales$_SESSION);
    }
    foreach (
$superglobales as $superglobal) {
        
extract($superglobalEXTR_SKIP);
    }
}
?>
Espero que esto os sirva.
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 07:25.