PHP - Correo con errores de programación en php

 
Vista:
Imágen de perfil de Orlando
Val: 103
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Correo con errores de programación en php

Publicado por Orlando (73 intervenciones) el 25/08/2016 06:16:36
Muy buenas noches señores del foro y muchas gracias de antemano.

Resulta que tengo el siguiente problema:

Tengo un formulario que envía unos datos a un programa en .php y los guarda, una vez que los guarda quiero

enviarlo a un correo y lo hace efectivamente, ahora bien

el mensaje que envío es de 10 productos que solicito un cliente, y en vez de enviar un correo con los 10

productos me envía 10 correos por productos.

Como puedo hacer para que me envíe un solo correo con los diez productos?

Anexo el programa que guarda los datos en php y a su vez envía al correo.

Gracias nuevamente.

Orlando.


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
<?php
 
	include("conexion.php");
	$fecha_actual = date("Y-m-d");
	$nombre = $_POST['nombre'];
	$empresa = $_POST['empresa'];
	$email = $_POST['email'];
	$comentario = $_POST['adicionesysugerencias'];
	$producto = $_POST['chk'];
	$cantidad = $_POST['cantidad'];
	$unidad = $_POST['unidad'];
	$observacion = $_POST['obs'];
 
	for($i = 0; $i<sizeof($producto); $i++)
	{
 
	if ($unidad[$i] == 'lb') {
		$unidad[$i] = 'kg';
		$cantidad[$i] = $cantidad[$i] * .454;
 
	}
 
	if ($unidad[$i] == 'grs') {
		$unidad[$i] = 'kg';
		$cantidad[$i] = $cantidad[$i] * .001;
 
	}
	       	$query="INSERT INTO pedidos(fecha_actual, nombre, empresa, email, producto, cantidad, unidad, observacion, adicionesysugerencias)
		VALUE ('$fecha_actual','$nombre','$empresa','$email','".$producto[$i]."','".$cantidad[$i]."','".$unidad[$i]."','".$observacion[$i]."','$comentario')";
 
		$resultado=$conexion->query($query);
 
		$prod = $producto[$i];
		$cant = $cantidad[$i];
		$uni = $unidad[$i];
 
 
/// Envio de pedido al correo ////
 
	//Contenido del mensaje//
 
	$titulo = "Solicitud de pedidos online";
	$contenido = '<html>
					<head>
						<title>' . $titulo . '</title>
					</head>
					<body>
						<h1>Haz recibido un nuevo pedido</h1>
						<p>Fecha del pedido: <strong>' . $fecha_actual . '</strong></p>
						<p>Nombre del solicitante: <strong>' . $nombre . '</strong></p>
						<p>Nombre de la Empresa: <strong>' . $empresa . '</strong></p>
						<p>Email: <strong>' . $email . ' </strong></p>
						<p>Producto: <strong>'. $prod .' ' . $cant . ' '. $uni .'</strong></p>
						<hr>
						<p>Este mensaje ha sido generado automaticamente desde...</p>
					</body>
				</html>';
 
	$encabezado .= "MINE-Version: 1.0\r\n";
	$encabezado .= "Content-type: text/html; charset-UTF-8\r\n";
 
	$envio = mail($email,$titulo,$contenido,$encabezado);
 
	if ($envio == true) {
		echo "El mensaje se ha enviado correctamente";
	}else{
		echo "Se ha presentado un error en el envío del email";
	}
 
	}
 
?>
<?php
?>
<!DOCTYPE html>
<html lang="es">
<meta charset="UTF-8">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<title>Guarda Pedido</title>
	<link rel="stylesheet" type="text/css" href="-------------------">
</head>
<body>
	<div class="ventana">
		<center>
		<div class="estilo_caja3">
			<?php
				if($resultado>0){
			?>
			<form name='datos' action='-' method='post'>
				<h5>Su pedido ya fue recibido</h5>
				<button type="submit">Click para finalizar</button>
				</form>
			<?php }else{
			?>
			<p></p>
			<form name='datos' action='-------' method='post'>
				<h5>Error al solicitar pedido...!</h5>
				<button type="submit">Regresar a la solicitud</button>
			</form>
			<?php
			}
			?>
		</center>
	</div>
</body>
</html>
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
sin imagen de perfil

Correo con errores de programación en php

Publicado por DAVID (129 intervenciones) el 25/08/2016 08:53:15
Hola
debes sacar este trozo de código del bucle:
1
2
3
4
5
6
7
$envio = mail($email,$titulo,$contenido,$encabezado);
 
	if ($envio == true) {
		echo "El mensaje se ha enviado correctamente";
	}else{
		echo "Se ha presentado un error en el envío del email";
	}
es decir, ponlo debajo del } que esta en la linea 70

Un saludo,
David
diseno grafico madrid
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de orlando
Val: 103
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Correo con errores de programación en php

Publicado por orlando (73 intervenciones) el 25/08/2016 16:09:26
Muchas gracias David. Lo pruebo y te aviso. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Orlando
Val: 103
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Correo con errores de programación en php

