Foros del Web » Programando para Internet » PHP »

Enviar datos de pedido por e-mail

Estas en el tema de Enviar datos de pedido por e-mail en el foro de PHP en Foros del Web. Hola Todos !!! Estoy con un tema el cual, luego de leerme todo y probar todo no logro resolver. Tengo que enviar un pedido por ...
  #1 (permalink)  
Antiguo 31/01/2009, 10:24
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 1
Enviar datos de pedido por e-mail

Hola Todos !!!

Estoy con un tema el cual, luego de leerme todo y probar todo no logro resolver.

Tengo que enviar un pedido por e-mail, donde los datos de los productos varian. Para ello he desarrollado un formulario, el cual muestra los datos traidos por una consulta. También he hecho que los campos del formulario cambien de nombre usando para esto una matriz.

Todo bien hasta ahí, el tema es que cuando hago el submit solo me llega por e-mail el último producto de la consulta.

Sería genial me ayuden con esto.

Acá les va parte del código:


....

</tr>
<?php for($i=0;$i<=$totalRows_rspedidosd;$i++) { ?>
<?php do { ?>
<tr>
<td><input name="CodProd<?php echo $i ?>" type="text" id="CodProd" value="<?php echo $row_rspedidosd['CodProd']; ?>" /></td>
<td><input name="NombreProducto<?php echo $i ?>" type="text" id="NombreProducto" value="<?php echo $row_rspedidosd['NombreProducto']; ?>" size="80" maxlength="80" /></td>
<td><input name="PrecioUnidad<?php echo $i ?>" type="text" id="PrecioUnidad" value="<?php echo $row_rspedidosd['PrecioUnidad']; ?>" size="10" /></td>
<td><input name="Cantidad<?php echo $i ?>" type="text" id="cantidad" value="<?php echo $row_rspedidosd['Cantidad']; ?>" size="10" /></td>
<td><input name="Subtotal<?php echo $i ?>" type="text" id="subtotal" value="<?php echo $row_rspedidosd['Subtotal']; ?>" size="10" /></td>
<td><input name="Descuento<?php echo $i ?>" type="text" id="Descuento" value="<?php echo $row_rspedidosd['Descuento']; ?>" size="10" /></td>
</tr>
<?php } while ($row_rspedidosd = mysql_fetch_assoc($rspedidosd)); ?>
<?php } ?>
</table>

......


:: Archivo de envío de la info por e-mail ::

<?php
$msg = "Datos del Pedido Realizado\n\n";


$field_name = array_keys($HTTP_POST_VARS); // guardamos todos los nombres de los "fields" existentes en el formulario
$value_name = array_values($HTTP_POST_VARS);// guardamos todos los valores en sus respectivas variables
for ($i=0;$i<count($field_name);$i++)
{
$msg .= "".$field_name[$i].": ".$value_name[$i]."\n\n"; // $msg reune el nombre de la variable y su valor
}
$recipient = "[email protected]"; // el mail deseado
$recipient2 = "[email protected]";
$subject = "Datos del Pedido Realizado"; // el titulo del mail
$mailheaders = "From: Dominio <http://xxxxxxxxxxx> \n"; // quien lo manda y el dominio
$mailheaders .= "Reply-To: ".$mail."\n\n"; // responder a: Importante! si quieres que el replay:to funcione tienes
//que tener en el formulario un field que tiene como nombre "mail".
mail($recipient, $subject, $msg, $mailheaders);// mandamos el mail con los todos los datos
mail($recipient2, $subject, $msg, $mailheaders);
header('location:terminar.php'); // y vamos a la pagina en donde nos dan las gracias por haber llenado en formulario
?>

Muchísimas Gracias !!!

  #2 (permalink)  
Antiguo 31/01/2009, 16:05
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Enviar datos de pedido por e-mail

usa $_POST antes que $HTTP_POST_VARS

y antes de generar tantos campos con diferrentes nombre utiliza corchetes

<td><input name="CodProd[]" type="text" id="CodProd" value="<?php echo $row_rspedidosd['CodProd']; ?>" /></td>
<td><input name="NombreProducto[]" type="text" id="NombreProducto" value="<?php echo $row_rspedidosd['NombreProducto']........



asi luego obtienes en post

$_POST['CodProd'][0]=el primer codigo de producto
$_POST['CodProd'][1]=el segundo codigo de producto
$_POST['CodProd'][2]=el tercero codigo de producto
....


$_POST['NombreProducto'][0]=el primero codigo de producto
....


asi es mas facil de manejarlos
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 01/02/2009, 05:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 1
De acuerdo Respuesta: Enviar datos de pedido por e-mail

Ante todo muchas gracias por responder.

Te comento que he hecho los cambios que me has sugerido y no obtengo los resultados deseados.

Reemplazo

$field_name = array_keys($HTTP_POST_VARS);
$value_name = array_values($HTTP_POST_VARS);

Por

$field_name = array_keys($POST);
$value_name = array_values($POST);

Y ahora el mail solo me trae el primer producto, cosa que antes me traía el último.
Creo que tal vez no me funcione debido a que el cambio de nombre de campos no está funcionando bien, ya que me asigna a todos los campos con info el mismo nombre:

....

<tr>
<td><input name="CodProd0" type="text" id="CodProd" value="9087" /></td>
<td><input name="NombreProducto0" type="text" id="NombreProducto" value="Aro base de pvc para inodoro" size="80" maxlength="80" /></td>
<td><input name="PrecioUnidad0" type="text" id="PrecioUnidad" value="2.78" size="10" /></td>
<td><input name="Cantidad0" type="text" id="cantidad" value="1" size="10" /></td>
<td><input name="Subtotal0" type="text" id="subtotal" value="2.78" size="10" /></td>
<td><input name="Descuento0" type="text" id="Descuento" value="37" size="10" /></td>
</tr>

