Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/09/2005, 15:23
iarrieta
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
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