Foros del Web » Programando para Internet » PHP »

Problema con option Value y PHP

Estas en el tema de Problema con option Value y PHP en el foro de PHP en Foros del Web. Hola tengo este codigo donde le puse multiple para poder elegir mas de un registro pero cuando hace el insert solo me pone el primero ...
  #1 (permalink)  
Antiguo 06/03/2012, 09:02
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Problema con option Value y PHP

Hola tengo este codigo donde le puse multiple para poder elegir mas de un registro pero cuando hace el insert solo me pone el primero que elegi , que puedo hacer para que me los tome como dos o mas registros diferentes segun la cantidad de opciones que elija



formulario.php
Código PHP:

<select name="empleados" id="empleados" multiple>
                          <?php
do {  
?>
                          <option value="<?php echo $row_emp['nombrecompleto']."|".$row_emp['foto']."|".$row_emp['email']; ?>"<?php if (!(strcmp($row_emp['nombrecompleto'], $row_emp['nombrecompleto']))) {echo "SELECTED";} ?>><?php echo $row_emp['nombrecompleto']?></option>
                          <?php
                          
                        


} while ($row_emp mysql_fetch_assoc($emp));
  
$rows mysql_num_rows($emp);
  if(
$rows 0) {
      
mysql_data_seek($emp0);
      
$row_emp mysql_fetch_assoc($emp);
  }
?>
                        
                        
                      </select>


action.php


Código PHP:




if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO tareas (empleado, titulo, descripcion,  fechadecarga, verde, amarillo, rojo, dif,  email) VALUES ('$separar[0]',  %s, %s, '$tiempo', '$verde', '$amarillo', '$rojo', '$diferencia', '$separar[2]')",
                       
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['detalle'], "text")); 
  #2 (permalink)  
Antiguo 06/03/2012, 09:39
 
Fecha de Ingreso: febrero-2012
Ubicación: En mi propio mundo
Mensajes: 73
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Problema con option Value y PHP

Cambia
Código HTML:
Ver original
  1. <select name="empleados" id="empleados" multiple>
por
Código HTML:
Ver original
  1. <select name="empleados[]" id="empleados" multiple>

Con esto lo que estas haciendo que $_POST["empleados"] sea un array con los valores multiples escogidos. Por tanto podemos acceder a todos los valores escogidos en el cuadro de selección mediante el indice.

Si por ejemplo tenemos

Código HTML:
Ver original
  1. <select name="asignatura[]" id="empleados" multiple>
  2.     <option  value="Mates">Mates</option>
  3.     <option  value="Lengua">Lengua</option>
  4.     <option  value="Naturales">Naturales</option>

Si seleccionamos Mates y Naturales
$_POST["asignatura"] [0] = Mates
$_POST["asignatura"] [1] = Naturales

La forma mas correcta para acceder a todos los valores seria
Código PHP:
if (isset($_POST['asignatura']))
{
   
$asignaturas $_POST['asignatura'];
   foreach (
$asignaturas as $value)
  {
     
//Visualizamos los elementos del array
     
echo $value."<br>";  
   }

  #3 (permalink)  
Antiguo 06/03/2012, 10:09
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problema con option Value y PHP

Hola Gracias , puse empleados[] y me guarda el registro como array , probe poner lo que me pasaste de asignatura en action.php pero sigo con el mismo problema te pido disculpas por la molestia quizas estoy hacviendo algo mal





action.php
Código PHP:




<?php require_once('Connections/localhost.php'); ?>

 <?php $tiempo date("Y-m-d ");  ;
  
  

                
$can_dias ;
                
$can_dias2 ;
                
$can_dias3 ;
                
                
                
$f1 date("Y-m-d") ;
                
                
$tiempo2 date("Y-m-d"strtotime("$f1 - $can_dias3 days")); 
                
$verdedate("Y-m-d"strtotime("$f1 + $can_dias days")); 
                
$amarillodate("Y-m-d"strtotime("$f1 + $can_dias2 days")); 
                
$rojodate("Y-m-d"strtotime("$f1 + $can_dias3 days")); 
                
                
$verde2date("Y-m-d"strtotime("$tiempo2 - $can_dias days")); 
                
$amarillo2date("Y-m-d"strtotime("$tiempo2 - $can_dias2 days")); 
                
$rojo2date("Y-m-d"strtotime("$tiempo2 - $can_dias3 days")); 
                
                
                
$diferencia $f1 $amarillo ;
                
                
                
                if (isset(
$_POST['empleados'])) 

   
$asignaturas $_POST['empleados']; 
   foreach (
$asignaturas as $value
  { 
     
//Visualizamos los elementos del array 
     
echo $value."<br>";   
   } 
}  

                
                
                  
$separar explode("|"$value); 

$nombre $separar[0]; 
$email $separar[1]; 
$foto $separar[2]; 
 
  echo 
$separar[0]; 
 echo 
$separar[2]; 


 

?>
<br />



<?php
$normal 
'normal' ;
$normal2 'normal2' ;



function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ( 
$_POST["estado"] == $normal

 {
 
 
 

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO tareas (empleado, titulo, descripcion,  fechadecarga, verde, amarillo, rojo, dif,  email) VALUES ('$separar[0]',  %s, %s, '$tiempo', '$verde', '$amarillo', '$rojo', '$diferencia', '$separar[2]')",
                       
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['detalle'], "text"));
                       

  
mysql_select_db($database_localhost$localhost);
  
$Result1 mysql_query($insertSQL$localhost) or die(mysql_error());

  
$insertGoTo "exitocarga.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}


}
 else  
 
 {
 
if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO tareas (empleado, titulo, descripcion,  fechadecarga, verde, amarillo, rojo, dif,  email ) VALUES ('$separar[0]',  %s, %s, '$tiempo2', '$verde2', '$amarillo2', '$rojo2', '$diferencia', '$separar[2]' )",
                       
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['detalle'], "text"));
                       

  
mysql_select_db($database_localhost$localhost);
  
