Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] SELECT con varios values?

Estas en el tema de SELECT con varios values? en el foro de PHP en Foros del Web. Hola buenas, mi nombre es Dylan y acabo de registrarme en el foro. Siempre que he tenido alguna duda he mirado por aquí y se ...
  #1 (permalink)  
Antiguo 06/03/2013, 09:05
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
SELECT con varios values?

Hola buenas, mi nombre es Dylan y acabo de registrarme en el foro. Siempre que he tenido alguna duda he mirado por aquí y se ha solucionado fácilmente. Ahora estoy desarrollando una web PHP (bueno, ahora más bien puliendo algunos detalles) y al trabajar de esto me veo obligado a empezar a moverme más por estos mundillos. Espero ayudar y ser bienvenido :)

Mi duda es la siguiente:

En la página he de asignarles un valor a estos manuales para posteriormente ordenarlos con el ORDER BY de el 1 al 4 porque sino por alfabético no sería el orden adecuado. En el formulario de Añadir nuevo, en un desplegable hay 4 opciones (estas de aquí abajo) y recupero el "tipo" para así meterlo en la base de datos.
Código:
<form action="formularioManual.php" class="form" name="manual" method="post" enctype="multipart/form-data">
			<input type="submit" class="boton" style="width:120px;" value="Añadir nuevo"></input>
			<select name="tipo">
				<option value='MP'>Manual de Producción</option>
				<option value='PP'>Procedimientos</option>
				<option value='II'>Intrucciones</option>
				<option value='F'>Formatos</option>
			</select>
Llegados a este punto, me pregunto si podría asignarles tambien dentro del select un valor del 1 al 4 aparte del "tipo".

Me gustaría hacer algo tal que así:
Código:
<select name="tipo" name2="orden">
				<option value='MP' value2="1">Manual de Producción</option>
				<option value='PP' value2="2">Procedimientos</option>
				<option value='II' value2="3">Intrucciones</option>
				<option value='F' value2="4">Formatos</option>
			</select>
Espero haber sido lo bastante explícito, la verdad es que soy nuevo en esto del PHP. Gracias por la ayuda :)
  #2 (permalink)  
Antiguo 06/03/2013, 09:17
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: SELECT con varios values?

Podrías hacer es crear un array como valor, algo así:

Código HTML:
Ver original
  1. <option value="['MP',1]></option>
  2. <option value="['PP',2]></option>
  #3 (permalink)  
Antiguo 06/03/2013, 09:26
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: SELECT con varios values?

Y luego cómo tendría acceso al segundo valor? Con un $_POST? Esque luego, en el archivo Añadir archivo.php tengo esto:

