Foros del Web » Programando para Internet » PHP »

Problema con envio de datos PHP

Estas en el tema de Problema con envio de datos PHP en el foro de PHP en Foros del Web. Hola a todos, tengo un problema, resulta que estoy trabajando con unos selects dependientes, estos reciben informacion de 4 tablas distintas MySQL, al momento de ...
  #1 (permalink)  
Antiguo 19/05/2010, 12:37
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Problema con envio de datos PHP

Hola a todos, tengo un problema, resulta que estoy trabajando con unos selects dependientes, estos reciben informacion de 4 tablas distintas MySQL, al momento de enviar la informacion a un email, el mensaje es el valor de cada select, el problema es que para que estos selects dependientes funcionen usan un numero que se encuentra en una columna llamada "relacion", esta columna se encuentra en las 3 ultimas tablas dependientes y bueno.. pues las relaciona para poder mostrar la informacion.

Entonces, el mensaje muestra solo el numero de relacion y no el dato de la columna "opcion" que es lo que interesa.

Durante el prosesamiento de la informacion para enviarla al email intente hacer de nuevo la consulta a las tablas, para que de acuerdo al id de la columa "relacion" sacarle el dato a la columna "opcion", este es el codigo, pero me marca ERROR.

Código PHP:
Ver original
  1. <?php
  2.     include("configuracion.inc.php");  
  3.     $link=conectar($bd_host,$bd_usuario,$bd_pwd,$bd_nombre);
  4.  
  5.     $destino=$_POST['destino'];
  6.     $estado=$_POST['nivel1'];
  7.     $municipio=$_POST['nivel2'];
  8.     $colonia=$_POST['nivel3'];
  9.     $postal=$_POST['nivel4'];
  10.  
  11.     global $link;
  12.     mysql_query("SET NAMES 'utf8'");
  13.     $sql="
  14.     SELECT
  15.         *
  16.     FROM
  17.         ESTADOS,
  18.         MUNICIPIOS,
  19.         COLONIAS
  20.     WHERE
  21.         ESTADOS.id='$estado'
  22.     AND
  23.         MUNICIPIOS.relacion='$municipio'
  24.     AND
  25.         COLONIAS.relacion='$colonia'";
  26.     $result=mysql_query($sql,$link);
  27.     $cuerpo="";
  28.         if(mysql_num_rows($result)>0){
  29.             $cuerpo.="
  30.                 <p>Estado: " . $r->ESTADOS.opcion . "</p>
  31.                 <p>Municipio: " . $r->MUNICIPIOS.opcion . "</p>
  32.                 <p>Colonia: " . $r->COLONIAS.opcion . "</p>
  33.                 <p>Codigo Postal: " . $postal . "</p>";
  34.         }else $cuerpo="ERROR";
  35.         echo $cuerpo;
  36.  
  37.     mail($destino,"Mensaje de prueba",$cuerpo,"MIME-Version: 1.0\nContent-type: text/html; charset=UTF-8\nFrom: ".$estado." < http://www >");
  38.    
  39.     echo "<div style=\"padding:4px;text-align:center;\">\n Notificación realizada</div>";
  40. ?>

Alguien me pudiera echar una mano para decirme en donde estoy mal y asi terminar el script?

Saludos.
  #2 (permalink)  
Antiguo 19/05/2010, 13:07
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Problema con envio de datos PHP

No se si le entendi pero cre oque lo que esta pasando es lo siguietne

usted crea las opciones del select de esta manera.

<option value="3">Panama</option>

Donde 3 es el codigo que relaciona con las otrsa tablas pero a su vez es el identificador del pais panama y por lo tanto el value del option

Cuando una persona selecciona Panama internamente usted va a recibir el 3 no la palabra Panama.

Lo que debe hacer es coger ese tres e ir a mirar en la tabla paises que Pais tiene como codigo el numero 3 y asi obtener "Panama".

La otra seria colocar en el value del option no el codigo sino el nombre pero todo depende si despues de enviar el mail necesite hacer algun proceso o algo asi con estos datos le haria falta el codigo.

<option value="Panama">Panama</option>

espero me entienda y sea la solución a su pregunta. Saludos
  #3 (permalink)  
Antiguo 19/05/2010, 13:11
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envio de datos PHP

Hola helacer, si en efecto como lo planteaste en un principio es lo que se hace he intento hacer con mi codigo PHP, recibo el codigo que lo relaciona, ahora.. despues de recibirlo intento hacer una ultima consulta para sacar el dato de relacion a ese codigo, que en este caso y como lo pone de ejemplo seria "Panama" (suponiendo).

Pero el codigo que tengo esta mal en su sintaxis, entonces necesitaria saber el error, pero si, la idea es la misma que planteaste.

Saludos.
  #4 (permalink)  
Antiguo 19/05/2010, 14:15
 
Fecha de Ingreso: junio-2008
Mensajes: 87
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con envio de datos PHP

primero me parece que esta query esta mal
Código PHP:
$sql="
    SELECT
        *
    FROM
        ESTADOS,
        MUNICIPIOS,
        COLONIAS
    WHERE
        ESTADOS.id='$estado'
    AND
        MUNICIPIOS.relacion='$municipio'
   AND
        COLONIAS.relacion='$colonia'"

deberias especificar bien como joinear las tablas, dependiendo de los nombres de campos que utilizes esto puede traerte datos erroneos.
ademas te da un idea de como es que se relacionan las tablas que aqui, no se ve.

lo que yo creo que te esta pasando es que el mysql debe estar tomando el campo "relacion" para jacer el join entonces esta buscando que en para las 3 tablas exista un registro donde ese campo valga lo mismo y como no lo encuetra te tira al "ERROR" por esta parte del codigo
Código PHP:
if(mysql_num_rows($result)>0){
...
}else 
$cuerpo="ERROR";
        echo 
$cuerpo
ahora... yo diria que esas tablas se realcionan asi:
la tabla estado es la master: despues para cada estado hay muchos municipios y para cada municipio hay muchas colonias con lo cual el join seria algo asi
Código:
  SELECT * FROM ESTADOS
  LEFT JOIN MUNICIPIOS ON ESTADOS.ID = MUNICIPIOS.RELACION
  LEFT JOIN COLONIA ON MUNICIPIOS.ID = COLONIAS.RELACION
WHERE COLONIAS.ID = {$COLONIA}
mas o menos, si queres podes poner en el where el estado y el municipio pero seria redundante... dado que una colonia deberia pertenecer solo a un municipio y estado

buscalo por ahi el problema...
ahora un consejo... no le pongas "relacion" al nombre del campo por que despues no sabes que era... cuando vengas a mirar el codigo en 6 meses me contas... mas vale ponele id_[nombre_tabla_relacionada]

espero te sea de ayuda... saludos
  #5 (permalink)  
Antiguo 19/05/2010, 14:18
 
Fecha de Ingreso: junio-2008
Mensajes: 87
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con envio de datos PHP

ahh y otro cosa que me olvidaba me parece (estoy 99% seguro) que para que el mysql_num_rows te devuelva algo tenes que poner esto en el query SQL_CALC_FOUND_ROWS
si no no te devuelve nada...
  #6 (permalink)  
Antiguo 19/05/2010, 15:19
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envio de datos PHP

Ahh valla! bueno gracias por tu tiempo, lo intentare y luego te comento, gracias y saludos!

Etiquetas: envio
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 12:08.