$Result1 mysql_query($insertSQL$localhost) or die(mysql_error());

  
$insertGoTo "exitocarga.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}
}
 
 
mysql_select_db($database_localhost$localhost);
$query_emp "SELECT * FROM empleados";
$emp mysql_query($query_emp$localhost) or die(mysql_error());
$row_emp mysql_fetch_assoc($emp);
$totalRows_emp mysql_num_rows($emp);
?>
  #4 (permalink)  
Antiguo 06/03/2012, 18:42
 
Fecha de Ingreso: febrero-2012
Ubicación: En mi propio mundo
Mensajes: 73
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Problema con option Value y PHP

Bueno estás cometiendo varios fallos
Código PHP:
    
                
if (isset($_POST['empleados']))  
{  
   
$asignaturas $_POST['empleados'];  
   foreach (
$asignaturas as $value)  
  {  
     
//Visualizamos los elementos del array  
     
echo $value."<br>";    
   }  
}   

                 
                 
                  
$separar explode("|"$value);  

$nombre $separar[0];  
$email $separar[1];  
$foto $separar[2];  
  
  echo 
$separar[0];  
 echo 
$separar[2]; 
Con esto lo que estas haciendo es coger y visualizar solo el ultimo elemento seleccionado.
El foreach recorre todo el array asignaturas, visualizando su contenido. Cuando llega al ultimo elemento lo visualiza y termina el foreach.
Ahora value tiene el valor de la ultima posicion del array entiendes? Cuando el programa llega al explode lo que estas haciendo es hacer explode del valor del ultimo elemento del array asignatura.

Un ejemplo para que lo veas mas facil

el array esta asi
asignatura[0] = "pakito de los palotes | [email protected] | imgs/pakito.jpg"
asignatura[1] = "pakita de los melones | [email protected] | imgs/melon.jpg"
asignatura[2] = "juanito el canijo | [email protected] | imgs/juanito.jpg"

se ejecuta nuestra codigo

y se visualiza

pakito de los palotes | [email protected] | imgs/pakito.jpg
pakita de los melones | [email protected] | imgs/melon.jpg
juanito el canijo | [email protected] | imgs/juanito.jpg

ahora cuando llega a separar, y hace el explode . Despues de ejecutar los echos , en la web nos saldrá esto.

juanito el canijo imgs/juanito.jpg

Esto ocurre pq $value = al ultimo elemento del array asignatura ya que se ha recorrido por completo el array
  #5 (permalink)  
Antiguo 07/03/2012, 06:34
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problema con option Value y PHP

Muchas gracias Firefox por tu tiempo me ha sido muy util tu informacion , ahora entiendo por que solo me guardaba en el registro sql solo el ultimo

Que deberia corregir para que me los guarde todos en diferentes registros

actualmente tengo esto


Código PHP:


INSERT INTO tareas 
(empleadotitulodescripcion,  fechadecargaverdeamarillorojodif,  emailVALUES ('$separar[0]',  %s, %s'$tiempo''$verde''$amarillo''$rojo''$diferencia''$separar[2]'

gracias
  #6 (permalink)  
Antiguo 07/03/2012, 07:57
 
Fecha de Ingreso: febrero-2012
Ubicación: En mi propio mundo
Mensajes: 73
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Problema con option Value y PHP

Tienes que realizar el explode y ejecutar la consulta dentro del foreach
  #7 (permalink)  
Antiguo 07/03/2012, 08:02
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problema con option Value y PHP

pero el explode lo hago asi

$separar = explode("|",$value);


como hago la consulta dentro del foreach , perdon que no entienda
  #8 (permalink)  
Antiguo 07/03/2012, 09:05
 
Fecha de Ingreso: febrero-2012
Ubicación: En mi propio mundo
Mensajes: 73
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Problema con option Value y PHP

http://www.forosdelweb.com/wiki/Manual_de_PHP:_Bucles

http://www.forosdelweb.com/wiki/Manual_de_PHP:_MySQL
  #9 (permalink)  
Antiguo 07/03/2012, 11:04
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problema con option Value y PHP

entiendo el concepto de foreach , en $value tengo el array de los datos que necesito

pero estoy trabado

el explode lo hago bien por que me da asi

Federico Matias Bais|Federico Bais.jpg|[email protected]
NEIMAN LOURDES||[email protected]


pero no se como hacer la consulta dentro del foreach en la pagina que me diste no lo explica


si hago un echo $value solo me devuelve

NEIMAN LOURDES||[email protected]




por que ?

Etiquetas: formulario, mysql, option, registro, sql
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 07:11.