Foros del Web » Programando para Internet » PHP »

Almacenar lo retornado por un método en variable para ser enviado por mail

Estas en el tema de Almacenar lo retornado por un método en variable para ser enviado por mail en el foro de PHP en Foros del Web. Hola a todos! como expreso en el título, tengo la situación en que estoy usando Jcart para un carrito de compras y, una vez que ...
  #1 (permalink)  
Antiguo 22/01/2013, 21:53
 
Fecha de Ingreso: octubre-2009
Mensajes: 107
Antigüedad: 14 años, 5 meses
Puntos: 2
Almacenar lo retornado por un método en variable para ser enviado por mail

Hola a todos! como expreso en el título, tengo la situación en que estoy usando Jcart para un carrito de compras y, una vez que se realiza la misma, muestro los productos elegidos por pantalla pero, además, quiero enviarlos por mail.
Para ver el detalle lo hago así:
Código PHP:
echo $_SESSION['jcart']->getCart(); 
Donde getCart() consiste en:
Código PHP:
public function getCart(){
        
$config $this->config
        
$errorMessage null;
        
$priceFormat $config['priceFormat'];
        
$checkout $config['checkoutPathGetCart'];
        
$isCheckout strpos(request_uri(), $checkout);
        if (
$isCheckout !== false || $_REQUEST['jcartIsCheckout'] == 'true') {
            
$isCheckout true;
        }
        else {
            
$isCheckout false;
        }
        
        
////////////////////////////////////////////////////////////////////////
        // Output the cart

        // Return specified number of tabs to improve readability of HTML output
        
function tab3($n) {
            
$tabs3 null;
            while (
$n 0) {
                
$tabs3 .= "\t";
                --
$n;
            }
            return 
$tabs3;
        }

        
// If there's an error message wrap it in some HTML
        
if ($errorMessage)    {
            
$errorMessage "<p id='jcart-error'>$errorMessage</p>";
        }

        
// Display the cart header
        
echo tab3(1) . "$errorMessage\n";
        echo 
tab3(2) . "<fieldset>\n";
        echo 
tab3(2) . "Descripción de su compra\n";
        echo 
tab3(3) . "<table border='1'>\n";
        
        
// Display the cart footer
        
echo tab3(4) . "<tfoot>\n";
        echo 
tab3(5) . "<tr>\n";
        echo 
tab3(6) . "<th colspan='3'>\n";

        
// If this is the checkout hide the cart checkout button
        
if ($isCheckout !== true) {
            if (
$config['button']['checkout']) {
                
$inputType "image";
                
$src " src='{$config['button']['checkout']}' alt='{$config['text']['checkout']}' title='' ";
            }
            echo 
tab3(7) . "<input type='$inputType' $src id='jcart-checkout' name='jcartCheckout' class='jcart-button' value='{$config['text']['checkout']}' />\n";
        }

        echo 
tab3(7) . "<span id='jcart-subtotal'>{$config['text']['subtotal']}: <strong>$" number_format($this->subtotal$priceFormat['decimals'], $priceFormat['dec_point'], $priceFormat['thousands_sep']) . "</strong></span>\n";
        echo 
tab3(6) . "</th>\n";
        echo 
tab3(5) . "</tr>\n";
        echo 
tab3(4) . "</tfoot>\n";            
        
        echo 
tab3(4) . "<tbody>\n";

        
// If any items in the cart
        
if($this->itemCount 0) {

            
// Display line items
            
foreach($this->get_contents() as $item)    {
                echo 
tab3(5) . "<tr>\n";
                echo 
tab3(6) . "<td class='jcart-item-price'>\n";
                echo 
tab3(7) . "{$item['qty']}\n";
                echo 
tab3(6) . "</td>\n";
                echo 
tab3(6) . "<td class='jcart-item-name'>\n";

                echo 
tab3(7) . $item['name'] . "\n";

                echo 
tab3(6) . "</td>\n";
                echo 
tab3(6) . "<td class='jcart-item-price'>\n";
                echo 
tab3(7) . "<span>$" number_format($item['subtotal'], $priceFormat['decimals'], $priceFormat['dec_point'], $priceFormat['thousands_sep']) . "</span>\n";
                echo 
tab3(6) . "</td>\n";
                echo 
tab3(5) . "</tr>\n";
            }
        }

        echo 
tab3(4) . "</tbody>\n";
        echo 
tab3(3) . "</table>\n\n";        
        echo 
tab3(1) . "</form>\n\n";
        echo 
tab3(1) . "<div id='jcart-tooltip'></div>\n";
    } 
Lo muestra perfecto por pantalla, pero lo que no logro es almacenar todo lo que retorna ese método para enviarlo por mail y/o guardarlo en una base de datos.

