Foros del Web » Programando para Internet » PHP »

php en html

Estas en el tema de php en html en el foro de PHP en Foros del Web. Hola estoy queriendo poner un while dentro de una funcion mail de php y la verdad no consigo hacerlo , les paso el codigo a ...
  #1 (permalink)  
Antiguo 11/02/2014, 13:57
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
php en html

Hola estoy queriendo poner un while dentro de una funcion mail de php y la verdad no consigo hacerlo , les paso el codigo a ver si pueden darme una mano o recomenadrme algun manual, gracias


Código:

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>Reclamos del dia " .$tiempo."</p>
<table>
<tr>
<th>Numero de Reclamo</th>
<th>Area</th>
<th>Responsable</th>
<th>Cargado por</th>
<th>Estado</th>
<th>localidad</th>

</tr>
<tr>"
while ($row_consulta = mysql_fetch_assoc($consulta)) {
    echo $row_consulta["area"];
    echo $row_consulta["titulo"];
    echo $row_consulta ["detalle"];
}
"

<td>John</td>
<td>Doe</td>
<td>John</td>
<td>Doe</td>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";
  #2 (permalink)  
Antiguo 11/02/2014, 14:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: php en html

El asunto es que no se puede mezclar la lógica dentro de una cadena de texto, la idea es ir concatenando o imprimir en putos separados.

Si tu objetivo es almacenar toda la lógica en una cadena lo correcto es concatenar, o si te sientes cómodo imprimiendo es mejor utilizar buffers:
Código PHP:
Ver original
  1. // concatenación
  2. $str = '';
  3. $str .= '<tag>';
  4.  
  5. while (/* ... */) {
  6.   $str .= '<subtag>';
  7.   $str .= $value;
  8.   $str .= '</subtag>';
  9. }
  10.  
  11. $str .= '</tag>';
  12.  
  13. // buffers
  14. echo '<tag>';
  15.  
  16. while (/* ... */) {
  17.   echo '<subtag>';
  18.   echo $value;
  19.   echo '</subtag>';
  20. }
  21.  
  22. echo '</tag>';
  23.  
  24. $str = ob_end_clean();

Si observas bien, tu código no se parece nada a esto.

Tienes que separar la lógica pero también debes reanudar la impresión después de interrumpirla, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/02/2014, 14:06
Avatar de mili_07  
Fecha de Ingreso: febrero-2012
Mensajes: 58
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: php en html

Debes poner los tags "<?php ?>" encerrando al while, sino nunca te lo tomara como php.
Código PHP:
Ver original
  1. [B]<?php[/B]
  2.  while ($row_consulta = mysql_fetch_assoc($consulta)) {
  3.     echo $row_consulta["area"];
  4.     echo $row_consulta["titulo"];
  5.     echo $row_consulta ["detalle"];
  6. } [B]?>[/B]
Si te funciona comentanos! Saludos!
__________________
...Si quieres que tu código funcione y tienes errores, borra todo y vuelve a empezar...
  #4 (permalink)  
Antiguo 11/02/2014, 14:28
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: php en html

pateketrueke hola el ejemplo que me pasaste es imprimiendo por separado verdad?

hay alguno mas facil de concatenacion ".$value ?algo asi


Código PHP:


$subject 
"En el dia de hoy se cargaron ".$numero_rows." Reclamos";

$message "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>Reclamos del dia " 
.$tiempo."</p>
<table>
<tr>
<th>Numero de Reclamo</th>
<th>Area</th>
<th>Responsable</th>
<th>Cargado por</th>
<th>Estado</th>
<th>localidad</th>

</tr>
<tr>"


$message.= while ($row_consulta mysql_fetch_assoc($consulta)) {
$message.="<td>".echo $row_consulta['area']."</td>";
$message.="<td>".echo $row_consulta['area']."</td>";
$message.="<td>".echo $row_consulta['area']."</td>";
$message.="<td>".echo $row_consulta['area']."</td>";
$message.="<td>".echo $row_consulta['area']."</td>";
$message.="<td>".echo $row_consulta['area']."</td>";
$message.="</tr>";}"

<td>John</td>
<td>Doe</td>
<td>John</td>
<td>Doe</td>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
"

  #5 (permalink)  
Antiguo 11/02/2014, 14:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: php en html

Me parece que sigues sin entender.

Repito: no puedes mezclar lógica dentro de una cadena, o como si estuvieras concatenando, son expresiones por separado la cadena de texto y la lógica.

Observa bien:
Código PHP:
Ver original
  1. // MAL
  2. $str = '<tag>'
  3. $str .= while (/* ... */) {
  4.   $str .= $value;
  5. }
  6.  
  7. // BIEN
  8. $str = '<tag>';
  9. while (/* ... */) {
  10.   $str .= $value;
  11. }

