Foros del Web » Programando para Internet » PHP »

medio desesperado

Estas en el tema de medio desesperado en el foro de PHP en Foros del Web. Hola ,esta preunta ya la puse en un tema iniciado, pero como no es 100% igual a mi problema inicio un nuevo tema ..... Tengo ...
  #1 (permalink)  
Antiguo 26/04/2004, 11:28
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 10 meses
Puntos: 0
Exclamación medio desesperado

Hola ,esta preunta ya la puse en un tema iniciado, pero como no es 100% igual a mi problema inicio un nuevo tema .....

Tengo una pagina de pedidos la cual me pinta un formulario y dentro de este cada uno de los productos seleccionados obtenidos de una BD, el problema viene a la hora de enviar este formulario por que los campos hiden de cada producto :
( Cantidad, Producto y Precio) tienen el mismo nombre, entonces cuando recojo los datos para enviar solo me envia el primero.

este es el codigo que uso para procesar el formulario y enviarlo:

<?php
$to = '[email protected]';
$subject = 'Lista de Pedidos';
$msg = array($Nombre, $Correo, $Comentarios, $Cantidad, $Producto, $Precio, $Total);
$Nombre = 'Nombre';
$Correo = 'Correo';
$Comentarios = 'Comentarios';
$Cantidad = 'message';
$Producto = 'message';
$Precio = 'message';
$Total = 'message';

$mailheaders = "$REMOTE_ADDR\n";

mail($to, $subject, join("\n", $msg), $mailheaders);

?>

espero que me puedan ayudar....

Muchas gracias.
  #2 (permalink)  
Antiguo 26/04/2004, 11:50
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 23 años, 3 meses
Puntos: 9
no se, pero creo que el $msg está la cuestión, lo mejor será hacer un mensaje un poco mejor, checa:¨
Código PHP:
<?php
$msg 
"Nombre: ".$Nombre."\n";
$msg.= "Correo: ".$Correo."\n";
$msg.= "Comentarios: ".$Comentarios."\n"
...
// Y así seguidamente, para que cuando esté tu email sea:
..
mail($to$subject$msg$mailheaders); ?>
  #3 (permalink)  
Antiguo 26/04/2004, 12:26
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 10 meses
Puntos: 0
continua haciendo lo mismo

Hola gracias por contestar,

