PHP - while me selecciona solo un registro

 
Vista:
Imágen de perfil de Envio de email con mail() php
Val: 28
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

while me selecciona solo un registro

Publicado por Envio de email con mail() php (70 intervenciones) el 29/01/2012 13:36:45
Hola que tal.

La verdad es que no tengo problema con la funcion mail(), me esta resultando bien, el caso es el siguiente,

Necesito enviar un email recordatorio a mis clientes que se aproxima la fecha para el vencimiento del servicio contratado, para ello estoy haciendo un scripts para posteriormente ejecutarlo a diario con cron.

Ya puedo enviar los mensajes correspondientes al cliente y con copia (Cc) al contacto del cliente, como así también una copia oculta (Bcc) al webmaster del sitio para un mejor control.

Para ello consulto 4 tablas mysql, servicio_cliente, cliente, servicio, y datos_contacto, primeramente hago la consulta a servicio del cliente que es donde tiene la fecha de vencimiento, y obtengo el código del servicio, pongo un while y dentro de ese while se crean varias variables para gestionar las fechas de los avisos, antes de 30, 20, 15 y 2 días, como así también días posteriores al vencimiento.

con if chequeo la fecha actual con la del vencimiento, para que se envié un correo si es necesario según las fechas, y dentro de es if hago las consultas a las otras 3 tablas, mas que nada para obtener el nombre de la empresa, el email, nombre del contacto y el correo, para enviarle a los 2 el mensaje de vencimiento, hasta aquí todo ok.

El inconveniente es que solamente envía los correos al primero de la tabla y aunque haya otros servicio que vencen en la misma fecha, no los envía, cuando es de suponer que el while debe recorreo toda la tabla, y la verdad que eso es lo que me tiene parado.

Si alguien me puede ayudar por favor se los agradeceré eternamente.