Observa bien las diferencias, no es posible ejecutar el código como lo haces, reflexiona al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 11/02/2014, 15:05
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: php en html

entiendo , creo que asi esta mejor pero me trabe aqui

Código:
$message = '
<html> 
<head> 
<title>HTML email</title> 
</head> 
<body> 
<p>Reclamos del dia " .$tiempo."</p> 
<table> 
<tr> 
<th>Numero de Reclamo</th> 
<th>Area</th> 
<th>Responsable</th> 
<th>Cargado por</th> 
<th>Estado</th> 
<th>localidad</th>
</tr> 
<tr>';
while ($row_consulta = mysql_fetch_assoc($consulta)) {
 $message.= "<td>".$row_consulta['area']."</td>";
  $message.= "<td>".$row_consulta['titulo']."</td>";
   $message.= "<td>".$row_consulta['responsable']."</td>";
    $message.= "<td>".$row_consulta['estado']."</td>";
	  $message.= "<td>".$row_consulta['responsable']."</td>";
    $message.= "<td>".$row_consulta['estado']."</td>";
}
$message = '
</tr>
<td>John</td> 
<td>Doe</td> 
<td>John</td> 
<td>Doe</td> 
<td>John</td> 
<td>Doe</td> 
</tr> 
</table> 
</body> 
</html> ';
  #7 (permalink)  
Antiguo 11/02/2014, 15:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: php en html

¿Y qué es lo que sucede?

Digo, no podemos ejecutar tu código mentalmente para saber lo que sucede.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 11/02/2014, 15:11
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: php en html


Se ejecuta bien el script y manda la funcion mail() pero no llega en el cuerpo de texto las variables concatenadas




hice una ultima correccion,

Código:
$message = '
<html> 
<head> 
<title>HTML email</title> 
</head> 
<body> 
<p>Reclamos del dia " .$tiempo."</p> 
<table> 
<tr> 
<th>Numero de Reclamo</th> 
<th>Area</th> 
<th>Responsable</th> 
<th>Cargado por</th> 
<th>Estado</th> 
<th>localidad</th>
</tr> 
<tr>';
while ($row_consulta = mysql_fetch_assoc($consulta)) {
 $message.= "<td>".$row_consulta['area']."</td>";
  $message.= "<td>".$row_consulta['titulo']."</td>";
   $message.= "<td>".$row_consulta['responsable']."</td>";
    $message.= "<td>".$row_consulta['estado']."</td>";
	  $message.= "<td>".$row_consulta['responsable']."</td>";
    $message.= "<td>".$row_consulta['estado']."</td>";
}
$message = '
</tr>

</table> 
</body> 
</html> ';
  #9 (permalink)  
Antiguo 11/02/2014, 15:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: php en html

¿Si notas que después del while() no concatenas $message sino que la sobreescribes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 11/02/2014, 15:19
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: php en html

gracias pateketrueke logre entender aun mas el tema de concatenacion, realmente eres crack ;)

me llego bien pero todo en una misma fila, sera cuestion de revisar el html ahora para que visualizar cada registro por separado
  #11 (permalink)  
Antiguo 12/02/2014, 12:03
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: php en html

si quiero hacer algo asi puedo?
agregar un if dentro del while

Código:

$message .= '
<html> 
<head> 
<title>HTML email</title> 
</head> 
<body> 
<p>Reclamos del dia ' .$tiempo.'</p> 
<table  border="1"> 
<tr> 
<th>Numero de Reclamo</th> 
<th>Area</th> 
<th>Responsable</th> 
<th>Cargado por</th> 
<th>Estado</th> 
<th>localidad</th>
</tr>';
while ($row_consulta = mysql_fetch_assoc($consulta)) {
$message.= "<tr>";
 $message.= "<td>".$row_consulta['id']."</td>";
  $message.= "<td>".if($row_consulta['area']== 4){ echo 'one';}else{echo 'otro';}."</td>";

   $message.= "<td>".$row_consulta['responsable']."</td>";
    $message.= "<td>".$row_consulta['cargadopor']."</td>";
	  $message.= "<td>".$row_consulta['estado']."</td>";
    $message.= "<td>".$row_consulta['localidad']."</td>";
	$message.= "</tr>";
}
$message .= '


</table> 
</body> 
</html> ';
  #12 (permalink)  
Antiguo 12/02/2014, 13:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: php en html

No, no puedes porque sería el mismo problema: estás combinando cadenas con expresiones lógicas.

Al final, while() e if(), etc. son expresiones de control, por lo tanto aplican las mismas reglas.

Si quieres introducir lógica dentro del while() debes finalizar la concatenación, abrir los bloques y concatenar dentro, no puedes concatenar la expresión.

Reflexiona bien lo que haces, de verdad no es necesario darle tantas vueltas al asunto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: html, mysql
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:05.