<tr>
<td><input name="CodProd0" type="text" id="CodProd" value="9087" /></td>
<td><input name="NombreProducto0" type="text" id="NombreProducto" value="Aro base de pvc para inodoro" size="80" maxlength="80" /></td>
<td><input name="PrecioUnidad0" type="text" id="PrecioUnidad" value="3.62" size="10" /></td>
<td><input name="Cantidad0" type="text" id="cantidad" value="1" size="10" /></td>
<td><input name="Subtotal0" type="text" id="subtotal" value="3.62" size="10" /></td>
<td><input name="Descuento0" type="text" id="Descuento" value="37" size="10" /></td>
</tr>

.....

Luego intenté con el otro cambio sugerido y tampoco logré los resultados deseados, ya que el resultado obtenido era siempre el mismo nombre de campo, solo que ahora con []

......

<td><input name="CodProd[]" type="text" id="CodProd" value="<?php echo $row_rspedidosd['CodProd']; ?>" /></td>
<td><input name="NombreProducto[]" type="text" id="NombreProducto" value="<?php echo $row_rspedidosd['NombreProducto']

......


Qués estoy haciendo mal?

Muchas gracias.
  #4 (permalink)  
Antiguo 01/02/2009, 06:28
 
Fecha de Ingreso: octubre-2008
Mensajes: 180
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Enviar datos de pedido por e-mail

Yo tengo un problema bastante parecido.
Tengo una carrito de la compra, donde se va generando mediante echos y la información traido por un array una tabla con los podructos que se han ido seleccionando.
He intentado crear un pequeño formulario que nos envia un mail, con los datos que ha rellendao la persona y los items que ha seleccionado.
El problema es el mismo que el del compañero que ha iniciado el post;
que al definir la variable que contiene los array, en el mail que me llega solo se ve el último item seleciconado, osea, el útimo array.

Como se puede arreglar esto, o de que forma se hace correctamente??
Gracias
  #5 (permalink)  
Antiguo 04/02/2009, 13:04
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Enviar datos de pedido por e-mail

He intentado haciendo la modificación de la numeración de los campos del formulario y funciona, pero me sigue mostrando en todos los casos un solo producto y no todos los que debería, es más repite el producto como tantas cantidad de veces cantidad de productos en la consulta hay.

Alguien tendría la amabilidad de ayudarme en esto?

Muchas Gracias.

Aquí va una parte del código:

<td bgcolor="#1C4176" class="style24"><div align="center">Codigo Producto</div></td>
<td bgcolor="#1C4176" class="style24"><div align="center">NombreProducto</div></td>
<td bgcolor="#1C4176" class="style24"><div align="center">Precio</div></td>
<td bgcolor="#1C4176" class="style24"><div align="center">Cantidad</div></td>
<td bgcolor="#1C4176" class="style24"><div align="center">Subtotal</div></td>
<td bgcolor="#1C4176" class="style24"><div align="center">Descuento Gral</div></td>
</tr>
<?php do { ?>
<tr>
<input name="IdProducto[]" type="hidden" id="IdProducto" value="<?php echo $row_rspedidosd['IdProducto']; ?>" /></td>
<td><input name="CodProd[]" type="text" id="CodProd" value="<?php echo $row_rspedidosd['CodProd']; ?>" /></td>
<td><input name="NombreProducto[]" type="text" id="NombreProducto" value="<?php echo $row_rspedidosd['NombreProducto']; ?>" size="80" maxlength="80" /></td>
<td><input name="PrecioUnidad[]" type="text" id="PrecioUnidad" value="<?php echo $row_rspedidosd['PrecioUnidad']; ?>" size="10" /></td>
<td><input name="Cantidad[]" type="text" id="cantidad" value="<?php echo $row_rspedidosd['Cantidad']; ?>" size="10" /></td>
<td><input name="Subtotal[]" type="text" id="subtotal" value="<?php echo $row_rspedidosd['Subtotal']; ?>" size="10" /></td>
<td><input name="Descuento[]" type="text" id="Descuento" value="<?php echo $row_rspedidosd['Descuento']; ?>" size="10" /></td>
</tr>
<?php } while ($row_rspedidosd = mysql_fetch_assoc($rspedidosd)); ?>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Comentarios
<input name="comentarios" type="text" id="comentarios" value="<?php echo $row_rspedidos['Comentarios']; ?>" size="100" maxlength="255" />
</p>
<p align="center">
<input type="submit" name="Submit" value="Enviar" />
</p>
</form>
<?php
// Check if button name "Submit" is active, do this
if($Submit){
for($i=0;$i<$totalRows_rspedidosd;$i++){
$sql1="UPDATE pedidose SET CodProd='$CodProd[$i]', NombreProducto='$NombreProducto[$i]', PrecioUnidad='$PrecioUnidad[$i]', Cantidad= '$Cantidad[$i]', Subtotal='$Subtotal[$i]', Descuento='$Descuento[$i]' WHERE IdProducto='$IdProducto[$i]'";
$rsproductos1=mysql_query($sql1, $cn);
}
}
if($rsproductos1){
//header("location:modificarpreciosxcategoria.php");
echo "<script language='javascript'>";
echo "document.location.href = 'pedidoconfirmadomail.php'";
echo "</script>";
}
?>
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 23:48.