No sé mucho de objetos, si alguien me pudiera orientar para ver cómo hacerlo sería de mucha ayuda.

Muchas gracias desde ya! :)
  #2 (permalink)  
Antiguo 22/01/2013, 22:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Almacenar lo retornado por un método en variable para ser enviado por mail

Si haces echo el contenido se envía a la pantalla (navegador) y lo que necesitas es asignarlo a una variable:

Código PHP:
Ver original
  1. // Esto lo envía al navegador
  2. echo 'Un texto<br />';
  3. echo 'Otro texto';
  4.  
  5. // Esto lo asigna a una variable
  6. // Ojo con el .= es para agregar más contenido a la cadena (concatenar)
  7. $variable = 'Un texto<br />';
  8. $variable .= 'Otro texto';
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 23/01/2013, 09:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 107
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Almacenar lo retornado por un método en variable para ser enviado por mail

Cita:
Iniciado por Triby Ver Mensaje
Si haces echo el contenido se envía a la pantalla (navegador) y lo que necesitas es asignarlo a una variable:

Código PHP:
Ver original
  1. // Esto lo envía al navegador
  2. echo 'Un texto<br />';
  3. echo 'Otro texto';
  4.  
  5. // Esto lo asigna a una variable
  6. // Ojo con el .= es para agregar más contenido a la cadena (concatenar)
  7. $variable = 'Un texto<br />';
  8. $variable .= 'Otro texto';
Hola, en mi caso no funciona.
Intenté haciendo:
Código PHP:
$variable $_SESSION['jcart']->getCart(); 
y luego enviarla por mail, pero no manda nada. Supongo que debe ser porque no es un string normal sino que quiero guardar en $variable el resultado de la ejecución de un método. Alguna sugerencia? Gracias nuevamente!
  #4 (permalink)  
Antiguo 23/01/2013, 09:13
Avatar de porketero  
Fecha de Ingreso: noviembre-2010
Mensajes: 29
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Almacenar lo retornado por un método en variable para ser enviado por mail

Cita:
Iniciado por potoka Ver Mensaje
Hola, en mi caso no funciona.
Intenté haciendo:
Código PHP:
$variable $_SESSION['jcart']->getCart(); 
y luego enviarla por mail, pero no manda nada. Supongo que debe ser porque no es un string normal sino que quiero guardar en $variable el resultado de la ejecución de un método. Alguna sugerencia? Gracias nuevamente!
A lo que se refiere es que al poner
Código PHP:
echo tab3(1) . "$errorMessage\n"
Lo que estas haciendo es mostrarlo, denerías almacenarlo en una variable cómo ha dicho el. Es decir, el HTML que muestras con el echo se ve en el navegador.
Ej.:
Tu escribes algo en un bloc de notas, tu lo ves escrito pero no lo guardas. En otro momento quieres leerlo pero el bloc de notas está cerrado (y no guardaste) entonces deberías volver a escribirlo o haberlo guardado.
Solución:
En vez de
Código PHP:
echo tab3(3) . "<table border='1'>\n"
pon
Código PHP:
$linea[numerodelinea] = tab3(3) . "<table border='1'>\n"
y una vez guardado por la función, muéstralo con echo $linea[numerodelinea] y ya está. Hay otras opciones más prácticas, pero eso es lo más similar a tu código que se te puede ofrecer
  #5 (permalink)  
Antiguo 23/01/2013, 12:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Almacenar lo retornado por un método en variable para ser enviado por mail

Resulta que en la función estás enviando todo a la salida directamente, por lo que:

Código PHP:
Ver original
  1. // Esto:
  2. echo $_SESSION['jcart']->getCart();
  3.  
  4. // Es exactamente lo mismo que esto:
  5. $_SESSION['jcart']->getCart();

En ambos casos se envía el contenido al navegador, porque tu función debería ser algo como:

Código PHP:
Ver original
  1. public function getCart() {
  2.       $cadena = '';
  3.       $cadena .= "\t\t\tUna línea de texto por aquí\n";
  4.       $cadena .= "\t\t\tOtra línea de texto por acá\n";
  5.       // Más operaciones (si son necesarias)
  6.  
  7.       // Devuelves el valor final
  8.       return $cadena;
  9. }
  10.  
  11. // Ahora sí puedes asignar a una variable
  12. $variable = $_SESSION['jcart']->getCart();
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 24/01/2013, 09:39
 
Fecha de Ingreso: octubre-2009
Mensajes: 107
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Almacenar lo retornado por un método en variable para ser enviado por mail

Gracias por ambas respuestas! Ahora lo pruebo y les comento cualquier cosa!
Saludos

Etiquetas: almacenar, enviado, html, mail
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 04:10.