Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Enviar datos obtenidos de un select multiple

Estas en el tema de Enviar datos obtenidos de un select multiple en el foro de PHP en Foros del Web. Buenas tengo este codigo. Código PHP: <select name="destinatario[]" size="30" multiple="multiple" class="chosen-select" id="destinatario" style="font-family:Tahoma, Geneva, sans-serif; font-size:10px; text-align:left;height:30px;" tabindex="2"/>        <?php      $sql  =  mysql_query ( "SELECT * FROM destinatarios Order By nombre" );                 while ( $dato =  mysql_fetch_array ( $sql ))              { ...
  #1 (permalink)  
Antiguo 03/08/2016, 09:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 23
Antigüedad: 19 años
Puntos: 1
Enviar datos obtenidos de un select multiple

Buenas tengo este codigo.
Código PHP:
<select name="destinatario[]" size="30" multiple="multiple" class="chosen-select" id="destinatario" style="font-family:Tahoma, Geneva, sans-serif; font-size:10px; text-align:left;height:30px;" tabindex="2"/>
      <?php 
    $sql 
mysql_query("SELECT * FROM destinatarios Order By nombre");
           
    while (
$datomysql_fetch_array($sql)) 
       
    {
        
?>
      <option value=" <?php echo $dato['cedula']." ".$dato['nombre']; ?> " > <?php echo $dato['cedula']." ".$dato['nombre']."\n"?> </option>
      <?php
    
}    
    
?>
    </select>
Ese código hace la funcion como cuando ingresan varios email en un solo input, el problema lo tengo al momento de guardar en la base de datos (tabla)

como obtengo el arreglo ej: 1234567 fulatinodetal

como separar cedula, nombre, que se ubique en cada campo en cascada, yo coloque este codigo

Código PHP:
$ced=$_POST['destinatario'];
$dest=$_POST['destinatario'];


for (
$i=0,$j=0;$i<count($ced),$j<count($dest);$i++,$j++)
{  
mysql_query("INSERT INTO corres_recibidas_dest (nro_com, cedula, nombre) VALUES ('$nro_com', '$ced[$i]', '$dest[$j]')") or die(mysql_error());
    } 
Pero lo guarda de la siguiente manera imaginando la tabla

------------------------------------------------------
cedula | nombre |
------------------------------------------------------
1234567 fulatinodetal | 1234567 fulatinodetal |
--------------------------- | -----------------------|


Espero de su ayuda. Gracias

Última edición por digracom; 03/08/2016 a las 09:54
  #2 (permalink)  
Antiguo 03/08/2016, 10:12
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Enviar datos obtenidos de un select multiple

Veamos en cada elemento del array() llevas:

1234567 fulatinodetal

para separar esto en cada paso del for deberias usar explode();

Código PHP:
Ver original
  1. $recibes_array = $_POST['destinatario'];
  2.  
  3. for ($i=0,$j=0;$i<count($recibes_array),$j<count($recibes_array);$i++,$j++)
  4. {
  5. $separar = explode(" ", $recibes_array[$i]); // separamos ambos elementos por el espacio
  6. $ced = $separar[0];
  7. $dest = $separar[1];
  8.  
  9. mysql_query("INSERT INTO corres_recibidas_dest (nro_com, cedula, nombre) VALUES ('$nro_com', '$ced', '$dest')") or die(mysql_error());
  10.  
  11.     }

algo asi tendria que funcionar, si esta mal, corrigelo... espero haberte dado la idea
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 03/08/2016, 11:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 23
Antigüedad: 19 años
Puntos: 1
Respuesta: Enviar datos obtenidos de un select multiple

Saludos y muchas Gracias
me funciono perfecto, pero lo único que me trae es el nombre mas no el apellido,
ej: fulanito
debiera de ser
fulanito sutanito

ya que al hacer la consulta a la tabla esta completo el campo fulanito sutanito.

Gracias una vez mas..
  #4 (permalink)  
Antiguo 03/08/2016, 11:43
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Enviar datos obtenidos de un select multiple

Claro, bueno en el ejemplo solo estaba un nombre, para ese caso tendrias que modificar esta linea con otro delimitante en el value, ejemplo barra "|" quedaria asi:

Código PHP:
Ver original
  1. <option value=" <?php echo $dato['cedula']."|".$dato['nombre']; ?> " > <?php echo $dato['cedula']." ".$dato['nombre']."\n"; ?> </option>

Y luego en otro codigo que recibe, cambiamos en explode a "|":

Código PHP:
Ver original
  1. $recibes_array = $_POST['destinatario'];
  2.  
  3. for ($i=0,$j=0;$i<count($recibes_array),$j<count($recibes_array);$i++,$j++)
  4. {
  5. $separar = explode("|", $recibes_array[$i]); // separamos ambos elementos por el espacio
  6. $ced = $separar[0];
  7. $dest = $separar[1];
  8.  
  9. mysql_query("INSERT INTO corres_recibidas_dest (nro_com, cedula, nombre) VALUES ('$nro_com', '$ced', '$dest')") or die(mysql_error());

Asi deberia funcionarte perfectamente....

saludos!
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 03/08/2016, 15:22
 
Fecha de Ingreso: mayo-2005
Mensajes: 23
Antigüedad: 19 años
Puntos: 1
De acuerdo Respuesta: Enviar datos obtenidos de un select multiple

Saludos y una vez mas Gracias
Solucionado..

Etiquetas: mysql, select, sql, tabla
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 09:37.