de esta manera el mail llega mas ordenado, pero el problema real no se como resolverlo solamente me llega un solo campo del formulario al llamarse todos los campos hide iguales, solamente me envia los primeros tres (producto , cantidad y precio.... el problema es cuando tengo esto dentro del form:

producto | cantidad | precio
producto | cantidad | precio
producto | cantidad | precio

alguna idea de como solventar esto..?

igualmente gracias...
  #4 (permalink)  
Antiguo 26/04/2004, 14:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Podrías poner el formulario que usas y describir en que campo o campos usas esas variables?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 26/04/2004, 17:05
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 10 meses
Puntos: 0
aqui va el form..

Hola.... aqui esta el form que estoy usando:

<form action="formmail.php" method="get" enctype="application/x-www-form-urlencoded" name="frmCart" target="muestra">
<table width="100%" height="272" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td height="19" colspan="2" bgcolor="#006699">
<font face="verdana" size="1" color="white">
&nbsp;<strong>&nbsp;Cantidad</strong>
</font>
</td>
<td width="346" bgcolor="#006699">
<font face="verdana" size="1" color="white">
<b>Producto</b></font>
</td>
<td width="264" bgcolor="#006699">
<font face="verdana" size="1" color="white">
<b>Precio</b>
</font>
</td>
<td width="152" bgcolor="#006699">
<font face="verdana" size="1" color="white">
<b>Remover ?</b>
</font>
</td>
</tr>
<?php
while($row = mysql_fetch_array($result)){
// Increment the total cost of all items
$totalCost += ($row["qty"] * $row["pvp"]);
?>
<tr>
<td height="24" colspan="2" bgcolor="#FFFFFF">
<font face="verdana" size="1" color="black">
<font color="#FFFFFF">.</font>
<select name="<?php echo $row["itemId"]; ?>&familia=<? echo $_GET['familia'];?>&subfamilia=<? echo $_GET['subfamilia'];?>" onChange="UpdateQty(this)">
<?php

for($i = 1; $i <= 20; $i++)
{
echo "<option ";
if($row["qty"] == $i)
{
echo " SELECTED ";
}
echo ">" . $i . "</option>";
}
?>
</select>
<input name="Cantidad" type="hidden" id="<?php echo $row["itemId"]; ?>" value="<?php echo $row["qty"]; ?>">
</font> </td>
<td bgcolor="#FFFFFF">
<font face="verdana" size="1" color="#003366">
<?php echo $row["articulo"]; ?>
<input name="Producto" type="hidden" id="<?php echo $row["itemId"]; ?>" value="<?php echo $row["articulo"]; ?>">
</font>
</td>
<td bgcolor="#FFFFFF">
<font face="verdana" size="1" color="red">
<?php echo number_format($row["pvp"], 2, ".", ","); ?> </font><font face="verdana" size="1"><span class="Estilo1">&euro;</span></font> <input name="Precio" type="hidden" id="<?php echo $row["itemId"]; ?>" value="<?php echo number_format($row["pvp"], 2, ".", ","); ?>">
</td>
<td bgcolor="#FFFFFF" class="Estilo12">
<font face="verdana" size="1"><a href="cart.php?action=remove_item&id=<?php echo $row["itemId"]; ?>&familia=<? echo $_GET['familia'];?>&subfamilia=<? echo $_GET['subfamilia'];?>" class="texto Estilo14">borrar</a></font>
</td>
</tr>
<?php
}

// Display the total
?>
<tr>
<td height="19" colspan="5">
<hr size="1" color="white" NOSHADE>
</td>
</tr>
<tr>
<td height="28" colspan="3">
<font face="verdana" size="1" color="#66CCFF">
<strong><a href="catalogo_show.php?familia=<? echo $_GET['familia'];?>&subfamilia=<? echo $_GET['subfamilia'];?>">Agregar m&aacute;s Productos </a> </strong></font>
<font face="verdana" size="1"><strong><span class="Estilo4">- <span class="Estilo5">|</span>-</span><a href="../muestra_ofertas.php?familia=<? echo $_GET['familia'];?>&subfamilia=<? echo $_GET['subfamilia'];?>" target="muestra"><span class="Estilo4">..</span></a><font color="#66CCFF"></font></strong></font><a href="../muestra_ofertas.php?familia=<? echo $_GET['familia'];?>&subfamilia=<? echo $_GET['subfamilia'];?>"><strong>Ofertas del Mes</strong></a> <font face="verdana" size="1" color="black">
<input name="familia" type="hidden" id="familia" value="<? echo $_GET['familia'];?>">
<input name="subfamilia" type="hidden" id="subfamilia" value="<? echo $_GET['subfamilia'];?>">
</font> </td>
<td>
<font face="verdana" size="2" color="black">
<b>Total: <?php echo number_format($totalCost, 2, ".", ","); ?></b><b> &euro;</b>
<input name="Total" type="hidden" id="Total" value="<?php echo number_format($totalCost, 2, ".", ","); ?>">
</font>
</td>
<td><font color="#003366" size="2" face="Arial, Helvetica, sans-serif">&nbsp;
</font></td>
</tr>
<tr valign="middle" bgcolor="#B9DAF4">
<td width="152" height="23" valign="middle" class="Estilo5 Estilo6"><p class="Estilo11"><span class="Estilo8">..</span>Datos del Cliente </td>
<td colspan="3" valign="middle"><img src="../imagens/usuarios.gif" width="28" height="25"></td>
<td class="Estilo5 Estilo6"><!--DWLayoutEmptyCell-->&nbsp;</td>
</tr>
<tr valign="top">
<td height="19" colspan="5" class="Estilo5 Estilo6"><table width="100%" border="0" cellspacing="2">
<!--DWLayoutTable-->
<tr>
<td width="288"><span class="Estilo10">Nombre completo </span></td>
<td width="691"><span class="Estilo10">Comentarios</span></td>
</tr>
<tr>
<td height="24"><input name="Nombre" type="text" id="Nombre"></td>
<td rowspan="3" valign="top"><textarea name="Comentarios" cols="40" rows="4" id="Comentarios"></textarea></td>
</tr>
<tr>
<td height="20"><span class="Estilo10">e - mail </span></td>
</tr>
<tr>
<td height="24"><input name="Correo" type="text" id="Correo"></td>
</tr>
<tr>
<td height="20" colspan="2" valign="top"><hr size="1" color="white" NOSHADE></td>
</tr>
<tr>
<td><font color="#003366" size="2" face="Arial, Helvetica, sans-serif">
<input name="Submit" type="submit" class="boton" value="Realizar Pedido">
</font></td>
<td valign="bottom"><div align="left"><font color="#003366" size="2" face="Arial, Helvetica, sans-serif">
</font></div></td>
</tr>
</table></td>
</tr>
<tr>
<td height="1"></td>
<td width="75"></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
<?php
}

?>


Gracias por responder...
  #6 (permalink)  
Antiguo 27/04/2004, 07:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tus variables del formulario .. den ser tipo array:

<input name="Producto[]" type="hidden" id="<?php echo $row["itemId"]; ?>" value="<?php echo $row["articulo"]; ?>">

El elemento (tu input hidden o el que coresponda) .. llevará en ese Array (Producto en ese caso) el valor en cada indice que indiques en "value" .. Supongo que necesitaras ahí el "itemId" para relacionarlo en tu BD .. (el "id sólo te servirá para efectos de Javacript y control de objetos por indice .. no para tomar ese valor en tu script PHP de proceso .. .solo el nombre de campo y su "value" es lo que podrás recibir en tu scirpt PHP.)

Si los llamas así (nombre[] o nombre[indice]).. en PHP recibiras un array que puedes procesar como tal .. Bien sea leyendolo con un bucle for() o foreach() (según corresponda si usas indices o no y si tienes más arrays asociados por su mismo indice como es tu caso ) ..

Si usas varios arrays para llevar X propiedades de ese registro ..

Código PHP:
while(){

<
input type="loquesea" name="propiedad1[]" ....
<
input type="loquesea" name="propiedad2[]"....


en PHP te vendrá bien recorrer dicho(s) arrays con un bucle for()

Código PHP:
for ($x=0$x<count($_POST['propiedad1']; $x++){
     echo 
"Propiedad1: ".$_POST['propiedad1'][$x]."<br>";
     echo 
"Propiedad2: ".$_POST['propiedad2'][$x]."<br>";
     echo 
"PropiedadN: ".$_POST['propiedadN'][$x]."<br>";

Como veras .. se cuenta (count()) el total de elementos de uno de los arrays que recibiras en tu script PHP .. Se asume que los indices van a ser 1<->1 de todos los arrays (otra cosa será que tengan valor o no dicho indice de cada array).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 27/04/2004, 13:25
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 10 meses
Puntos: 0
De acuerdo Hoy duermo!!!

Buenas!! ante todo gracias por contestar Sr Cluster, usted si que sabe....

Teniendo que solucionar este pequeño contratiempo con este form mail lo solucione de esta manera y aqui les dejo el code , por si a alguien le sirve:
<?php
include("db.php");
//obtengo el valor de la sesion guardada en una cookie
$_COOKIE[cartId];

// esta es la info general del form
$Nombre = $_GET[Nombre];
$Correo = $_GET[Correo];
$Comentarios = $_GET[Comentarios];
$Total = number_format($_GET[Total],2,',','.');
// y aqui solucione lo de obtener los productos de la pagina con el listado de productos seleccionados
//variables de conexion
global $dbServer, $dbUser, $dbPass, $dbName;

$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
// selecciono los productos de la cesta segun la variable de sesion cookie
$result = mysql_query("select * from cart inner join pedidosl3 on cart.itemId = pedidosl3.itemId where cart.cookieId = '$cartId'");

$email_dest = "[email protected]";

//Pinto el mensaje del form y recojo todas las variables
$mens = "---------------------------------------------------------------------\n";
$mens .= " Pedido de Compra \n";
$mens .= "---------------------------------------------------------------------\n";
$mens .= " Productos: \n";
$mens .= "---------------------------------------------------------------------\n";
while ($row=mysql_fetch_array($result)){
//aqui concateno variables producto cantidad y precio..
$mens .= "\n".$row['articulo']."| Cantidad: ".$row['qty']."| Precio unitario: ".$row['pvp']."€ \n";
}
$mens .= "................................................. ..Total a pagar: $".$Total."€ \n\n";
$mens .= "Datos de Cliente: \n";
$mens .= "Nombre: ".$Nombre." \n";
$mens .= "Correo: ".$Correo." \n";
$mens .= "Comentarios: ".$Comentarios." \n";

//y finalmente envio el EMAIL
$envia = mail($email_dest, "Pedido", $mens, "From:".$Correo."\r\Comentarios:".$Comentarios );

?>

<html>
<head>
<title>Fin de Proceso de pedido</title>
<style type="text/css">
#main
{position: absolute;
top: 36px;
left: 328px;
width:450 px;
}
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #006666;
}
body {
background-color: #109CD0;
}
.Estilo1 {color: #FFFFFF}
.Estilo2 {color: #109CD0}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<div align="center">
<p>&nbsp;</p>
<p><span class="Estilo1">Su pedido fue procesado con exito.<br>
Gracias.</span><br>
</p>
<hr width="100%">
<p><span class="Estilo1">Contacto:<span class="Estilo2">...</span></span><a href="mailto:[email protected]">[email protected]</a></p>
</div>
</body>//obtengo el valor de la sesion guardada en una cookie // esta es la info general del form // y aqui solucione lo de obtener los productos de la pagina con el listado de productos seleccionados // selecciono los productos de la cesta segun la variable de sesion cookie //Pinto el mensaje del form y recojo todas las variables //y finalmente envio el EMAIL

Un saludo y gracias otra ves...

Última edición por midpunto; 27/04/2004 a las 13:33
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 12:05.