Foros del Web » Programando para Internet » PHP »

Undefined offset:

Estas en el tema de Undefined offset: en el foro de PHP en Foros del Web. Ayuda por favor!!! tengo el siguiente Scrip que envía correos, pero no se cual sea el error.. Undefined offset: 1 in C:\wamp\www\SIEC_MAIL\gmx.php on line 82 ...
  #1 (permalink)  
Antiguo 24/11/2014, 14:17
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 11 años
Puntos: 1
Undefined offset:

Ayuda por favor!!! tengo el siguiente Scrip que envía correos, pero no se cual sea el error..

Undefined offset: 1 in C:\wamp\www\SIEC_MAIL\gmx.php on line 82

en este while es donde me marca el error:

Código PHP:
 while(isset($direcciones[$pos])){
        
$correo $direcciones[$pos];
        
$pos++;
        
$nom $direcciones[$pos];
        echo 
"Nombre".$nom;
        
$mail->addAddress($correo$nom);
        
$mail->AddCC($correo$nom);
        
//echo "Mail: ".$correo." Nombre: ".$nom."<br>";
        
$pos++;
    } 
Todo esto es mi scrip:

Código PHP:
Ver original
  1. <?php
  2.     if(isset($_GET["id_mail"])){
  3.         $id_mail_send = $_GET["id_mail"];
  4.     }
  5.     else{
  6. ?>
  7.     <script language="JavaScript" type="text/javascript">
  8.     var pagina="gmx_index.php"
  9.     function redireccionar()
  10.     {
  11.     location.href=pagina
  12.     }
  13.     setTimeout ("redireccionar()", 10000);
  14.     </script>
  15. <?php
  16.              
  17.    
  18.     }
  19.     include("conexion2.php");
  20.     include("funciones.php");
  21.     $con=conexion();
  22.     $sql_dir="SELECT * FROM dbo.BITACORA_ALERTAS_MAIL_SQL where status=1 and id_mail =".$id_mail_send;
  23.     $res_dir=sqlsrv_query($con,$sql_dir);
  24.     if($res_dir['status']==3){          
  25. ?>
  26.     <script language="JavaScript" type="text/javascript">
  27.     location.href=pagina
  28.     </script>
  29. <?php
  30.      
  31.     }
  32.    
  33.     $v_id_eci = "";
  34.     $sql2="update dbo.BITACORA_ALERTAS_MAIL_SQL set status=2 where id_mail=".$id_mail_send;    
  35.    
  36.     $f_dir=sqlsrv_fetch_array($res_dir);
  37.     if(!isset($f_dir['status'])){
  38.        ?>
  39.     <script language="JavaScript" type="text/javascript">
  40.     location.href=pagina
  41.     </script>
  42. <?php
  43.    
  44.     }
  45.     $estatus = $f_dir['status'];
  46.     $direcciones = explode(",",$f_dir["recipients"]);
  47.     echo $direcciones;
  48.     $asunto =htmlspecialchars( $f_dir["subject"]);
  49.     $mensaje = $f_dir["body"];
  50.  
  51.     /*                          variables para mail                         */
  52.    
  53.     require("phpmailer/class.phpmailer.php"); //Importamos la función PHP class.phpmailer
  54.  
  55. $mail = new PHPMailer();
  56. //Luego tenemos que iniciar la validación por SMTP:
  57. $mail->IsSMTP();
  58. $mail->SMTPAuth = true; // True para que verifique autentificación de la cuenta o de lo contrario False
  59. $mail->Username = "[email protected]"; // Cuenta de e-mail
  60. $mail->Password = "pass"; // Password
  61.  
  62. $mail->Host = "smtp.gmx.com";
  63. $mail->Port = 25;
  64. $mail->From = "[email protected]";
  65. $mail->FromName = "Alertas SIEC";
  66. $mail->Subject = $asunto;
  67.  
  68.     $pos=0;
  69.     $nom = "";
  70.     $correo="";
  71.    
  72.     $pos=0;
  73.     $nom = "";
  74.     $correo="";
  75.    
  76.     while(isset($direcciones[$pos])){
  77.         $correo = $direcciones[$pos];
  78.         $pos++;
  79.         $nom = $direcciones[$pos];
  80.         echo "Nombre".$nom;
  81.         $mail->addAddress($correo, $nom);
  82.         $mail->AddCC($correo, $nom);
  83.         //echo "Mail: ".$correo." Nombre: ".$nom."<br>";
  84.         $pos++;
  85.     }
  86.  
  87.  
  88. //$body  = "Hola, este es un…";
  89. //$body .= "<font color='red'> mensaje de prueba</font>";
  90.  $mail->MsgHTML($mensaje);
  91.  //$mail->MsgHTML($mensaje);
  92. //$mail->Send();
  93. // Notificamos al usuario del estado del mensaje
  94. if($mail->Send())
  95. {
  96.  echo "En hora buena el mensaje ha sido enviado con exito a ";
  97.         $sql2="update dbo.BITACORA_ALERTAS_MAIL_SQL set status=3 where id_mail=".$id_mail_send;
  98.         $res2=sqlsrv_query($con,$sql2);
  99.         $sql3="update dbo.BITACORA_ALERTAS_MAIL_SQL set hora_env='".hora()."', fecha_env='".fecha()."' where id_mail=".$id_mail_send;
  100.         $res3=sqlsrv_query($con,$sql3);
  101.         ?>
  102.     <script language="JavaScript" type="text/javascript">
  103.     location.href=pagina
  104.     </script>
  105. <?php
  106.        
  107. }
  108. else
  109. {
  110. if($estatus==1){
  111.             $sql2="update dbo.BITACORA_ALERTAS_MAIL_SQL set status = 4 where id_mail=".$id_mail_send;
  112.             $res2=sqlsrv_query($con,$sql2);
  113.         }
  114.        
  115.     }
  116. ?>
