Foros del Web » Programando para Internet » PHP »

guardar valores desde un select

Estas en el tema de guardar valores desde un select en el foro de PHP en Foros del Web. hola junto con saludarlos me dirijo a ud , con una problematica que se me ha planteado en el desarrollo de un proyecto , el ...
  #1 (permalink)  
Antiguo 02/03/2011, 14:15
Avatar de xaskon23  
Fecha de Ingreso: febrero-2011
Mensajes: 61
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta guardar valores desde un select

hola junto con saludarlos me dirijo a ud , con una problematica que se me ha planteado en el desarrollo de un proyecto , el problema consiste en como poder guardar el valor de un select cargado desde una base de datos en dos campos distintos , me explico el formulario carga el nombre , pero guarda el codigo ,
como se puede hacer para guardar tambien el nombre pero en otro campo??

en terminos mas simples :

se posee una base de datos:




carga de datos en formulario :




codigo que muestra los datos desde la base de datos

Código:
  <select name="ciudad" id="ciudad">
                <option>Seleccione Uno...</option>
                <option value=" <?php echo $row_clase['Clase_cod']?>" <?php echo $row_clase['Clase_nombre']?></option>
                <?php
do {  
?>
                <?php
} while ($row_clase = mysql_fetch_assoc($clase));
  $rows = mysql_num_rows($clase);
  if($rows > 0) {
      mysql_data_seek($clase, 0);
	  $row_clase = mysql_fetch_assoc($clase);
  }
?>
              </select>
que luego lo procesa en este formulario y los almacena en la base de datos :


Código:
<?php
include("scripts/clases/conexion2.php"); 
$link=Conectarse(); 
$area=$_POST['pais']; 
$subfamilia=$_POST['estado']; 
$recinto=$_POST['rec'];
$clase=$_POST['ciudad'];
$codigo=$_POST['codigo'];
$folio=$_POST['folio']; 
$marca=$_POST['marca']; 
$modelo=$_POST['modelo']; 
$serie=$_POST['serie']; 
$uso=$_POST['Cab_Uso']; 
$estado=$_POST['Cab_estado']; 
$comp=$_POST['Cab_compatibilidad']; 

// aqui van las otras capturas de lo ingresado en el formulario.
;