Publicado por Orlando (73 intervenciones) el 26/08/2016 02:31:33
Hola David.

Saque el bloque y de cinco registro me envía solo el ultimo... :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Correo con errores de programación en php

Publicado por DAVID (129 intervenciones) el 26/08/2016 08:20:41
Entonces, eso es, porque la cadena, donde estas poniendo el texto del producto, no la incrementas, sino que la machacas. Y por eso solo sale el ultimo. Lo que tendras que hacer, es que despues de insertar el registro en BBDD, crea una cadena para almacenar los productos, del tipo:
1
$cadena_final.=	'<p>Producto: <strong>'. $prod .' ' . $cant . ' '. $uni .'</strong></p>';
antes del bucle pon:
1
$cadena_final="";

Y cuando crees el html, metes $cadena_final. Y asi te saldran todos los productos.

Un saludo
David
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Orlando
Val: 103
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Correo con errores de programación en php

Publicado por Orlando (73 intervenciones) el 27/08/2016 21:34:53
Hola David buenas tardes.

Hice tal cual lo que me dijiste:

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
<?php
 
	include("conexion.php");
	$fecha_actual = date("Y-m-d");
	$nombre = $_POST['nombre'];
	$empresa = $_POST['empresa'];
	$email = $_POST['email'];
	$comentario = $_POST['adicionesysugerencias'];
	$producto = $_POST['chk'];
	$cantidad = $_POST['cantidad'];
	$unidad = $_POST['unidad'];
	$observacion = $_POST['obs'];
 
	$cadena_final="";
 
	for($i = 0; $i<sizeof($producto); $i++)
	{
 
	if ($unidad[$i] == 'lb') {
		$unidad[$i] = 'kg';
		$cantidad[$i] = $cantidad[$i] * .454;
 
	}
 
	if ($unidad[$i] == 'grs') {
		$unidad[$i] = 'kg';
		$cantidad[$i] = $cantidad[$i] * .001;
 
	}
 
	       	$query="INSERT INTO pedidos(fecha_actual, nombre, empresa, email, producto, cantidad, unidad, observacion, adicionesysugerencias)
		VALUE ('$fecha_actual','$nombre','$empresa','$email','".$producto[$i]."','".$cantidad[$i]."','".$unidad[$i]."','".$observacion[$i]."','$comentario')";
 
		$resultado=$conexion->query($query);
 
 
 
		$prod = $producto[$i];
		$cant = $cantidad[$i];
		$uni = $unidad[$i];
 
		$cadena_final.=	'<p>Producto: <strong>'. $prod .' ' . $cant . ' '. $uni .'</strong></p>';
 
	}
 
 
 
/// Envio de pedido al correo ////
 
	//Contenido del mensaje//
 
	$titulo = "Solicitud de pedidos online";
	$contenido = '<html>
					<head>
						<title>' . $titulo . '</title>
					</head>
					<body>
						<h1>Haz recibido un nuevo pedido</h1>
						<p>Fecha del pedido: <strong>' . $fecha_actual . '</strong></p>
						<p>Nombre del solicitante: <strong>' . $nombre . '</strong></p>
						<p>Nombre de la Empresa: <strong>' . $empresa . '</strong></p>
						<p>Email: <strong>' . $email . ' </strong></p>
						<hr>
						<p>Este mensaje ha sido generado automaticamente desde...</p>
					</body>
				</html>';
 
	$encabezado .= "MINE-Version: 1.0\r\n";
	$encabezado .= "Content-type: text/html; charset-UTF-8\r\n";
 
	$envio = mail($email,$titulo,$contenido,$encabezado,$cadena_final);
 
 
?>
<!DOCTYPE html>
<html lang="es">
<meta charset="UTF-8">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<title>Guarda Pedido</title>
	<link rel="stylesheet" type="text/css" href="aaaaaaaa">
</head>
<body>
	<div class="ventana">
		<center>
		<div class="estilo_caja3">
			<?php
				if($resultado>0){
			?>
			<form name='datos' action="xxxxxx' method='post'>
				<h5>Su pedido ya fue recibido</h5>
				<button type="submit">Click para finalizar</button>
				</form>
			<?php }else{
			?>
			<p></p>
			<form name='datos' <form name='datos' action='
xxxx.php method='post'>
				<h5>Error al solicitar pedido...!</h5>
				<button type="submit">Regresar a la solicitud</button>
			</form>
			<?php
			}
			?>
		</center>
	</div>
</body>
</html>


Este es el error en el correo:

A message that you sent contained a recipient address that was incorrectly
constructed:

<p>Producto: malformed address: Producto: may not follow <p>

The message has not been delivered to any recipients.

------ This is a copy of your message, including all the headers. ------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Correo con errores de programación en php

Publicado por xve (6935 intervenciones) el 28/08/2016 08:21:04
Fijate que tienes un lio de comillas simples y dobles... si abres con comillas simple, tienes que cerrar con comillas simple!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar