Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Campo separado por coma

Estas en el tema de Campo separado por coma en el foro de Mysql en Foros del Web. Saludos. Dios quiera que alguien pueda ayudarme tengo un problema con un formulario, el formulario se basa en 3 campos SENDER, RECIPIENT, Message, Estos tres ...
  #1 (permalink)  
Antiguo 18/04/2012, 15:05
 
Fecha de Ingreso: febrero-2012
Ubicación: Jalisco Mexico
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Campo separado por coma

Saludos.

Dios quiera que alguien pueda ayudarme tengo un problema con un formulario, el formulario se basa en 3 campos SENDER, RECIPIENT, Message,

Estos tres datos se guardan en una base de datos el problema que tengo que es que necesito guardar cada numero que se coloca en el recipient separado por comas en un solo campo en la base de datos pero adjuntando los 2 campos adicionales de sender y message tambien.

Esta serie se me ha complicado mucho y agradeceria cualquier ayuda gracias de antemano.

Codigo del Formulario

Código:
<html>
<h1>Enviar Mensajes</h1>
    <ul>
  <li>
    <h5><strong>Introdusca Su Nombre de Usuario para validar la seguridad </strong></h5>
  </li>
  <li>
    <h5><strong>Introdusca el Numero de Destino</strong></h5>
  </li>
  <li>
    <h5><strong>Introdusca su mesaje con un maximo de 160 caracteres.</strong></h5>
  </li>
  
</ul>
<p>

<form method="GET" action='enviar_sms.php'>
  <table border="0" cellspacing="10">
    <tr>
      <td>Usuario</td>
      <td><input type='text' name='from' value="<? echo $_SESSION['usuario_login'] ?>" /></td>
    </tr>
    <tr>
      <td>Numero</td>
      <td>
     <input type='text' size="10"  maxlength="10" name='recipient' /></td>
    </tr>
    <tr>
      <td>Message</td>
      <td>
	  <textarea name="message" onkeyup="contar(this);" cols="50" rows="8" name="descripcion"> </textarea><br /><span id="letras">160/160 caracteres</span> <SCRIPT language="JavaScript" type="text/javascript">

function contar(input) {
//Comprobamos que no pase de 3000 caracteres y si pasa, que borre los sobrantes
if (input.value.length >= 160) {
input.value = input.value.substring(0,160);
}
//alamacenamos el resto
var resto = 160 - input.value.length;
 
//imprimimos los caracteres restantes en el span
var final=document.getElementById('letras');
final.innerHTML=resto+"/160 caracteres";
 
}

</script>
          </td></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="hidden" name="submitted" value="true" />
          <input type="submit" name="submit" value="Send" /></td>
    </tr>
  </table>
</form>
</html>
este es el codigo php para guardar el formulario en la base de datos ç

Código:
<?
// get form data 
$sender = $_GET ['from'];
$recipient = $_GET['recipient'];
$message =  $_GET ['message'];
$recipient2= split(“,”,$recipient); 




if ($recipient<>'') {

  $conn = mysql_connect("localhost", 'root', 'xxxx');
  if (!$conn) {
    die('Could not connect to database ' . mysql_error());
  }

  mysql_select_db('biiliing');
  $sql = "INSERT INTO db_biiling(sender,receiver,msg,status) ".
         "VALUES ('$sender','$recipient2','$message','send')";
  mysql_query($sql);
  mysql_close($conn);

  echo "<br />Su mensaje ha sido enviando. <br><br>";
}
?>
  #2 (permalink)  
Antiguo 19/04/2012, 06:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Campo separado por coma

Lo que tienes entre manos es un error de diseño desde el punto de vista de las bases de datos: Nunca se guardan datos multivaluados. Están prohibidos en el modelo (reprobarías el examen final con sólo proponerlo).
Hay dos formas de manejar la cosa:
1) Haces un campo text donde puedas guardar el conjunto total, sin discriminar, en el formato que te guste. Es una mala idea, no sirve para hacer consultas y lo único que te traerá serán problemas.
2) Creas dos tablas, una para los mensajes, donde pones el Remitente y el mensaje, y la otra relacionada con el mensaje, donde pones los receptores del mensaje, uno por registro, y cada uno relacionado con el mensaje que se le envió. Eso sería ortodoxo, funcional y optimizado. Te servirá luego para cualquier tipo de consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, split
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 08:31.