mysql_query("REPLACE into movimiento (Cab_cod_inter,Cab_folio,Cab_Marca,Cab_Modelo,Cab_Serie,Cab_Uso,Cab_estado,Cab_compatibilidad,Cab_Observacion,Cab_fecha,Cab_cant,Recinto_cod_FK,Car_cod_FK,Clase_cod_FK,SubFam_cod,des_cod_clase) 
			values($codigo,$folio,'$marca','$modelo','$serie','$uso','$estado','$comp','$obs','$fecha2',$cant,$recinto,$carr,$clase,$subfamilia,$clase2)",$link)or die(mysql_error());

include("ingresos.php");

echo "<script type=''>
	alert('Los datos fueron ingresados correctamente');
	window.location='ingresos.php';
</script>";
?>
abra alguna forma , no se de crear una variable o algo para poder hacer esto posible??? , que guarde los datos (codigo y nombre) en dos campos distintos de una base de datos pero con un mismo select???


de antemano muchas gracias....
  #2 (permalink)  
Antiguo 03/03/2011, 00:19
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: guardar valores desde un select

Podrias poner un hidden e intentar ayudarte de javascript para que cuando el select sea cambiado, el hidden contenga el valor (en texto) de esa lista. Alguna funcion como:
Código HTML:
<script>
	function cargaHidden(val){
		document.getElementById('nombreSelect').value = val;
	}
</script>
<html>
	<select name="ciudad" id="ciudad" onChange="cargaHidden(this.options[this.selectedIndex].text">
		<!--aca tu php-->
	</select>
	<input type="hidden" id="nombreSelect">
	<!--este input ponlo de type="text" para ver si funciona-->
</html> 
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 03/03/2011, 09:12
Avatar de xaskon23  
Fecha de Ingreso: febrero-2011
Mensajes: 61
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: guardar valores desde un select

Cita:
Iniciado por Marvin Ver Mensaje
Podrias poner un hidden e intentar ayudarte de javascript para que cuando el select sea cambiado, el hidden contenga el valor (en texto) de esa lista. Alguna funcion como:
Código HTML:
<script>
	function cargaHidden(val){
		document.getElementById('nombreSelect').value = val;
	}
</script>
<html>
	<select name="ciudad" id="ciudad" onChange="cargaHidden(this.options[this.selectedIndex].text">
		<!--aca tu php-->
	</select>
	<input type="hidden" id="nombreSelect">
	<!--este input ponlo de type="text" para ver si funciona-->
</html> 
Suerte!
en primer lugar queria agradecer la ayuda!! .. se agradece enormemente ... en realidad muchas gracias ... pero ise lo que decia tu ejemplo , cambiando el valor del input por type para probar si funcionaba , pero no me cargaba el dato en si

te dejo algunas imagenes , y fragmentos del codigo , por si esta el problema en otro lado.

codigo del formulario que carga los datos desde la bd:

Código:
 <tr>
            <td>&nbsp;</td>
            <td height="26"><strong>Clase(*):</strong></td>
            <td colspan="2"><span id="spryselect4">
              <select name="ciudad" id="ciudad" onChange="cargaHidden(this.options[this.selectedIndex].text">
                <option>Seleccione Uno...</option>
                <option value="<?php echo $row_clase['Clase_cod']?>"<?php echo $row_clase['Clase_nombre']?></option>
                <?php
do {  
?>
                <?php
} while ($row_clase = mysql_fetch_assoc($clase));
  $rows = mysql_num_rows($clase);
  if($rows > 0) {
      mysql_data_seek($clase, 0);
	  $row_clase = mysql_fetch_assoc($clase);
  }
?>
</select>
</select>
	<input type="text" id="nombreSelect">    
            <span class="selectRequiredMsg">Seleccione un elemento.</span></span></td>
            <td>&nbsp;</td>
          </tr>
foto de la imagen del formulario que muestra en la parte que dice clase el elemento correspondiente al campo de texto :




codigo que procesa y guarda los datos del otro formulario :

Código PHP:
<?php
include("scripts/clases/conexion2.php"); 
$link=Conectarse(); 
$area=$_POST['pais']; 
$subfamilia=$_POST['estado']; 
$recinto=$_POST['rec'];
$clase=$_POST['ciudad'];
$clase2=$_POST['nombreSelect']; //clase 2 ingreso del nombre de la clase!! ******* 
$codigo=$_POST['codigo'];
$codigo2=$_POST['codigo_interno'];
$folio=$_POST['folio']; 
$marca=$_POST['marca']; 
$modelo=$_POST['modelo']; 
$serie=$_POST['serie']; 
$uso=$_POST['Cab_Uso']; 
$estado=$_POST['Cab_estado']; 
$comp=$_POST['Cab_compatibilidad']; 
$obs=$_POST['observacion']; 
//$fecha=$_POST['fecha']; 
$cant=$_POST['cantidad']; 
$carr=$_POST['carrera']; 
$dia=$_POST['dia'];
$mes=$_POST['mes'];
$año=$_POST['año'];
$fecha2="$dia/$mes/$año";


            
//ingresa un dato nuevo a la base de datos

mysql_query("REPLACE into movimiento (Cab_cod_inter,Cab_folio,Cab_Marca,Cab_Modelo,Cab_Serie,Cab_Uso,Cab_estado,Cab_compatibilidad,Cab_Observacion,Cab_fecha,Cab_cant,Recinto_cod_FK,Car_cod_FK,Clase_cod_FK,SubFam_cod,des_cod_clase,codigo) 
            values($codigo,$folio,'$marca','$modelo','$serie','$uso','$estado','$comp','$obs','$fecha2',$cant,$recinto,$carr,$clase,$subfamilia,$clase2,$codigo2)"
,$link)or die(mysql_error());

include(
"ingresos.php");

echo 
"<script type=''>
    alert('Los datos fueron ingresados correctamente');
    window.location='ingresos.php';
</script>"
;
?>
de nuevo muchas gracias por la ayuda!!! ..
  #4 (permalink)  
Antiguo 03/03/2011, 18:09
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: guardar valores desde un select

Aca te falta un cierre de parentesis:
cargaHidden(this.options[this.selectedIndex].text)

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 03/03/2011, 18:43
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: guardar valores desde un select

No sé si entendí bien el problema, pero una opción menos complicada sería:
<option value=" <?php echo $row_clase['Clase_cod']."~".$row_clase['Clase_nombre']?>" <?php echo $row_clase['Clase_nombre']?></option>

De esta manera el select toma el valor del codigo y el nombre al mismo tiempo, y al recuperar dicho valor en el post se puede hacer:

$valor=explode("~",$_POST["ciudad"]);
$codigo=$valor[0];
$nombre=$valor[1];
  #6 (permalink)  
Antiguo 04/03/2011, 13:52
Avatar de xaskon23  
Fecha de Ingreso: febrero-2011
Mensajes: 61
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: guardar valores desde un select

En primer lugar tengo que agradecer a ambos por la ayuda prestada , muchas gracias x el tiempo y por sus respuestas .. en realidad muchas gracias .

:::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::

Cita:
Iniciado por ocp001a Ver Mensaje
No sé si entendí bien el problema, pero una opción menos complicada sería:
<option value=" <?php echo $row_clase['Clase_cod']."~".$row_clase['Clase_nombre']?>" <?php echo $row_clase['Clase_nombre']?></option>

De esta manera el select toma el valor del codigo y el nombre al mismo tiempo, y al recuperar dicho valor en el post se puede hacer:

$valor=explode("~",$_POST["ciudad"]);
$codigo=$valor[0];
$nombre=$valor[1];
En relacion a tu idea y sugerencia :

Código PHP:
              <select name="ciudad" id="ciudad">
                <option>Seleccione Uno...</option>
                <option value=" <?php echo $row_clase['Clase_cod']."~".$row_clase['Clase_nombre']?><?php echo $row_clase['Clase_nombre']?>></option>
                <?php 
do {  
?>
                <?php
} while ($row_clase mysql_fetch_assoc($clase));
  
$rows mysql_num_rows($clase);
  if(
$rows 0) {
      
mysql_data_seek($clase0);
      
$row_clase mysql_fetch_assoc($clase);
  }
?>
y el post :

Código PHP:
<?php
include("scripts/clases/conexion2.php"); 
$link=Conectarse(); 
$area=$_POST['pais']; 
$subfamilia=$_POST['estado']; 
$recinto=$_POST['rec'];
//$clase=$_POST['ciudad'];
//******** prueba *****
$valor=explode("~",$_POST["ciudad"]);
$clase=$valor[0];
$clase2=$valor[1];


//$clase2=$_POST['nombre']; //clase 2 ingreso del nombre de la clase!! ******* 
$codigo=$_POST['codigo'];
//$codigo2=$_POST['codigo_interno'];
$folio=$_POST['folio']; 
$marca=$_POST['marca']; 
$modelo=$_POST['modelo']; 
$serie=$_POST['serie']; 
$uso=$_POST['Cab_Uso']; 
$estado=$_POST['Cab_estado']; 
$comp=$_POST['Cab_compatibilidad']; 
$obs=$_POST['observacion']; 
//$fecha=$_POST['fecha']; 
$cant=$_POST['cantidad']; 
$carr=$_POST['carrera']; 
$dia=$_POST['dia'];
$mes=$_POST['mes'];
$a&#241;o=$_POST['año'];
$fecha2="$dia/$mes/$año";
            
            
//ingresa un dato nuevo a la base de datos

mysql_query("REPLACE into movimiento (Cab_cod_inter,Cab_folio,Cab_Marca,Cab_Modelo,Cab_Serie,Cab_Uso,Cab_estado,Cab_compatibilidad,Cab_Observacion,Cab_fecha,Cab_cant,Recinto_cod_FK,Car_cod_FK,Clase_cod_FK,SubFam_cod,des_cod_clase) 
            values($codigo,$folio,'$marca','$modelo','$serie','$uso','$estado','$comp','$obs','$fecha2',$cant,$recinto,$carr,$clase,$subfamilia,$clase2)"
,$link)or die(mysql_error());

include(
"ingresos.php");

echo 
"<script type=''>
    alert('Los datos fueron ingresados correctamente');
    window.location='ingresos.php';
</script>"
;
?>
en la cual al ejecutar el programa me aparece el siguiente mensaje :



teniendo el problema en las lineas que indica el mensaje , te dejo el nuemero de lineas y su contenido :



junto con agradecer tu ayuda la consulta es la siguiente , por que se dara ese problema?? .. como se puede hacer para solucionarlo o algun consejo!! .. y de nuevo muchas gracias por tu ayuda!! ..

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::

Cita:
Iniciado por Marvin Ver Mensaje
Aca te falta un cierre de parentesis:
cargaHidden(this.options[this.selectedIndex].text)

Suerte!
respecto a tu ayuda , le agrege el cierre del parentesis , y el resultado fue similar , es decir no cargaba en el input hiden trasformado a text NombreSelect .

:::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::


sinceramente muchas gracias por sus ayuda , se agredece una enormidad

Etiquetas: guardar
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 16:03.