Foros del Web » Programando para Internet » PHP »

Problemas con if y mail

Estas en el tema de Problemas con if y mail en el foro de PHP en Foros del Web. Tengo un problema con el condicional if. En la primera página tengo el siguiento condigo de un formulario: Código: <select name= "articulo"> <option value= "01">FuelMAX ...
  #1 (permalink)  
Antiguo 19/01/2004, 22:51
Avatar de MateoVasco  
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 14 años, 4 meses
Puntos: 0
Problemas con if y mail

Tengo un problema con el condicional if. En la primera página tengo el siguiento condigo de un formulario:
Código:
<select name= "articulo">
<option value= "01">FuelMAX
<option value= "02">Super FuelMAX
<option value= "03">Lavaplatos/Lavamanos
<option value= "04">Ducha
<option value= "05">Sanitario
<option value= "06">Teleducha
<option value= "07">Camara Falsa
<option value= "08">SoapMAX
<option value= "09">Jam Cam
<option value= "10">Luces para llantas
<option value= "11">Inalámbrica color interperie
<option value= "12">Inalámbrica color pequeña dorada
<option value= "13">Inalámbrica color espía
<option value= "14">Inalámbrica color común
<option value= "15">Inalámbrica color super-espía 4-band
<option value= "16">Inalámbrica color grande
<option value= "17">Alámbrica común B/N
<option value= "18">Alámbrica común color
<option value= "19">Alámbrica pequeña dorada color
<option value= "20">Alámbrica pequeña vertical color
<option value= "21">Alámbrica interperie color
<option value= "22">Alámbrica grande B/N
<option value= "23">Alámbrica grande color
</select>
Que lleva a la siguiente página:
Código PHP:
<?php