Código:
if($_POST["action"] == "upload") {
	$edicion = $_POST['edicion'];
	$idusuario = $_SESSION['id'];
	$fecha = $_POST['fecha'];
    // obtenemos los datos del archivo
    $tamano = $_FILES["archivo"]['size'];
    $tipo = $_POST['tipo'];
    $archivo = trim($_FILES["archivo"]['name']);
	$archivo = limpiarString($archivo);
	$url="";
	$orden=$_POST['orden'];
Cómo puedo meter dentro de una variable el segundo valor? Gracias por la ayuda, sois muy rápidos! jaja

PD:Siento no ser tan tan específico, pero esque todavía ando algo verde...
  #4 (permalink)  
Antiguo 06/03/2013, 10:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: SELECT con varios values?

Si necesitas dos valores puedes pasarlos en un sólo campo:
Código HTML:
<input name="foo" value="candy,bar"> 
Y al recibir usando explode() así:
Código PHP:
list($var1$var2) = explode(','$_POST['foo']); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/03/2013, 08:11
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: SELECT con varios values?

Lo siento pero eso no me ha valido, me ingresa un valor de 0 en vez de el que pongo en el <option>.
  #6 (permalink)  
Antiguo 07/03/2013, 08:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: SELECT con varios values?

Pues sería cuestión de ver como haces las cosas, ya que dicha técnica funciona excelentemente, claro, si se usa bien.

¿Hay posibilidad de que adivinemos cómo haces las cosas para ver que haces mal?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/03/2013, 08:22
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: SELECT con varios values?

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues sería cuestión de ver como haces las cosas, ya que dicha técnica funciona excelentemente, claro, si se usa bien.

¿Hay posibilidad de que adivinemos cómo haces las cosas para ver que haces mal?
Traducción: Para que sea mas facil colaborarte y ya que eres nuevo en este foro nos es de mas utilidad para todos que nos muestres como has escrito el código tanto del formulario como el que recibe los datos para ver si el error es un simple error de sintaxis o por el contrario es un error de concepto.

Usa el highlight para que tu código salga en colores.
__________________
Blog de humor http://elcuasatar.net63.net/
  #8 (permalink)  
Antiguo 07/03/2013, 08:29
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: SELECT con varios values?

Sí, claro. Mira, te explico... El problema está en que en MySQL tengo una tabla llamada "Manuales". Dentro de ésta, hay diferentes columnas y una llamada 'Tipo' que son los valores que he puesto ahí arriba PP-MP-II-FF. La cosa está en que han de salir ordenados en la página en un orden que no coincide con el ASC o DESC.

Entonces me planteé darle un valor llamado 'Orden' y ordenar la tabla a partir de ahí.
El problema radica en que no le doy el valor 'MP, PP, II o FF' en el formulario de subir manual, sino que se lo doy en la página GestionManuales.php donde seleccionas el Manual a subir y te lleva al formulario estandar para todos.

Otro gran problema es que no soy experto en PHP y aún estoy pillándole el tranquillo, entonces al estar todo hecho y solo tener que ir retocando, he de adaptarme a lo que hay.

Mirad, yo hacía:
Código PHP:
Ver original
  1. <form action="formularioManual.php" class="form" name="manual" method="post" enctype="multipart/form-data">
  2.             <input type="submit" class="boton" style="width:120px;" value="Añadir nuevo"></input>
  3.             <select input name="tiporden">
  4.                 <option value='MP, 1'>Manual de Producción</option>
  5.                 <option value='PP, 2'>Procedimientos</option>
  6.                 <option value='II, 3'>Intrucciones</option>
  7.                 <option value='F, 4'>Formatos</option>
  8.             </select>

Esto es en los <option> donde me sale un desplegable para elegir el tipo de manual a subir.

Y luego, en el formulario tengo esto:
Código PHP:
Ver original
  1. if($_POST["action"] == "upload") {
  2.     $edicion = $_POST['edicion'];
  3.     $idusuario = $_SESSION['id'];
  4.     $fecha = $_POST['fecha'];
  5.     // obtenemos los datos del archivo
  6.     $tamano = $_FILES["archivo"]['size'];
  7.     list($tipo, $orden) = explode(',', $_POST['tiporden']);
  8.     $archivo = trim($_FILES["archivo"]['name']);
  9.     $archivo = limpiarString($archivo);
  10.     $url="";
  11.     if($archivo!=""){
  12.         $ruta="docs/manuales/";
  13.         if(!(file_exists($ruta))){
  14.             mkdir($ruta);
  15.         }
  16.         // guardamos el archivo en la carpeta docs/manuales
  17.         $key = date("HisdmY");
  18.         $destino =  $ruta.$key.$archivo;
  19.         if(file_exists($destino))
  20.         {
  21.             $url = "Location: gestionarManuales.php?error=Ya existe un archivo con el mismo nombre";
  22.             header($url);
  23.         } else{
  24.             if(copy($_FILES['archivo']['tmp_name'],$destino)) {
  25.                 $url = "Location: gestionarManuales.php?success=Archivo subido correctamente";
  26.                
  27.                 $insert="INSERT INTO manuales (documento,edicion,fecha,tipo,idusuario,code,orden)
  28.                         VALUES ('{$archivo}','{$edicion}','{$fecha}','{$tipo}','{$idusuario}','{$key}','{$orden}')";
  29.                
  30.                 $result=mysql_query($insert,$conexio);
  31.                                        
  32.                 header($url);
  33.             } else {
  34.                 $url = "Location: gestionarManuales.php?error=Error al subir el archivo";
  35.                 header($url);
  36.             }
  37.         }
  38.     } else {
  39.         $url = "Location: gestionarManuales.php?error=Error al subir el archivo";
  40.         header($url);
  41.     }
  42. } else {
  43.     $url = "Location: gestionarManuales.php?error=Selecciona un archivo";
  44.     header($url);
  45. }
  46. ?>

Gracias por la ayuda y perdonen si no me explico bien ^^
  #9 (permalink)  
Antiguo 07/03/2013, 08:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: SELECT con varios values?

Bien, pues al parecer el concepto lo estás aplicando bien, salvo unos detalles.

Por ejemplo, en el value usas además un espacio, lo cual, al usar explode() se conserva y por ende puede entorpecer la consulta.

Nada mejor que imprimir la consulta antes de ejecutarla para ver que valor lleva.

Probablemente lo único que debes quitar es el espacio.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 07/03/2013, 08:47
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: SELECT con varios values?

Pues aún quitándole el espacio, me sube el archivo y lo muestra en la BDD pero la columna 'tipo' y 'orden' están vacías. He de decir que en la BDD están los 2 como varchars, y creo que el 'MP,1' los pasa como strings verdad?
  #11 (permalink)  
Antiguo 07/03/2013, 08:48
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: SELECT con varios values?

Cita:
Probablemente lo único que debes quitar es el espacio.
Ese es tu error. Yo lo probe aca y funciona siempre y cuando le quites el espacio.

Igual por curiosidad mira otras alternativas para que pases tus valores

http://stackoverflow.com/questions/3...ultiple-values

p.s. Mientras escribia este mensaje vi que salio el tuyo. Si hiciste bien las cosas has un echo de tipo y orden para verificar que te llegaron:

Código PHP:
list($tipo$orden) = explode(','$_POST['tiporden']);
echo 
$tipo;
echo 
"<br/>";
echo 
$orden
Si todo salio bien (que seguro que si porque yo lo probe aca) te saldran los valores. Ya si el problema es a la hora de insertar los datos es importante que recuerdes que si vas a insertar cadenas deben ir en comillas (datos tipo varchar, text,etc) y si vas a colocar numeros no llevan comillas (tipo int,float, etc)

Apoyate en gettype y settype para saber que tipo de variable te llega y si el el caso convertirla para que la puedas insertar en tu base de datos. Mira los ejemplos para que te quede mas claro.

http://php.net/manual/es/function.gettype.php

http://www.php.net/manual/es/function.settype.php

Cita:
Nada mejor que imprimir la consulta antes de ejecutarla para ver que valor lleva.
Esto que dice pateketrueke es una verdad de a puño. Mientras uno aprende acostumbrate a imprimir la consulta, no des por sentado que esta bien, sino sera mas dificil detectar los errores.
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 07/03/2013 a las 09:05
  #12 (permalink)  
Antiguo 08/03/2013, 08:16
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: SELECT con varios values?

Bueno, ya lo solucioné. Lo que puso de list($var1, $var2)... funcionó a la perfección con lo que quería hacer, el problema era que tenía que pasar por dos archivos más: Formulariomanual.php y Añadir manual.php, entonces esto lo tuve que hacer en el Formulariomanual.php y en el otro archivo, el de añadir, solo recuperarlos con un $_POST porque ya tenía los valores $tipo y $orden del formulario. Si no habéis entendido esto no importa, lo importante es que me ayudásteis mucho y ya está solucionado. Gracias! :D

Etiquetas: formulario, select
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:38.