Título: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) Publicado por: Cergath en 23 Septiembre 2009, 18:35 pm Pues miren:
Empiezo por crear la DB en phpmyadmin normal, le puse "Suscritos" y ejecuté la consulta: Citar CREATE TABLE `tabla_boletin` ( `id` bigint(20) NOT NULL auto_increment, `email` varchar(100) NOT NULL default '', `fecha` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) TYPE=MyISAM AUTO_INCREMENT=1; Todo bien, ahora la página para suscribir, que es un cuadro tonto que pide el email y en seguida te pone en la DB, o bien te elimina poniendo el correo. Código
¿Va bien verdad?, ahora fíjense en la parte de Include (al principio), pide el archivo Conexion.php que lo tengo así: Código
¿Esta bien no?... cuando corro el script no me sale error, pero a la hora de poner el email y dar en Suscribir, puf, no pasa nada en la DB, no queda el registro.... Adjunto el fichero para enviar el email en html: Código
Muchas gracias, espero ayuda... Título: Re: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) Publicado por: WHK en 23 Septiembre 2009, 20:45 pm El problema lo tienes en la sentencia LIKE, fijate que no es lo mismo poner
Código a poner Código like da una aproximación o sea algo que contenga eso pero puede retornar muchos resultados, si quieres algo exacto usa el signo igual. Otro detalle es que si usas like de seguro no tienes ningún email que comienze con un espacio en blanco ni termmine con uno también asi que o le sacas esos espacios en blanco en like o le pones el signo porcentage %palabra% ya que porcentage es comodín y significaría que pueda comenzar por lo que sea y termine en lo que sea pero que contenga palabra, si le pones espacio en blanco + palabra + espacio en blanco estarás buscando todos los mails que comienzen y terminen en un espacio en blanco y que además puedan contener la palabra y por eso no te devuelve resultados. Fijate en tu phpmyadmin y fabrica la query así: $sql = 'select * from ....' después vas y haces un echo $sql; tomas lo que te muestre y lo pegas en tu phpmyadmin y verás el problema. También puedes sacarle las arrobas para que te muestre si hay algún error en la función porque así vas a ciegas. Otra cosa, utiliza http://cl2.php.net/mysql_real_escape_string para evitar las inyecciones sql Código
Ahora, si quieres saber la cantidad de mails que concuerden puedes usar count() Código
Te devolverá una columna llamada 'count(id)' con la cantidad de mails que concuerden con el criterio. Título: Re: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) Publicado por: Cergath en 23 Septiembre 2009, 21:02 pm Gracias por los consejos!, ya los implementé.
Sin embargo el script nada que me pone los registros en la base de datos, colocas el email, clic en suscribir y nada... :-\ Título: Re: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) Publicado por: miguel86 en 27 Septiembre 2009, 20:52 pm Vete paso por paso, comprobando cada consulta si da resultado, fijate en el fondo de tu página ya que el mensaje en el die si tienes un fondo oscuro no lo verás, coge tu php copia la consulta y la pegas en la parte sql del Mysql (Phpmyadmin) para comprobar que no tiene errores de sintaxis y si funcionan dilo y te miramos la semántica (pero antes mira la sintaxis ya que eso corre de tu cuenta no quieras que te miramos todas las sentencias y te las corrijamos).
Cuando lo hayas hecho y hayas comprobado de arriba a abajo cada sentencia habrás dado con la sentencia que te da el problema, colócala y te la corregimos. O al menos pon la salida que te da de colocar las sentencias de la primera a la última en el orden que van al probarlas en el phpmyadmin. Salu2 Título: Re: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) Publicado por: ^Tifa^ en 29 Septiembre 2009, 02:02 am No puedo ayudarte en abundancia, ya que el error puede ser variado... haz considerado revisar los logs que genera Apache respecto a esto? generalmente cuando tengo un fallo en algo de php o un cgi de perl o viceversa y no se donde esta el error, voy a los logs de error de Apache y alli me instruyo mas sobre que esta pasando ;) mira ver si te funciona.
Título: Re: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) Publicado por: Embusterillo de bolsillo en 4 Octubre 2009, 01:38 am Cergath, es simple:
No hace el registro porque la acción del formulario es redirigirse a si mismo más no a las variables, no es lo mismo: <form action="suscripcion.php" method="post" name="" id=""> Que: <form action="<?php $_SERVER['PHP_SELF']?>" method="post" name="" id=""> Saludos! Edit PD: de igual manera haz lo que te dijo WHK, más ahora si te hará el registro en la DB. Título: Re: ¿Que estoy haciendo mal?... (Sistema newsletter, problema al conectar a la DB) Publicado por: Eru Iluvatar en 4 Octubre 2009, 20:25 pm El problema lo tienes en la sentencia LIKE, fijate que no es lo mismo poner Código a poner Código like da una aproximación o sea algo que contenga eso pero puede retornar muchos resultados, si quieres algo exacto usa el signo igual. Otro detalle es que si usas like de seguro no tienes ningún email que comienze con un espacio en blanco ni termmine con uno también asi que o le sacas esos espacios en blanco en like o le pones el signo porcentage %palabra% ya que porcentage es comodín y significaría que pueda comenzar por lo que sea y termine en lo que sea pero que contenga palabra, si le pones espacio en blanco + palabra + espacio en blanco estarás buscando todos los mails que comienzen y terminen en un espacio en blanco y que además puedan contener la palabra y por eso no te devuelve resultados. Fijate en tu phpmyadmin y fabrica la query así: $sql = 'select * from ....' después vas y haces un echo $sql; tomas lo que te muestre y lo pegas en tu phpmyadmin y verás el problema. También puedes sacarle las arrobas para que te muestre si hay algún error en la función porque así vas a ciegas. Otra cosa, utiliza http://cl2.php.net/mysql_real_escape_string para evitar las inyecciones sql Código
Ahora, si quieres saber la cantidad de mails que concuerden puedes usar count() Código
Te devolverá una columna llamada 'count(id)' con la cantidad de mails que concuerden con el criterio. cergath, necesito un sistema como estos, espero que no te moleste si lo uso!... oye, y esto donde lo coloco? Código
|