ayuda por favor!!
  #2 (permalink)  
Antiguo 24/11/2014, 14:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Undefined offset:

¿Por qué incrementas el índice antes de usarlo si ya tienes un índice que es correcto con isset()?

Vamos que a simple vista es evidente el error, tú has programado el error así:
Código PHP:
Ver original
  1. // MAL
  2.         $correo = $direcciones[$pos]; // supongamos que $pos aquí vale = 1
  3.         $pos++; // ¿para qué incrementar $pos aquí?
  4.         $nom = $direcciones[$pos];  // ahora $pos vale = 2 ¿eso es correcto? ¿en la misma vuelta del while()?
  5.  
  6. // BIEN
  7.         $correo = $direcciones[$pos];
  8. // ¿para qué incrementas aquí $post si mas adelante lo haces también?
  9. //        $pos++;
  10.         $nom = $direcciones[$pos];

No programes instrucciones que estás de sobra, pon atención en eso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/11/2014, 14:27
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 11 años
Puntos: 1
Respuesta: Undefined offset:

Si muchas gracias por la observación, pero ahora tengo otro problema, me sale que tengo bucle de redireccionamiento, había leído que no pusiera headers por que eso es lo que ocasiona. Que me recomendarías poner en ves de headers?
  #4 (permalink)  
Antiguo 24/11/2014, 15:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Undefined offset:

Primero deberías entender lo que es un "loop de redireccionamiento" ¿no te parece?

Es decir, no importa si usas header() u otra cosa para hacer la dirección, si redireccionas hacia el mismo lugar siempre tendrás el mismo problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/11/2014, 18:10
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 11 años
Puntos: 1
Respuesta: Undefined offset:

Muchas gracias, pero si no es mucha la molestia me ayudarías a entenderlo? Por favor!
  #6 (permalink)  
Antiguo 24/11/2014, 18:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Undefined offset:

A ver, estás un un script que se llama "a.php", y si ahí mismo haces header("Location: a.php") ¿hacia dónde crees que haga la redirección?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 24/11/2014, 18:38
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 11 años
Puntos: 1
Respuesta: Undefined offset:

La haría a donde mismo "a.php".. Ya veo, entonces el bucle se origina porque hago el redireccionamiento a la misma página..

Etiquetas: fecha, html, select, sql, undefined, variable
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:25.