if ($articulo"01")
$articulo"FuelMAX";
}
else
{ if (
$articulo"02")
{
$articulo"Super FuelMAX";
}
else
{ if (
$articulo"03")
{
$articulo"Economizador para lavaplatatos y lavamanos";
}
else
{ if (
$articulo"04")
{
$articulo"Economizador para ducha";
}
else
{ if (
$articulo"05")
{
$articulo"Economizador para sanitario";
}
else
{ if (
$articulo"06")
$articulo"Economizador teleducha";
}
else
{ if (
$articulo"07")
{
$articulo"Camara de vigilancia falsa";
}
else
{ if (
$articulo"08")
{
$articulo"SoapMAX";
}
else
{ if (
$articulo"09")
{
$articulo"Jam Cam";
}
else
{ if (
$articulo"10")
{
$articulo"Luces para las llantas";
}
else
{ if (
$articulo"11")
$articulo"Inalámbrica color interperie";
}
else
{ if (
$articulo"12")
{
$articulo"Inalámbrica color pequeña dorada";
}
else
{ if (
$articulo"13")
{
$articulo"Inalámbrica color espía";
}
else
{ if (
$articulo"14")
{
$articulo"Inalámbrica color común";
}
else
{ if (
$articulo"15")
{
$articulo"Inalámbrica color super-espía 4-band";
}
else
{ if (
$articulo"16")
$articulo"Inalámbrica color grande";
}
else
{ if (
$articulo"17")
{
$articulo"Alámbrica común B y N";
}
else
{ if (
$articulo"18")
{
$articulo"Alámbrica común color";
}
else
{ if (
$articulo"19")
{
$articulo"Alámbrica pequeña dorada color";
}
else
{ if (
$articulo"20")
{
$articulo"Alámbrica pequeña vertical color";
}
else
{ if (
$articulo"21")
$articulo"Alámbrica interperie color";
}
else
{ if (
$articulo"22")
{
$articulo"Alámbrica grande B/N";
}
else
{ if (
$articulo"23")
{
$articulo"Alámbrica grande color";
}
else
{
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};
};

echo 
"El e-mail fue enviado exitosamente a $email y el artículo fue: $articulo";

?>
Y aunque se elija la cualquir opción, siempre va a aparecer como si hubiera elejido le primera. El condicional está mal echo???




Y lo segundo es que cuando trato de enviar un correo me aparece el siguiente error:

Warning: Server Error in c:\archivos de programa\apache group\apache\htdocs\ventas\procesador.php on line 151

El problema es de la configuración del Apache??? (porque lo tengo instalado en mi pc)

Gracias!!!!
  #2 (permalink)  
Antiguo 19/01/2004, 23:05
 
Fecha de Ingreso: febrero-2003
Ubicación: Bogotá
Mensajes: 952
Antigüedad: 14 años, 10 meses
Puntos: 0
hola el if no es muy bueno en estos casos mas bien te recomiendo que mejor uses switch, te valdra de la siguiente forma:

switch($articulo){
case "01":
$articulo= "FuelMAX";
break;
case "02":
$articulo= "Super FuelMAX";
break;

}

Agregas cada case y break; para terminar...

Y sobre lo del mail te toca configurar un servidor SMTP en el php.ini.

saludos
__________________
RedFutura
Alojamiento Web Profesional
www.redfutura.net

Última edición por andres-rf; 19/01/2004 a las 23:06
  #3 (permalink)  
Antiguo 19/01/2004, 23:22
Avatar de BrujoNic
Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.804
Antigüedad: 16 años
Puntos: 609
Yo cambiaría el if por switch y utilizaría otra variable para almacernar el resultado:

Código PHP:
<?php
$resultado 
"";

switch(
$articulo)
{
  case 
"01":
      
$resultado "FuelMAX";
      break;
  case 
"02":
      
$resultado "Super FuelMAX";
      break;
  case 
"03":
      
$resultado "Economizador para lavaplatatos y lavamanos";
      break;
  case 
"04":
      
$resultado "Economizador para ducha";
      break;
  case 
"05":
      
$resultado "Economizador para sanitario";
      break;
  case 
"06":
      
$resultado "Economizador teleducha";
      break;
  case 
"07":
      
$resultado "Camara de vigilancia falsa";
      break;
  case 
"08":
      
$resultado "SoapMAX";
      break;
  case 
"09":
      
$resultado "Jam Cam";
      break;
  case 
"10":
      
$resultado "Luces para las llantas";
      break;
  case 
"11":
      
$resultado "Inalámbrica color interperie";
      break;
  case 
"12":
      
$resultado "Inalámbrica color pequeña dorada";
      break;
  case 
"13":
      
$resultado "Inalámbrica color espía";
      break;
  case 
"14":
      
$resultado "Inalámbrica color común";
      break;
  case 
"15":
      
$resultado "Inalámbrica color super-espía 4-band";
      break;
  case 
"16":
      
$resultado "Inalámbrica color grande";
      break;
  case 
"17":
      
$resultado "Alámbrica común B y N";
      break;
  case 
"18":
      
$resultado "Alámbrica común color";
      break;
  case 
"19":
      
$resultado "Alámbrica pequeña dorada color";
      break;
  case 
"20":
      
$resultado "Alámbrica pequeña vertical color";
      break;
  case 
"21":
      
$resultado "Alámbrica interperie color";
      break;
  case 
"22":
      
$resultado "Alámbrica grande B/N";
      break;
  case 
"23":
      
$resultado "Alámbrica grande color";
      break;
  default:
     
$resultado "Error";
}

if (
$resultado == "Error")
  { 
  echo 
"Error";
  }
else
  {
  echo 
"El e-mail fue enviado exitosamente a $email y el artículo fue: $resultado";
  }
?>
Aparte que la lógica te queda muy corta, es más fácil de darle seguimiento.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 19/01/2004, 23:29
Avatar de MateoVasco  
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 14 años, 4 meses
Puntos: 0
Muchas gracias!!!!!!!!!!!!!!!!!!!

Pero lo del php.ini no me funciona. Le coloco el servidor SMTP y me muestra ese mensaje. No hay que colorcarle contraseña ni nada???
  #5 (permalink)  
Antiguo 19/01/2004, 23:39
Avatar de BrujoNic
Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.804
Antigüedad: 16 años
Puntos: 609
¿Qué tenes en la línea 151 de procesador.php?
talvés el problema era que tenías muchos }.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #6 (permalink)  
Antiguo 20/01/2004, 00:16
Avatar de MateoVasco  
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 14 años, 4 meses
Puntos: 0
No... el problema no es eso, porque lo subo a mi hosting y me envia el correo correctamente, el problema es de la configuración del servidor o del php...

Estuve averiguando, y aparte del servidor SMTP, el archivo php.ini también solicita un directorio pero no sé cómo encontrarlo...

Gracias!!!
  #7 (permalink)  
Antiguo 20/01/2004, 03:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Lo de tus if: el operador = es el de asignacion, asi que en tus ifs lo que estas haciendo es asignar la cadena a la variable. El operador de comparacion es el ==.

Y yo en lugar de if o switch, en este caso usaria un simple array:
Código PHP:
$resultados=array("01"=>"FuelMAX","02"=>"Super FuelMAX");  // asi con todos
$resultado=(isset($resultados[$articulo]))?$resultados[$articulo]:'Error'
En caso de añadir un articulo, solo tienes que añadirlo al array (incluso podrias cargar el array desde un fichero de texto). Es mas, si pones ese array en un fichero aparte, lo puedes usar tambien para crear el select del formulario.

Y sobre el otro error, no se a lo que te refieres con que 'solicita un directorio'. Supongo que quizas te refieres al del sendmail. Si es asi, y tu servidor es windows, olvidate, no te hace falta. El sendmail es el que envia los emails en sistemas *nix. Lo que puede ser es que estes especificando mal es servidor SMTP, o que este requiera autentificacion (doy por hecho que hay un servidor SMTP).

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 20/01/2004, 23:18
Avatar de MateoVasco  
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 14 años, 4 meses
Puntos: 0
bueno... pero configuro el servidor SMTP y el correo del cual se envia, y me sigue apareciendo el mismo error, incluso con diferentes servidores.
  #9 (permalink)  
Antiguo 21/01/2004, 08:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, si esos servidores SMTP requieren autentificacion (identificarse con usuario y contraseña), en ese caso no puedes usarlos con PHP.

Prueba a instalar un servidor SMTP local, como alguno de los que pone en http://www.maestrosdelweb.com/editorial/phpmysqlap/#7 .

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 21/01/2004, 15:43
Avatar de MateoVasco  
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 14 años, 4 meses
Puntos: 0
Muchas gracias!!! Ya instalé el servidor. Me funciona a la perfección.

Gracias!!!
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 13:24.