dejo el código en segundo post. (Aun no esta completo, solo el primer aviso)
__________________
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?php
        //Conectando con la Base de datos y efectuando la consulta. 
        //Seleccionando la Fecha de Incorporación (FECHA) 
        //y la fecha de renovación (RENOVAR) 
 
        require_once('../clases/conexion.class.php');
        //Creamos una consulta a la tabla de servicios del cliente 
        $sql = " SELECT
        cod_servicio, 
        rut_empresa, 
        nombre_dominio, 
        UNIX_TIMESTAMP(vencimiento) AS vencimiento, 
        cod_categoria, 
        estado 
        FROM spc_servicio_cliente ";
        $result = mysql_query($sql,Conectar::con());
 
 
        while ($row = mysql_fetch_array($result)) {
                $rut_empresa=$row['rut_empresa'];
                $cod_servicio = $row['cod_servicio'];
                //Creamos la Variable $ren asignando la fecha de vencmiento [vencimiento] 
                $ren=$row['vencimiento'];
                //echo "<h2>","Tu Fecha de vencimiento es : ",date('d/m/Y',$ren),"</h2>"; 
 
                // Quitamos 30 días a la fecha de vencimiento y lo asignamos a la variabe $ren 
                $ren1=strtotime("-30 days",$row['vencimiento']);
                //echo "<h2>","Primer aviso Faltan 30 días para el vencimiento : ",date('d/m/Y',$ren1),"</h2>"; 
 
                // Quitamos 20 días a la fecha de vencimiento y lo asignamos a la variabe $ren2 
                $ren2=strtotime("-20 days",$ren);
                //echo "<h2>","Segundo aviso Faltan 20 días para el vencimiento : ",date('d/m/Y',$ren2),"</h2>"; 
 
                 // Quitamos 10 días a la fecha de vencimiento y lo asignamos a la variabe $ren3 
                $ren3=strtotime("-10 days",$ren);
                //echo "<h2>","Tercer aviso Faltan 10 días para el vencimiento : ",date('d/m/Y',$ren3),"</h2>"; 
 
                // Quitamos 5 días a la fecha de vencimiento y lo asignamos a la variabe $ren4 
                $ren4=strtotime("-5 days",$ren);
                //echo "<h2>","Cuarto aviso Faltan 5 días para el vencimiento : ",date('d/m/Y',$ren4),"</h2>"; 
 
                // Agregamos 2 días a la fecha de vencimiento y lo asignamos a la variabe $ven1 
                $ven1=strtotime("+2 days",$ren);
                //echo "<h2>","Quinto aviso, su servicio se encuentra vencido hace 2 días : ",date('d/m/Y',$ven1),"</h2>"; 
 
                // Agregamos 4 días a la fecha de vencimiento y lo asignamos a la variabe $ven2 
                $ven2=strtotime("+4 days",$ren);
                //echo "<h2>","Sexto aviso, su servicio se encuentra vencido hace 4 días : ",date('d/m/Y',$ven2),"</h2>"; 
 
                // Agregamos 6 días a la fecha de vencimiento y lo asignamos a la variabe $ven3 
                $ven3=strtotime("+6 days",$ren);
                //echo "<h2>","Septimo aviso, su servicio se encuentra vencido hace 6 días : ",date('d/m/Y',$ven3),"</h2>"; 
 
                // Agregamos 15 días a la fecha de vencimiento y lo asignamos a la variabe $ven4 
                $ven4=strtotime("+15 days",$ren);
                //echo "<h2>","Último aviso, su servicio se encuentra vencido hace 15 días : Sera desactivado en 24 horas ",date('d/m/Y',$ven3),"</h2>"; 
 
                // Agregamos un año a la fecha de vencimiento y lo asignamos a la variable $year 
                $year=strtotime("+1 years", $ren);
                //echo "<h2>","Su nueva fecha de vencimiento es :  ",date('d/m/Y',$year),"</h2>"; 
 
 
                if (date("d/m/Y") == date("d/m/Y",$ren1)){
 
                        //Creamos una consulta a la tabla de los clientes 
                        //para obtener el nombre de la empresa y el email 
                        $sql = " SELECT
                        empresa, 
                        rut_empresa, 
                        email 
                        FROM spc_clientes 
                        WHERE rut_empresa = '$rut_empresa' ";
                        $result = mysql_query($sql,Conectar::con());
                        $clie = mysql_fetch_array($result);
                        $empresa = $clie['empresa'];
                        $email_empresa = $clie['email'];
 
                        //Creamos una consulta a la tabla de servicios 
                        $sql = " SELECT
                        cod_servicio, 
                        servicio, 
                        cod_categoria 
                        FROM spc_servicios 
                        WHERE cod_servicio = '$cod_servicio' ";
                        $result = mysql_query($sql,Conectar::con());
                        $serv = mysql_fetch_array($result);
                        $servicio = $serv['servicio'];
 
                        //Creamos una consulta a la tabla de contactos de los clientes 
                        $sql = " SELECT
                        rut_empresa, 
                        nombre, 
                        email 
                        FROM spc_datos_contacto 
                        WHERE rut_empresa = '$rut_empresa' ";
                        $result = mysql_query($sql,Conectar::con());
                        $contac = mysql_fetch_array($result);
                        $nombre_contacto = $contac['nombre'];
                        $correo_contacto = $contac['email'];
 
                        //echo "<h2>","Primer Aviso de Vencimiento de su Servicio","</h2>"; 
                        $destinatario = "$email_empresa" ;
                        $asunto = "Primer Aviso de Vencimiento de su Servicio '$servicio' ";
                        $cuerpo = '
                                <html> 
                                        <head> 
                                                <title>Primer Aviso de Vencimiento</title> 
                                        </head> 
                                        <body> 
                                                <h1>Estimados(as) '.$empresa.'</h1>
                                                <p> 
                                                        <h2> 
                                                                Su Servicio '.$servicio.' Vence en 30 días.
                                                        </h2> 
                                                        Este es un primer aviso, para que tome las providencias del caso. 
                                                        <br /> 
                                                        En 10 días mas le enviaremos un nuevo recordatorio 
                                                        <br /<<br /> 
                                                        Puede ver la información en nuestro sitio web 
                                                        http://www.servpcweb.com, éntre en la zona para clientes con su 
                                                        Rut y Password, y tendrá mas información sobre sus servicios 
                                                        Contratados y las fechas de vencimiento. 
                                                        <br /><br /> 
                                                        Un Cordial Saludo<br /> 
                                                        Gracias por su preferencia. 
                                                </p> 
                                        </body> 
                                </html> 
                        ';
                        $cuerpo = wordwrap($cuerpo, 70);
                        //para el envío en formato HTML 
                        $headers = "MIME-Version: 1.0"."\r\n";
                        $headers .= "Content-type: text/html; charset=iso-UTF-8"."\r\n";
 
                        //dirección del remitente 
                        $headers .= "From: ServpcWeb <correo@sdominio.com>"."\r\n";
 
                        //dirección de respuesta, si queremos que sea distinta que la del remitente 
                        $headers .= "Reply-To: correo@dominio.com"."\r\n";
 
                        //ruta del mensaje desde origen a destino 
                        $headers .= "Return-path: correo@dominio.com"."\r\n";
 
                        //direcciones que recibián copia 
                        $headers .= "Cc: $correo_contacto "."\r\n";
 
                        //direcciones que recibirán copia oculta 
                        $headers .= "Bcc: correo@dominio.com"."\r\n";
 
                        mail($destinatario,$asunto,$cuerpo,$headers);
 
 
                }elseif (date("d/m/Y") == date("d/m/Y",$ren2)){
                        echo "<h2>","Segundo aviso Faltan 20 días para el vencimiento : ",date('d/m/Y',$ren2),"</h2>";
                 }elseif (date("d/m/Y") == date("d/m/Y",$ren3)){
                        echo "<h2>","Tercer aviso Faltan 10 días para el vencimiento : ",date('d/m/Y',$ren3),"</h2>";
                 } elseif (date("d/m/Y") == date("d/m/Y",$ren4)){
                        echo "<h2>","Cuarto aviso Faltan 5 días para el vencimiento : ",date('d/m/Y',$ren4),"</h2>";
                 } elseif (date("d/m/Y") == date("d/m/Y",$ven1)){
                        echo "<h2>","Quinto aviso, su servicio se encuentra vencido hace 2 días : ",date('d/m/Y',$ven1),"</h2>";
                 } elseif (date("d/m/Y") == date("d/m/Y",$ven2)){
                        echo "<h2>","Sexto aviso, su servicio se encuentra vencido hace 4 días : ",date('d/m/Y',$ven2),"</h2>";
                 } elseif (date("d/m/Y") == date("d/m/Y",$ven3)){
                        echo "<h2>","Septimo aviso, su servicio se encuentra vencido hace 6 días : ",date('d/m/Y',$ven3),"</h2>";
                 }
        }
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder