Foros del Web » Programando para Internet » PHP »

Datos recuperados incompletos en un email

Estas en el tema de Datos recuperados incompletos en un email en el foro de PHP en Foros del Web. Hola a todos. Soy nuevo en esta familia y espero poder encontrar buena colaboración de su parte. Mi problema es el siguiente, he desarrollado un ...
  #1 (permalink)  
Antiguo 03/05/2011, 12:36
Avatar de magnusmaind  
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 9 meses
Puntos: 1
Pregunta Datos recuperados incompletos en un email

Hola a todos. Soy nuevo en esta familia y espero poder encontrar buena colaboración de su parte. Mi problema es el siguiente, he desarrollado un carrito de compras para una carnicería y he seguido varios tutoriales y con éxito he podido desarrollar este sitio con PHP, la cuestion es que por mas vueltas que le he dado no puedo recuperar los datos completos del carrito en el email que se le envia al cliente, solo toma el último valor que escoge el usuario y lo demas al parecer solo se pierde o no llega. He probado de todo pero nada me ha resultado y esto es lo que me falta para completar este trabajo. Aquí le coloco el codigo que estoy usando para ver en que me pueden ayudar:

Código:
<?php
session_start();
	if(isset($_SESSION['pedido'])){
		$usuario = $_POST['usuario'];
		$pass = $_POST['pass'];
		$carrito_novillo=$_SESSION['pedido'];
		for($i=0;$i<=count($carrito_novillo)-1;$i ++){
			if($carrito_novillo[$i] != NULL){
				$pedido = $carrito_novillo[$i]['pedido'];
				$cantidad = $carrito_novillo[$i]['cantidad'];
				$descripcion = $carrito_novillo[$i]['descripcion'];
				}
			}
		}	
				
				
				if($usuario!= "" && $pass!= ""){
		  		$link=mysql_pconnect("localhost","xxxxx","xxxxxx");
				mysql_select_db("xxxxxx",$link);
				$result= mysql_query("SELECT registro_db.fullname,registro_db.id,registro_db.telef,registro_db.movil,registro_db.direccion,registro_db.email FROM registro_db WHERE registro_db.usuario='$usuario'",$link) or die(mysql_error());
			$datos=mysql_fetch_row($result);
			
				
				$nombre = $datos[0];
				$id = $datos[1];
				$direccion = $datos[4];
				$telef = $datos[2];
				$movil = $datos[3];
				$email = $datos[5];
				}
				$recipiente = $email;
				
				// Para enviar correo HTML, la cabecera Content-type debe definirse
				$cabeceras  = 'MIME-Version: 1.0' . "\n";
				$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
				// Cabeceras adicionales
				$cabeceras .= 'From: El Novillo ON-LINE' . "\n";
				$msg = "<table width='470' border='0'>
  <tr>
    <td height='40' colspan='3' align='center' valign='middle' bgcolor='#CCCCCC'><span class='Estilo1'><b>Resumen del Pedido</b></td>
  </tr>
  <tr>
    <td align='center' width='200'><span class='Estilo6'><b>Producto(s)</b></span></td>
    <td width='100' align='center'><span class='Estilo6'><b>Cant. Krgs.</b></span></td>
     <td width='200' align='center'><span class='Estilo6'><b>Descripción</b></td>
  </tr>
  <tr>
    <td width='200' align='left'>$pedido</td>
    <td width='100' align='center'><span class='Estilo7'>$cantidad Kgrs.</span></td>
    <td width='200' align='right'>$descripcion</td>
  </tr>
  <tr>
    <td height='40' colspan='3' align='center' valign='middle' bgcolor='#CCCCCC'><span class='Estilo1'><b>Dastos de Cliente</b></td>
  </tr>
  <tr>
    <td colspan='3'>
	Nombre/Razón Social: $nombre<br/>
	Cédula/RIF.: $id<br/>
	Dirección: $direccion<br/>
	Telefono: $telef<br/>
	Celular: $movil<br/>
	Correo: $email
	</td>";
				
				
				imap_mail("$recipiente", "TEST DE PEDIDO", "$msg","$cabeceras");	
?>
Todo llega excelente pero el pedido me esta echando broma como decimos aca en Venezuela. Sabria agradecer mucho la ayuda y espero que si tengo muchos errores no sean tanduros conmigo ya que soy novato en esto del PHP. Gracias y espero respuestas...!
  #2 (permalink)  
Antiguo 03/05/2011, 13:03
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Datos recuperados incompletos en un email

saludos magnusmaind... Antes que anda yo tampoco soy un master de php, paero me parece que en esta seccion de tu codigo:

Código PHP:
for($i=0;$i<=count($carrito_novillo)-1;$i ++){
            if(
$carrito_novillo[$i] != NULL){
                
$pedido $carrito_novillo[$i]['pedido'];
                
$cantidad $carrito_novillo[$i]['cantidad'];
                
$descripcion $carrito_novillo[$i]['descripcion'];
                }
            } 
Estas sobre escribiendo las variables $pedido, $cantidad y $descripcion, por lo que al finalizar el ciclo for, esas variables adquieren unicamente el ultimo valor, yo sugeriria que lo hicieras asi:

Código PHP:
for($i=0;$i<=count($carrito_novillo)-1;$i ++){
            if(
$carrito_novillo[$i] != NULL){
                
$pedido[] = $carrito_novillo[$i]['pedido'];
                
$cantidad[] = $carrito_novillo[$i]['cantidad'];
                
$descripcion[] = $carrito_novillo[$i]['descripcion'];
                }
            } 

De esta manera, al mostrarlo en la ultima parte, seria mas o menos asi:

Código PHP:
foreach($pedido as $x => $nada)
{
      ?>
                  <tr>
                      <td width='200' align='left'><? echo $pedido[$x]; ?></td>
                      <td width='100' align='center'><span class='Estilo7'><? echo $cantidad[$x]; ?> Kgrs.</span></td>
                      <td width='200' align='right'><? echo $descripcion[$x]; ?></td>
                  </tr>
      <?
}
Si no me equivoco, eso resuelve el problema que al menos yo note y entendí, cualquier cosa comentas.
  #3 (permalink)  
Antiguo 03/05/2011, 14:08
Avatar de magnusmaind  
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 9 meses
Puntos: 1
De acuerdo Respuesta: Datos recuperados incompletos en un email

Muchas gracias pancho_k, lo pruebo y te comento sea cual sea el resultado pero creo que estas en lo cierto porque ya habia intentado usar el "foreach" pero no de esta manera...
  #4 (permalink)  
Antiguo 03/05/2011, 14:44
Avatar de magnusmaind  
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Datos recuperados incompletos en un email

pancho creo que algo esta pasando porque ahora no veo ningun dato. No se si puedas explicarte mejor en la utilización de esto que me enviaste ya que no pasa nada...Gracias nuevamente!
  #5 (permalink)  
Antiguo 03/05/2011, 17:26
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Datos recuperados incompletos en un email

No entiendo que pueda estar pasando o por que no te muestre nada, espero que no hayas cambiado nada en la estructura de tu código, te dejo un ejemplo que acabo de probar y debe funcionar sin ningún problema, puedes copiarlo y probarlo en tu servidor:

Código PHP:
<?
session_start
();

###############ESTA PARTE UNICAMENTE SIRVE PARA LLENAR LA VARIABLE DE SESSION. OBVIAMENTE  TU EN TU PROGRMA
###############LO LLENAS A BASE DE LOS PRODUCTOS QUE SE ELIGIERON.
$car[0][0]=1;
$car[0][1]=2;
$car[0][2]="desc1";

$car[1][0]=2;
$car[1][1]=1;
$car[1][2]="desc2";

$car[2][0]=3;
$car[2][1]=4;
$car[2][2]="desc3";

$car[3][0]=4;
$car[3][1]=2;
$car[3][2]="desc4";

$car[4][0]=5;
$car[4][1]=1;
$car[4][2]="desc5";
$_SESSION['pedido']=$car;

$carrito_novillo=$_SESSION['pedido'];######  Aqui ya empieza a parecerse a tu codigo, aqui obtengo la session en la variable $carrito_novillo como tu lo tienes



## Ojo, en esta parte yo no saco el contenido de $carrito_novillo para meterlo a las variables $pedido, $cantidad y $descripcion, si no que 
## tomo directamente los valores del arreglo $carrito_novillo y los muestro en la tabla
?>
<table border="1" align="center">
    <tr>
        <td>Pedido</td>
        <td>Cantidad</td>
        <td>Descripcion</td>
    </tr>
    <?
        
foreach($carrito_novillo as $posicion => $contenido)
        {
            
?>
                <tr>
                    <td><?=$contenido[0];?></td>
                    <td><?=$contenido[1];?></td>
                    <td><?=$contenido[2];?></td>
                </tr>
            <?
        
}
    
?>
</table>


<!--Este es el contenido de $carrito_novillo-->
<pre>
    <? print_r($carrito_novillo); ?>
</pre>
Me imagino que esto es lo que tratas de hacer, si esto no soluciona tu problema, posiblemente tengas problemas desde el llenado de la $_SESSION, saludos!

Etiquetas: formulario
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 14:45.