Foros del Web » Programando para Internet » PHP »

Problemas con un IF ELSE

Estas en el tema de Problemas con un IF ELSE en el foro de PHP en Foros del Web. Hola Buenos dias Tengo 57 años y hace unos dos años me meti en esto, empece programando html y hace unos meses tras muchos intentos ...
  #1 (permalink)  
Antiguo 16/09/2012, 16:45
 
Fecha de Ingreso: septiembre-2012
Ubicación: Villa Luzuriaga
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Problemas con un IF ELSE

Hola Buenos dias
Tengo 57 años y hace unos dos años me meti en esto, empece programando html y hace unos meses tras muchos intentos desentrañe el misterio del php y el mysql (ya tenia alguna bases de joven Fortran IV y Qbasic
desarrolle algunos scrip en php y funcionan (registros con validacion, autentificacion y recuperacion de contraseña.
Este ultimo me esta dando dolor de cabeza, ya que noto que me falta mas teoria.
El tema es un limitador de envios de email, el codigo funciona muy bien.....pero,
al carga la pagina aparecen los echos que pinte de azul

En este ultimo hice una prueba para ver que tiraba lo hice en el lugar que pinte de rojo
$desc1=(mysql_num_rows($desc);
echo "$desc1";

y el valor que arrojo es 1 y el valor que se introduce en el formulario es nuevo, o sea que deberia arrojar 0
el If exterior funciona perfeco con otra base (ofertas1), el problema lo tengo en el if interior, las funciones las hace pero el letrero le da un toque no profesional.
¿que hago mal, ya estoy filtradisimo con esto, alguien puede ayudarme????
Las pruebas lo hago con Xampp en localhost

1) Hice una base de datos (prueba1) y una tabla descargas1 aqui va
CREATE TABLE `descargas1` (
`id_descargas` SMALLINT (4) NOT NULL AUTO_INCREMENT,
`email` Varchar (50) NOT NULL ,
`oferta` Varchar (10) NOT NULL ,
`fecha_desc`DATE NOT NULL,
PRIMARY KEY (`id_descargas`)
);

y en codigo php es:

<?php
include ('mail.php');
$conn = mysql_connect("localhost","root","");
mysql_select_db("prueba1",$conn);$oferta= "p123";
$sql= "SELECT * FROM oferta1 WHERE oferta='$oferta'";
$datos=mysql_query($sql,$conn);
while($row = mysql_fetch_array($datos)) {
$idofer = $row['id_oferta'];
$oferta = $row['oferta'];
$cantaut = $row['cantaut'];
$cantdesc =$row['cantdesc'];}
if($cantdesc <= $cantaut){

echo '
<form action="#" method="post">
<br /><br /><br /><br />
e-mail <input name="email" size="40" maxlength="40" type="text" />
<input value="enviar" type="submit" />
<input value="Borrar" type="reset" />
</form>';

$emailusuario=@$_POST["email"];
//el @ lo coloque para que no apareciera el error de que no había valor al cargar el sitio

$con = mysql_connect("localhost","root","");
mysql_select_db("prueba1",$con);
$ssql= "SELECT * FROM descargas1 WHERE email='$emailusuario'and oferta='$oferta'";
$desc=mysql_query($ssql,$con);
/////Aqui hice un echo a mysql_num_rows($desc) para investigar y me dio 1

if(mysql_num_rows($desc)==0){

$asunto = "Guia Villa Luzuriaga - Cupón de descuento solicitado";
$cuerpo = '<html><head><title>prueba</title></head>
<body>
<img style="width: 425px; height: 283px;" alt=""
src="http://www.estudioagueromoreno.com.ar/cari1.JPG">
<br>
<br>
</body></html>
';
//para el envío en formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
//dirección del remitente
$headers .= "From: Admin Guia Villa Luzuriaga <[email protected]>\r\n";
mail($emailusuario,$asunto,$cuerpo,$headers);

$sql2= "insert into `descargas1`(`email`,`oferta`) value ('$emailusuario','$oferta');";
mysql_query($sql2,$con);
mysql_free_result($desc);
mysql_close ($con);

}
else
{
echo "Solo se acepta 1 descarga por mail, las descargas se chequearan con su IP, si se detecta abuso, su cuenta sera restringida";
exit();
}

$cantdesc++;

echo " Ha sido enviado el cupón, al email solicitado";
$sql1= "update oferta1 set cantdesc = $cantdesc where oferta ='p123'" ;
mysql_query($sql1,$conn);
mysql_free_result($datos);
mysql_close ($conn);
}
else
{
echo "Lo sentimos, ya se ha cubierto el total de cupones autorizados por el proovedor, es posible que se renueve, consulte en unas horas";
}
?>

Última edición por ashloch; 16/09/2012 a las 17:15
  #2 (permalink)  
Antiguo 17/09/2012, 03:23
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 17 años, 11 meses
Puntos: 58
Respuesta: Problemas con un IF ELSE

Claro. Tienes mal el flujo del script. Tendrías que hacer:
  • Al entrar por primera vez en la página:
    1. Comprobar si existen ofertas
    2. si hay ofertas muestras el form
    3. si no hay ofera muestas "Lo sentimos, ya se ha cubierto el total de cupones autorizados por el proovedor, es posible que se renueve, consulte en unas horas";
  • Al enviar el form.
    1. Comprobar que el usuario no ha descargado ya esa oferta.
    2. Si la ha descargado mostrar error
    3. Si no la ha descargado enviar mail.
algo así.. puede contener algún error que lo he hecho rapidamente.
Código PHP:
Ver original
  1. <?php
  2. include ('mail.php');
  3. $conn = mysql_connect("localhost","root","");
  4. mysql_select_db("prueba1",$conn);
  5. $oferta= "p123";
  6. $sql= "SELECT * FROM oferta1 WHERE oferta='$oferta'";
  7. $datos=mysql_query($sql,$conn);
  8. if($row['cantdesc']<= $row['cantaut']){?>
  9. <form action="#" method="post">
  10.   <br />  <br />  <br />  <br />  e-mail
  11.   <input name="email" size="40" maxlength="40" type="text" />
  12.   <input value="enviar" type="submit" />
  13.   <input value="Borrar" type="reset" />
  14. </form>
  15. <?php
  16.     if(isset($_POST['email']){//si se ha enviado el form
  17.         $emailusuario=$_POST["email"];
  18.         $con = mysql_connect("localhost","root","");
  19.         mysql_select_db("prueba1",$con);
  20.         $ssql= "SELECT * FROM descargas1 WHERE email='$emailusuario'and oferta='$oferta'";
  21.         $desc=mysql_query($ssql,$con);
  22.         if(mysql_num_rows($desc)==0){//si este usuario no ha descargado
  23.             $asunto = "Guia Villa Luzuriaga - Cupón de descuento solicitado";
  24.             $cuerpo = '
  25.             <html>
  26.         <head>
  27.             <title>prueba</title>
  28.             </head>
  29.         <body>
  30.             <img style="width: 425px; height: 283px;" alt=""
  31.             src="http://www.estudioagueromoreno.com.ar/cari1.JPG">
  32.             <br>
  33.             <br>
  34.             </body>
  35.         </html>
  36.             ';
  37.             //para el envío en formato HTML
  38.             $headers = "MIME-Version: 1.0\r\n";
  39.             $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  40.             //dirección del remitente
  41.             $headers .= "From: Admin Guia Villa Luzuriaga \r\n";
  42.             if(mail($emailusuario,$asunto,$cuerpo,$headers)){//enviar mail correctamente
  43.                 $sql2= "insert into `descargas1`(`email`,`oferta`) value ('$emailusuario','$oferta');";//añadir usuario a descarga
  44.                 mysql_query($sql2,$con);
  45.                 $sql1= "update oferta1 set cantdesc = cantdesc+1 where oferta ='p123'" ;//sumar una descarga a la oferta
  46.                 mysql_query($sql1,$conn);
  47.                 echo " Ha sido enviado el cupón, al email solicitado";
  48.             }else{//si ha habido un error al enviar el mail
  49.                 echo "No se ha podido enviar el mail";
  50.             }
  51.         }else{
  52.             echo "Solo se acepta 1 descarga por mail, las descargas se chequearan con su IP, si se detecta abuso, su cuenta sera restringida";
  53.         }
  54.     }
  55. }else{//fin si se ha llegado al max numero de descargas
  56. echo "Lo sentimos, ya se ha cubierto el total de cupones autorizados por el proovedor, es posible que se renueve, consulte en unas horas";
  57.  }
  58.  ?>
  #3 (permalink)  
Antiguo 17/09/2012, 08:30
 
Fecha de Ingreso: septiembre-2012
Ubicación: Villa Luzuriaga
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problemas con un IF ELSE

Ok, gracias, voy a probarlo, ya entendí que el problema esta en el flujo del programa no solo en la sintaxis.
  #4 (permalink)  
Antiguo 17/09/2012, 15:07
 
Fecha de Ingreso: septiembre-2012
Ubicación: Villa Luzuriaga
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problemas con un IF ELSE

Bueno entendi la logica , if anidados,

al comienzo dio este error:

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs....... on line 16
eliminé los espacios en blanco entre <? y el if
carge de nuevo y me da:
Parse error: syntax error, unexpected '{' in C:\xampp\htdocs..........on line 16
estuve investigando y la informacion dice que sobra un "{"

A mi por el contrario me parece que falta un else, fijense en el dibujo

Otra duda, no sabia que se podia cerrar php en la linea 8, formulario y abrir php en la linea 15

Saludos cordiales, y muchísimas gracias por la ayuda
  #5 (permalink)  
Antiguo 17/09/2012, 17:40
 
Fecha de Ingreso: septiembre-2012
Ubicación: Villa Luzuriaga
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problemas con un IF ELSE

ya encntre el error

1) if(isset($_POST['email']){//si se ha enviado el form

va if(isset($_POST['email'])){//si se ha enviado el form

y en donde pense que iba un else coloque

else {//no ha enviado formulario
echo "aun no ha ingresado datos en el formulario";}

al cargar aparecio el formulario
Sigo probando
  #6 (permalink)  
Antiguo 17/09/2012, 17:44
 
Fecha de Ingreso: septiembre-2012
Ubicación: Villa Luzuriaga
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problemas con un IF ELSE

ahora me tira
Notice: Undefined variable: row in C:\xampp\htdocs\Reformulacion5\ofertas\solucion.ph p on line 8

Notice: Undefined variable: row in C:\xampp\htdocs\Reformulacion5\ofertas\solucion.ph p on line 8
dos veces

a seguir remando!!!!1
  #7 (permalink)  
Antiguo 17/09/2012, 18:09
 
Fecha de Ingreso: septiembre-2012
Ubicación: Villa Luzuriaga
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problemas con un IF ELSE

reforme esa parte por las antiguas etiquetas que guardaban en un vector
y quedo asi: (y funciona muy bien!!!!!!!!!!)
canta error con mail() pues estoy en Xamp y no tengo Mail(), eso se soluciona en el servidor.

<?php
include ('mail.php');
$conn = mysql_connect("localhost","root","");
mysql_select_db("prueba1",$conn);
$oferta= "p123";
$sql= "SELECT * FROM oferta1 WHERE oferta='$oferta'";
$datos=mysql_query($sql,$conn);
while($row = mysql_fetch_array($datos)) {
$idofer = $row['id_oferta'];
$oferta = $row['oferta'];
$cantaut = $row['cantaut'];
$cantdesc =$row['cantdesc'];}
if($cantdesc <= $cantaut){?>
<form action="#" method="post">
* <br /> *<br /> *<br /> *<br /> *e-mail
* <input name="email" size="40" maxlength="40" type="text" />
* <input value="enviar" type="submit" />
* <input value="Borrar" type="reset" />
</form>
<?php
if(isset($_POST['email'])){//si se ha enviado el form
$emailusuario=$_POST["email"];
$con = mysql_connect("localhost","root","");
mysql_select_db("prueba1",$con);
$ssql= "SELECT * FROM descargas1 WHERE email='$emailusuario'and oferta='$oferta'";
$desc=mysql_query($ssql,$con);
if(mysql_num_rows($desc)==0){//si este usuario no ha descargado
$asunto = "Guia Villa Luzuriaga - Cupón de descuento solicitado";
$cuerpo = '
* * * * * * <html>
* * * * <head>
* * * * * * <title>prueba</title>
* * * * * * </head>
* * * * <body>
* * * * * * <img style="width: 425px; height: 283px;" alt=""
* * * * * * src="http://www.estudioagueromoreno.com.ar/cari1.JPG">
* * * * * * <br>
* * * * * * <br>
* * * * * * </body>
* * * * </html>
* * * * * * ';
//para el envío en formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
//dirección del remitente
$headers .= "From: Admin Guia Villa Luzuriaga \r\n";
if(mail($emailusuario,$asunto,$cuerpo,$headers)){//enviar mail correctamente
$sql2= "insert into `descargas1`(`email`,`oferta`) value ('$emailusuario','$oferta');";//añadir usuario a descarga
mysql_query($sql2,$con);
$sql1= "update oferta1 set cantdesc = cantdesc+1 where oferta ='p123'" ;//sumar una descarga a la oferta
mysql_query($sql1,$conn);
echo " Ha sido enviado el cupón, al email solicitado";
}else{//si ha habido un error al enviar el mail
echo "No se ha podido enviar el mail";
}
}else{
echo "Solo se acepta 1 descarga por mail, las descargas se chequearan con su IP, si se detecta abuso, su cuenta sera restringida";
}
}else {//no ha enviado formulario
echo "aun no ha ingresado datos en el formulario";}
}else{//fin si se ha llegado al max numero de descargas
echo "Lo sentimos, ya se ha cubierto el total de cupones autorizados por el proovedor, es posible que se renueve, consulte en unas horas";
}
?>

Muchísimas gracias por el aporte, hubiese tardado mucho en darme cuenta,
Escucho comentarios por favor,
donde puedo descargar un buen manual, los tutoriales no siempre son confiables.
y php.net se me hace pesado,
Saludos muy cordiales
  #8 (permalink)  
Antiguo 17/09/2012, 18:28
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Problemas con un IF ELSE

manual official http://php.net/manual/es/

Etiquetas: formulario, html, mysql, registro, sql, tabla, usuarios
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 17:17.