Comunidad de diseño web y desarrollo en internet online

Capturar nombre y enviar mensaje

Citar            
MensajeEscrito el 08 Dic 2010 10:59 pm
Hola gente, una vez mas su servilleta dando problemas.
Esta vez lo que quiero hacer y no hayo como lograrlo es que al enviar un mensaje y almacenarlo en la base de datos, el usuario escriba el alias de otro usuario y no su correo, que el servidor diga "ah es Roberto Carlos, el tiene el correo [email protected]" y le envie el mensaje al correo (ya que el correo es el correo es el que coordina todo el show entre las demas tablas).

Les pondria el codigo, pero no tengo ni idea de como va esto asi que ahora me atengo a su buena voluntad.

Gracias.

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 Dic 2010 12:45 am
Pues he estado picandole y he hecho esto,

Código PHP :

$nombreDestinatario = $_POST['Ndestinatario'];
$ArrayDestinatarios = explode(",", $nombreDestinatario,-1);
$TamanoArray = count($ArrayDestinatarios);

   for ($i=0; $i < $TamanoArray; $i++){
      $Udestinatario = $ArrayDestinatarios[$i];
         while($row = mysql_fetch_array($result)){
            if ($Udestinatario == $row['nombre']){
               $destinatario = $row['correo'];
   
         $sql = "INSERT INTO `mensajes` (`id` ,`asunto` ,`mensaje` ,`envia` ,`destinatario` ,`estado`, `fecha`)
         VALUES (NULL, '{$nombreAsunto}','{$contenidoMensaje}','{$correoCreador}', '{$destinatario}', '{$estadoMensaje}', CURDATE())"; 
         
         if (!mysql_query($sql,$con))  { die('Error: ' . mysql_error());  }
            }
         }
   } 



El asunto es que solo me guarda el primer valor del arreglo $ArrayDestinatarios[$i]; el segundo o los demas se los pasa por el arco del triunfo, ¿alguna sugerencia?

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 Dic 2010 08:28 pm
Aja, solo tenia que aclarce un monton mi mente y he dado con el resultado...

Primero debemos capturar en una variable los usuarios al que va a ser enviado el mensaje desde el formulario, luego dividimos la cadena en un array para saber a quienes va a ser enviado el mensaje, cambiamos el nombre del usuario por un correo que se asigno al usuario en la base de datos usuarios y enviamos ese mensaje almacenandolo en otra base de datos llamada mensajes.... asi puedo tener un mensaje que sera enviado a 10 destinatarios y - por fin despues de mucho esfuerzo, logre que - el mensaje les llegue correctamente.

Código PHP :

<?php

require('conectar.php');

if (strlen($_POST['Ndestinatario']) != "0")
{   
   $nombreAsunto = $_POST['Nasunto'];
   $nombreDestinatario = $_POST['Ndestinatario'];
   $correoCreador = $_POST['Ncorreo'];
   $estadoMensaje = "sin leer";
   $contenidoMensaje = $_POST['Nmensaje'];
   #$fechaMensaje = $_POST['Nfecha'];
   
   //crea y realiza la consulta
   $query = @mysql_query("SELECT * FROM usuarios ORDER BY id DESC") or die(mysql_error());
   $rowA = mysql_fetch_array($query);
   $limite = $rowA['id']; // limite de ciclos que hara tomando el valor del ultimo campo id de la tabla usuarios

   $ArrayDestinatarios = explode(", ", $nombreDestinatario,-1); // Separa los destinatarios en un arreglo
   $TamanoArray = count($ArrayDestinatarios); // determina la longitud del arreglo
   $L=0; // valor inicial para el limite del array $ArrayDestinatarios[$L] 
   
   for ($i=0; $i < $limite; $i++){ //hazlo mientras i sea menor que la longitud del arreglo
      
      $destinatario = $ArrayDestinatarios[$L]; //$destinatario toma el valor [$i] del arreglo de destinatarios
      $i++; //aumentamos i en uno para que coincida con el campo inicial de id
      $result = @mysql_query("SELECT nombre,correo FROM usuarios WHERE id = $i") or die(mysql_error()); 
      $row = mysql_fetch_array($result);
      
      if ( $row['nombre'] == $destinatario){ // si la columna nombre con el id[i] coincide con la variable destinatario entra   
         $destinoCorreo = $row['correo']; // asiganos el correo del usuario encontrado
         $L++; // aumentamos valor para el limite del array $ArrayDestinatarios[$L]
         
         // guardamos en la base de datos
         $sql = "INSERT INTO `mensajes` (`id` ,`asunto` ,`mensaje` ,`envia` ,`destinatario` ,`estado`, `fecha`)
         VALUES (NULL, '{$nombreAsunto}','{$contenidoMensaje}','{$correoCreador}', '{$destinoCorreo}', '{$estadoMensaje}', CURDATE())"; 
         
         if (!mysql_query($sql,$con))  { die('Error: ' . mysql_error());  }
      }
      $i--; // restamos a i uno para que coincida con el siguiente valor del arreglo
   } 

   header("Location: mensajes.php");
} else {
   header("Location: aplicacion.php#page=page-2");

}

?> 

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Dic 2010 02:42 am
Bueno, hice algunos cambios para que funcione sin importar el orden en que el usuario capture los nombres de las personas a las que les enviara el mensaje:

Código PHP :

<?php

require('conectar.php');

if (strlen($_POST['Ndestinatario']) != "0")
{   
   // variables recuperadas del formulario
   $nombreAsunto = $_POST['Nasunto'];
   $nombreDestinatario = $_POST['Ndestinatario'];
   $correoCreador = $_POST['Ncorreo'];
   $estadoMensaje = "sin leer";
   $contenidoMensaje = $_POST['Nmensaje'];
   
   //crea y realiza la consulta
   $query = @mysql_query("SELECT * FROM usuarios ORDER BY id DESC") or die(mysql_error());
   $rowA = mysql_fetch_array($query); 

   $ArrayDestinatarios = explode(", ", $nombreDestinatario,-1); // Separa los destinatarios en un arreglo
   $TamanoArray = count($ArrayDestinatarios); // determina la longitud del arreglo
   
   for ($i=0; $i < $rowA['id']; $i++){ //hazlo mientras i sea menor que la cantidad de registros de la tabla usuarios
      $L = 0;
      
      while ($L <= $TamanoArray){      
         
         //$destinatario = $ArrayDestinatarios[$i]; $destinatario toma el valor [$i] del arreglo de destinatarios

         $L++;
         $result = @mysql_query("SELECT nombre,correo FROM usuarios WHERE id = $L") or die(mysql_error()); 
         $row = mysql_fetch_array($result);
         
            if ( $row['nombre'] == $ArrayDestinatarios[$i]){ // si la columna nombre con el id[i] coincide con la variable destinatario entra   
               $destinoCorreo = $row['correo']; // asiganos el correo del usuario encontrado
               
                  // guardamos en la base de datos
                  $sql = "INSERT INTO `mensajes` (`id` ,`asunto` ,`mensaje` ,`envia` ,`destinatario` ,`estado`, `fecha`)
                  VALUES (NULL, '{$nombreAsunto}','{$contenidoMensaje}','{$correoCreador}', '{$destinoCorreo}', '{$estadoMensaje}', CURDATE())"; 
            
                  if (!mysql_query($sql,$con))  { die('Error: ' . mysql_error());  }
               
            }
      
      }
      
   } 

   header("Location: mensajes.php");
} else {
   header("Location: aplicacion.php#page=page-2");

}

?> 

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Dic 2010 08:09 am
De nada...

Por adam_dinzel

7 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.