Foros del Web » Programando para Internet » PHP »

Error al enviar formulario -Query was empty

Estas en el tema de Error al enviar formulario -Query was empty en el foro de PHP en Foros del Web. Hola he hecho un formulario para poder enviar emails, estos emails estan en una base de datos. En el formulario se rellena los siguientes campos: ...
  #1 (permalink)  
Antiguo 05/01/2007, 06:12
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Enviar email a un determinado grupo de personas

Hola he hecho un formulario para poder enviar emails, estos emails estan en una base de datos. En el formulario se rellena los siguientes campos:
  • Asunto- Que es el asunto que tendrá el email
  • Cuerpo-- Es el texto del email, tiene BBCode
  • Categoria-- para saber si se envia a todos los usuarios o a una categoria

Hasta ahi está claro? espero que si. Bueno el probolema es que cuando relleno el formulario y le doy a enviar me sale el siguinete mensaje:
Query was empty


Y no se por que me da eso, aquí os dejo el codigo,ok??
Una cosa: el email lo envio en formato HTML

Código PHP:
<?php 
       
include('bbcode/bbcode.php'); 
       
$mi_conexion=mysql_connect("localhost","****","****");
       
mysql_select_db("*****",$mi_conexion);
       
//VARIABLES 
       
$asunto=$_POST['asunto'];
       
$cosbbcode($_POST['cuerpo']);
       
$categoria=$_POST['categoria'];
       
$envia='Agència Energètica de la Ribera';
       
$remite='[email protected]';

       
//CONSULTA POR CATEGORIA
       
if ($categoria!='tots'){
       
$query_Tabla=mysql_query("select * from bol WHERE categoria=$categoria");
       }
       else{ 
$query_Tabla=mysql_query("select * from bol");}
       
       
$Tabla mysql_query($query_Tabla$mi_conexion) or die(mysql_error());
       
       
$losemails="";
while (
$row_Tabla=mysql_fetch_assoc($Tabla)) {
$losemails.=($row_Tabla['email'].", ");
}
$largo=strlen($losemails);
if (
$largo>2)
{
//quitamos ultimos ", "
$losemails=substr($losemails,0,$largo-2);
}
else
{
echo 
"No hay destinatarios!";
die();
};
// se definen los argumentos de mail( ):

$mensaje='<html>
<head>
<title>Agència Energètica de la Ribera</title>
</head>
<body>
<table border="0" width="800" id="table1">
    <tr>
        <td>
<p align="center">
<a href="http://www.aer-ribera.com/">
<img border="0" src="http://www.aer-ribera.com/web1/documentos/aer.jpg" width="189" height="136"></a></p>
<p align="center">
<b><font face="Verdana">L\'<font size="4" color="#FF9900">A</font>gència
<font size="4" color="#FF9900">E</font>nergètica 
de la <font size="4" color="#FF9900">R</font>ibera informa:</font></b></p>
<p align="center">'
.$cos.'</p>
<p align="center">
&nbsp;</p>
<dl>
    <div align="center">
        <dt><b><font face="Verdana">L\'Agència Energètica de la Ribera </font>
        </b></dt>
    </div>
    <div align="center">
        <dt><strong>Plaça d\'Argentina</strong>,<br>
        <span class="Estilo6"><strong>46680 Algemesí&nbsp;&nbsp; (València)</strong></span><br>
        Tel. 96 242 46 41 - Fax 96 242 12 56<br>
        Email: [email protected]<br>
&nbsp;</dt>
    </div> </td>
    </tr>
    </table>
</body>
</html>'
;
/// Envío del email:
mail(null$asunto$mensaje"MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: $envia <$remite>
Bcc: $losemails" 
"rn") or die("Error al Enviar el Email");
echo 
"Mensaje Enviado con Éxito!"//
mysql_free_result($Tabla);
mysql_close($mi_conexion);
       
       
       
    echo 
"<script> alert (\"emails enviats amb èxit!!\"); </script>";
    echo 
"<script language=Javascript> location.href=\"emails.php\"; </script>";
    die();    
?>

Última edición por alllebor; 08/01/2007 a las 02:38
  #2 (permalink)  
Antiguo 05/01/2007, 06:41
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Creo que el error está aquí:

Código PHP:
//CONSULTA POR CATEGORIA
       
if ($categoria!='tots'){
       
$query_Tabla=mysql_query("select * from bol WHERE categoria=$categoria");
       }
       else{ 
$query_Tabla=mysql_query("select * from bol");} 
Deberías de eliminar lo de mysql_query:

Código PHP:
//CONSULTA POR CATEGORIA
       
if ($categoria!='tots'){
       
$query_Tabla="select * from bol WHERE categoria=$categoria";
       }
       else{ 
$query_Tabla="select * from bol";} 
Un saludo
  #3 (permalink)  
Antiguo 05/01/2007, 06:52
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

