Foros del Web » Programando para Internet » PHP »

Adaptar Este Php A El Html

Estas en el tema de Adaptar Este Php A El Html en el foro de PHP en Foros del Web. Hola... Estoy trabajando con 2 excelentes codigos de este mismo foro pero necesito unirlos a ambos... explico: Tenemos un form que vamos a enviar por ...
  #1 (permalink)  
Antiguo 03/09/2005, 16:23
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Adaptar Este Php A El Html

Hola...

Estoy trabajando con 2 excelentes codigos de este mismo foro pero necesito unirlos a ambos... explico:

Tenemos un form que vamos a enviar por correo en formato HTML a traves de PHP. Dentro del form, adapte el 1er codigo, unas listas dependientes de paises y estados con base de datos (funciona ok). El problema es que este codigo se basa en los ID de cada tabla para mostrar los SELECT y, al llegar el correo, me muestra asi:

nombre: Pedro Perez
edad: 18
correo: [email protected]
pais: 57 (quiero que me muestre el nombre, no el id)
estado: 720 (quiero que me muestre el nombre, no el id)
telefono: 67152354

Ahora pongo los codigos...

1. Parte del form (solo el area de los select):
Código PHP:
<? 
// datos de conexion a la BD. 
$servidor "xxxxxx"// host 
$usuario "xxxxxx"
$clave "xxxxxx"
$basedatos "xxxxxx"// Indicar una Base de datos. 

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario .. 
// Sino, se continua con el formulario y los nuevos valores de los Select .. 
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser 
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda. 

if (!empty($_POST['enviado'])){ 

// Procesar el formulario ... 
echo "Procesando formulario:<br>"
echo 
"Recibido id_tabla_padre: ".$_POST['id_padre']."<br>"
echo 
"Recibido id_tabla_hija: ".$_POST['id_hija']."<br>"
 

} else { 

// Conexión a la BD 
$conexion mysql_connect($servidor$usuario$clave) or die(mysql_error()); 
mysql_select_db($basedatos$conexion) or die(mysql_error()); 

// Obtener el $id_padre del envio a si mismo del formulario .. 
if(isset($_POST['id_padre'])){ 
$id_padre=$_POST['id_padre']; 


if(isset(
$_POST['id_hija'])){ 
$id_hija=$_POST['id_hija']; 


// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script). 
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n"

// Formar Selec "Padre". 
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n"
echo 
"<option value=\"\"> Seleccione </option>\n"

$SQLconsulta_padre="SELECT * FROM countries"
$consulta_padre mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error()); 

While (
$registro_padre=mysql_fetch_assoc($consulta_padre )){ 
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo. 
// Se selecciona en consecuencia (selected) la opción elegida. 
if ($id_padre == $registro_padre['country_id']){ 
echo 
"<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n"
} else { 
echo 
"<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n"


echo 
"</select>\n\n"

mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.?></div></td>
                        <td><div align="left"><?
                        
// Formar Select "Hijo" 
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n"

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
// se muestra el mensaje de "seleccine un item" (del select padre). 
if (!empty($id_padre)){ 

$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$id_padre'"
$consulta_hija mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error()); 
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select .. 
if (mysql_num_rows($consulta_hija) != 0){ 
While (
$registro_hija=mysql_fetch_assoc($consulta_hija)) { 
//echo "<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n"; 
if ($id_hija == $registro_hija['state_id']){ 
echo 
"<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['name']."</option>\n"
} else { 
echo 
"<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n"




} else { 
echo 
"<option value=\"\"> No hay registros </option>"

} else { 
echo 
"<option value=\"\"> <-- Seleccione </option>"


mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 


echo "</select>\n\n"
 

?>
2. El codigo del envio de email:
Código PHP:
<?php 
$sfrom
="$email"//cuenta que envia 
$sdestinatario="xxxxxx"//cuenta destino 
$ssubject="Contacto desde el website"//subject 
$shtml="<html> 
<head>
<title>Mensaje para Pedro Lopes</title> 
</head> 
<body>
<b>Contenido del mensaje...</b><br><br> 
<b>Nombre completo:</b> "
.$nombre."<br>
<b>Sexo:</b> "
.$sexo."<br>
<b>Edad:</b> "
.$edad."<br>
<b>Correo electrónico:</b> "
.$email."<br>
<b>País:</b> "
.$id_padre."<br>
<b>Estado / Region:</b> "
.$id_hija."<br>
<b>Dirección:</b> "
.$direccion."<br>
<b>No. de Teléfono:</b> "
.$telefono."<br>
<b>No. de Movil:</b> "
.$movil."<br>  
<b>Mensaje:</b> "
.$comentarios."<br>
</body> 
</html>"
//mensaje 
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html";
$sheader=$sheader."charset=iso-8859-1"
mail($sdestinatario,$ssubject,$shtml,$sheader); 
?>
Lo que se me ocurre es, para no modificar el codigo 1, insertar de alguna manera e php en el codigo 2, en la parte de <b>País:</b> ".$id_padre."<br>
<b>Estado / Region:</b> ".$id_hija."<br> una consulta a base de datos para con un if isset Id, poder mostrar el name (campo de la tabla)

O pues, en su defecto, modificar el codigo 1 para que en el option value, me pase el name, no el Id

Espero me puedan colaborar, gracias
  #2 (permalink)  
Antiguo 04/09/2005, 09:50
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Imposible??????????
  #3 (permalink)  
Antiguo 05/09/2005, 07:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tal cual lo usas .. en tu código que envias el e-mail tendras que volver a consultar a tu tablas de tu BD para obtener el nombre del Pais/estado en función del n° de Identificador de registro que obtuvistes antes. Es lo más sano que puedes hacer y a la vez lo más simple.

Tan sólo tienes que hacer una consulta SQL tipo:
Código PHP:
$sql_pais="SELECT * FROM countries WHERE country_id='".$id_padre."'"
$pais=mysql_query($sql_pais);
$pais=mysql_result($pais_resultado,0,"name"); 
Y donde dice:
Código PHP:
<b>País:</b".$id_padre."<br>
// usas
<b>País:</b".$pais."<br
Lo mismo con el otro dato de estado...

Un saludo,
  #4 (permalink)  
Antiguo 05/09/2005, 19:42
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Gracias Cluster...

La idea de tu codigo esta correcta y funciona pero corrigiendo un detalle. Me tome el atrevimiento de corregir tu codigo asi:

Código PHP:
$sql_pais="SELECT * FROM countries WHERE country_id='".$id_padre."'"
$pais_resultado=mysql_query($sql_pais,$conexion); 
$pais=mysql_result($pais_resultado,0,"name"); 
Asi funciono de maravilla... muchas gracias por tu ayuda
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:30.