holhola, he hecho lo que me has dicho pero ahora me sale otro error, con el siguiente texto
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 'de Comunicació' at line 1


Donde falla la cosa??no lo encuentro

Última edición por alllebor; 05/01/2007 a las 07:18
  #4 (permalink)  
Antiguo 05/01/2007, 08:20
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Mientras yo me ido a comer has modificado tu última respuesta: antes te daba algo referido a una columna detrás del where.

Bueno, eso era porque la variable por la que haces el where es de texto y el sql necesita que,como tal, la encierres entre comillas simples:

Código PHP:
$query_Tabla="select * from bol WHERE categoria='$categoria' "
Un saludo
  #5 (permalink)  
Antiguo 08/01/2007, 01:51
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Vaya gracias por tu ayuda, ahora ya no me da error pero si elijo una categoria para enviar el email a solo esas personas de dicha categoria no lo envia. No me da error pero tampoco envia ningu email y si pongo para enviar a todo si que los envia. Aqui tienes otra vez el codigo a ver si ves algo raro que yo no encuentro el motivo. He comprobado que la categoria que se almacena y la que compruebo sea la misma (las misma palabra) pero aun asi no funciona y la consulta esta si que la hace bien:
Código PHP:
       else{ 
       
$query_Tabla="select * from bol WHERE categoria='$categoria'";
       } 
No se por que no funciona.
Código PHP:
<?php 
       
include('bbcode/bbcode.php'); 
       
$mi_conexion=mysql_connect("***","****","*****");
       
mysql_select_db("*****",$mi_conexion);
       
//VARIABLES 
       
$asunto=$_POST['asunto'];
       
$cuerpobbcode($_POST['cuerpo']);
       
$categoria=$_POST['categoria'];
       
$envia='Agència Energètica de la Ribera';
       
$remite='[email protected]';

       
//CONSULTA POR CATEGORIA
       
if ($categoria==Tots){
       
$query_Tabla="select * from bol";
       }
       else{ 
       
$query_Tabla="select * from bol WHERE categoria='$categoria'";
       }
       
       
$Tabla mysql_query($query_Tabla$mi_conexion) or die(mysql_error());
       
       
$losemails="";
       
while (
$row_Tabla=mysql_fetch_assoc($Tabla)) {
$losemails.=($row_Tabla['email'].", ");
}
$largo=strlen($losemails);
if (
$largo>2)
{
//quitamos ultimos ", "
$losemails=substr($losemails,0,$largo-2);
}
else
{
echo 
"No hay destinatarios!";
die();
};
// se definen el mensaje del mail( ):

$mensaje='Aqui va todo el texto del email en formato HTML';



/// Envío del email:
mail(null$asunto$mensaje"MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: $envia <$remite>
Bcc: $losemails" 
"rn") or die("Error al Enviar el Email");
echo 
"Mensaje Enviado con Éxito!";

mysql_free_result($Tabla);
mysql_close($mi_conexion);




       
    
header ("Location: ./emails.php");
    exit;         

?>
  #6 (permalink)  
Antiguo 08/01/2007, 02:49
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Aún no he mirado tu script a fondo, pero esto no parece correcto:

Código PHP:
if ($categoria==Tots){ 
Si Tots es una variable, deberías poner $Tots, y si no lo es, deberías poner 'Tots' (entre comillas, por ser texto).
  #7 (permalink)  
Antiguo 08/01/2007, 02:54
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Perdona holhola, Tots es texto si que que lo tengo asi 'Tots' lo que no lo habio apuesto en el mensaje del foro, ha sido un fallo tipografico. El problema es que si elijo del formulario la categoria 'Tots' envia el correo electronico a todos los emails dados de alta, pero si elijo otra categoria no me da error pero no me envia ningun email, aqui te dejo el formulario que utilizo y que llama el script anterior:
Código:
<form  method="post" action="procesar.php" enctype="multipart/form-data" al>
            <p>&nbsp;</p>
            <table align="center" width="640" height="114">
                <tr>
                  <td width="73"><div align="right"><strong>Assumpte</strong>:</div></td>
                  <td width="555"><input type="text" name="asunto" size="100" maxlength="255" tabindex="0"/></td>
                </tr>
                <tr>
                  <td height="54"><div align="right"><strong>Cos:</strong></div></td>
                  <td><textarea id="cuerpo" name="cuerpo" cols="80" rows="6" tabindex="1" ></textarea></td>
                </tr>
                <tr>
                  <td height="54"><div align="right"><strong>Categoria:</strong></div></td>
                  <td>
				  	  <select name="categoria" tabindex="2">
			            <option value="Tots" selected="selected">Tots</option>
						<option value="Particulars/empreses">Particulars/empresa</option>
			            <option value="Ajuntaments de la Ribera">Ajuntaments de la Ribera</option>
			            <option value="Administracions Públiques">Administracions P&uacute;bliques</option>
			            <option value="Mitjans de Comunicació">Mitjans de comunicaci&oacute;</option>
		              </select>
				  </td>
                </tr>
              </table>
              <div align="center">
                <p>
                  <input type="submit" name="accion" value="Enviar"/>
                </p>
              </div>
          </form>
  #8 (permalink)  
Antiguo 08/01/2007, 02:57
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Dentro del while haces esto, y no estoy seguro que sea correcto:

Código PHP:
$losemails.=($row_Tabla['email'].", "); 
Es posible que esté bien, pero por si acaso, prueba así:

Código PHP:
$losemails.=$row_Tabla['email'].", "
De todas formas, con un echo, podrías comprobar si te está cargando las direcciones de correo correctamente en $losemails ¿no?

Última edición por holahola; 08/01/2007 a las 02:59 Razón: última aclaración
  #9 (permalink)  
Antiguo 08/01/2007, 03:05
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Ya lo habia probado con un echo y si que cargaba bien los emails dentro de la variable.
Esto me esta rayando mucho no encuentro el fallo, por que si para todos si que lo envia por que no para una determinada categoria
  #10 (permalink)  
Antiguo 08/01/2007, 03:14
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Y en la funcion mail(), ¿donde estás poniendo la variable $losemail?. Yo no lo veo.
  #11 (permalink)  
Antiguo 08/01/2007, 03:18
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Vale, vale. Ya la veo.

¿Por algún motivo especial no lo estás poniendo donde pones null?

Al parecer el error queda limitado a lo que es la función mail() ¿no?, ya que por un lado me dices que has comprobado que SÍ se carga bien la variable $losemails, y por otro, que no te los envía.

Revisate bien todos los parámetros de dicha función. No soy nada experto en el tema de la función mail(), pero cabe la posibilidad que el error esté ahí (aunque sea sólo para el caso de seleccionar una categoría).

Un saludo.

Última edición por holahola; 08/01/2007 a las 03:36
  #12 (permalink)  
Antiguo 08/01/2007, 04:09
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

No entiendo que quieres decir,

Código PHP:
mail(null$asunto$mensaje"MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: $envia <$remite>
Bcc: $losemails" 
"rn") or die("Error al Enviar el Email"); 
En esta función que dices que pasa?

Lo que tambien me estraña es que si doy de alta el mismo email en diferentes categorias o incluso en la misma categoria varias veces, cuando pongo enviar a todos, solo recibo un email a esa direccion y en teoria deberia de recibir tantos emails como veces se habia dado de alta.

Última edición por alllebor; 08/01/2007 a las 04:15
  #13 (permalink)  
Antiguo 08/01/2007, 04:16
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Lo primero, insisto que no soy nada experto en la función mail(), aunque si la he usado.

Lo que he tratado de decirte es que, a mi ententer, es ahí en la función mail() donde creo que está el problema. Pero, claro, no sé cual es.

Y por otro lado, te comentaba que en lugar de null, ¿porqué no pones $losemails?. El formato de la función es:

bool mail ( string para, string asunto, string mensaje [, string cabeceras_adicionales [, string parametros_adicionales]] )

Última edición por holahola; 08/01/2007 a las 04:23 Razón: formato de la funcion mail()
  #14 (permalink)  
Antiguo 08/01/2007, 04:23
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Yo tampoco soy nada experto en dicha funcion, pero vi en un script por internet qu elo hacia así, para que no se mostrará a cada persona que reciba el email los emails que se han enviado.
Utilizo Bcc por que así quien recibe el email no verá los demás emails.

Pero ahora lo cambiaré para probar si funciona.
Ahora te digo como me ha ido
Gracias
  #15 (permalink)  
Antiguo 08/01/2007, 04:27
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

OK! Así si que funciona, gracias por tu ayuda!!
lo qu eme mosquea por que cuando lo envio a todos si que funciona Bcc y a una categoria no funciona. Pero bueno lo dejaré así ya que si que me funciona.

Gracias!!!!!!!!!
  #16 (permalink)  
Antiguo 08/01/2007, 04:36
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Vaya! Pues te puedo asegurar que, por lo que a mí respecta, funcionó la flauta por casualidad...

Pero me alegro que te funcione. Hasta otra vez... Un saludo
  #17 (permalink)  
Antiguo 08/01/2007, 04:37
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

Ya lo he conseguido, lo he dejado como lo tenia pero en vez de poner null he puesto ' 'y ahora si que funciona.


Código PHP:
mail(''$asunto$mensaje"MIME-Version: 1.0 
Content-type: text/html; charset=iso-8859-1 
From: $envia <$remite> 
Bcc: $losemails" 
"rn") or die("Error al Enviar el Email"); 

Última edición por alllebor; 08/01/2007 a las 05:16
  #18 (permalink)  
Antiguo 08/01/2007, 04:41
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Error al enviar formulario -Query was empty

OK. Me parece coherente. Un saludo
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 21:19.