Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 12-05-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 258
elcigarra Va por buen camino
Capturar el valor del Select

Tengo un formulario con varios campos de texto, areas, checkboxes y un Select que estaría por ejemploasí:
Código:
<select name=\"selectTipo\" tabindex=\"0\">
<option value=\"0\">Granito</option>
<option value=\"1\">Madera</option>
<option value=\"2\">Titanio</option>
<option value=\"3\">Aluminio</option>
</select>
Más abajo, genero un mensaje para mandármelo por mail con todos estos datos con la intención de incluir el valor elegido en dicho select (sería mejor la opción, pero por ahora cualquier cosa serviría) para lo cual la linea indicada para este menester dice

Código:
...
$msg .= "<b>Tipo:</b> $_POST[SelectTipo]\n<br>";
...
Por alguna razón este sistema funciona con todo lo otro pero el select me queda vacío, es decir, en el mail sale:

...
Nombre: Pinocho el muñeco
Tipo:
Ocupación: Niño
... etc

Alguien sabe que estoy haciendo mal
Responder Con Cita
  #2  
Antiguo 12-05-2006
dec dec is offline
Moderador
 
Registrado: dic 2004
Posts: 11.598
dec Va por buen camino
Hola,

Aparentemente faltan unas comillas en:

Código PHP:
$msg .= "<b>Tipo:</b> $_POST[SelectTipo]\n<br>"
Tendría que ser algo como:

Código PHP:
$msg .= "<b>Tipo:</b> $_POST['SelectTipo']\n<br>"
Porque lo siguiente funciona:

Código PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 <select name="selectTipo" tabindex="0">
  <option value="0">Granito</option>
  <option value="1">Madera</option>
  <option value="2">Titanio</option>
  <option value="3">Aluminio</option>
 </select>
 <input type="submit" value="Enviar" />
</form> 

<?php

if(!isset($_POST['selectTipo']))
  echo 
"Sin selección";
else
  echo 
$_POST['selectTipo'];

?>
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #3  
Antiguo 12-05-2006
dec dec is offline
Moderador
 
Registrado: dic 2004
Posts: 11.598
dec Va por buen camino
Hola de nuevo,

Bueno... pues parece que debe haber algún otro problema... yo acabo de descubrir que así también parece funcionar bien:

Código PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 <select name="selectTipo" tabindex="0">
  <option value="0">Granito</option>
  <option value="1">Madera</option>
  <option value="2">Titanio</option>
  <option value="3">Aluminio</option>
 </select>
 <input type="submit" value="Enviar" />
</form> 

<?php

if(!isset($_POST[selectTipo]))
  echo 
"Sin selección";
else
  echo 
$_POST[selectTipo];

?>
De todos modos me parece que preferiría el uso de las comillas en este caso, pero,... perplejo me he quedado al ver que funciona aún sin ellas.
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #4  
Antiguo 12-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 18.514
roman Va por buen camino
David, nota que elcigarra usa una expresión:

Código PHP:
$msg .= "<b>Tipo:</b> $_POST[SelectTipo]\n<br>"
en donde la referencia al arreglo se hace dentro de unas comillas dobles mientras que en tu ejempo la utilizas suelta:

Código PHP:
echo $_POST['selectTipo']; 
Cuando un arreglo se usa dentro de una expresión en comillas dobles, no sólo no es necesario entrecomillar el índice del arreglo sino que, de hecho, no es posible: al hacerlo se genera un "parse error".

Cuando el arreglo se utiliza suelto, no está prohibido dejar de entrecomillar el índice del arreglo, pero se genera una advertencia:

Cita:
Use of undefined constant selectTipo - assumed 'selectTipo'
(misma que podrías no ver si la directiva display_errors está apagada). Como sólo es una advertencia el código se ejecuta "bien".

En cuanto a la duda de elcigarra, lo único que veo es que el select está nombrado con selectTipo (minúscula inicial) mientras que en el post se le llama con SelectTipo (mayúscula inicial).

// Saludos
__________________

Menos reyes y más elefantes
http://clubdelphi.com/correo_contacto_clubdelphi.png
Responder Con Cita
  #5  
Antiguo 12-05-2006
dec dec is offline
Moderador
 
Registrado: dic 2004
Posts: 11.598
dec Va por buen camino
Hola,

Pues va a ser lo que dices Román. Yo acostumbraba hasta ahora a entrecomillar y si no recuerdo mal podía hacer algo así:

Código PHP:
$msg .= "<b>Tipo:</b> {$_POST['SelectTipo']}\n<br>"
Pero ahora mismo no sabría decir si eso funcionaba o no era más bien para utilizar junto a "Arrays" en determinados casos.

Debe ser lo que dices entonces, que no se respete el "case sensitive", es un error de los típicos que te hacen perder no poco tiempo y originan frustración y al cabo... cuando lo descubres... a mí me ha ocurrido a veces después de muchas horas encima de algo, por ejemplo.

Ya dirá algo el compañero.
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #6  
Antiguo 12-05-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 18.514
roman Va por buen camino
Cita:
Empezado por dec
$msg .= "<b>Tipo:</b> {$_POST['SelectTipo']}\n<br>";
¡Ahhh! Pero es que ahora usas llaves {} y en ese caso vuelve a ser obligatorio el entrecomillar el índice De esto no estaba yo muy al tanto pero parece que las llaves son como un escape de las comillas dobles.

Cita:
Empezado por dec
es un error de los típicos que te hacen perder no poco tiempo
Pues sí, pero en estos casos más bien parece que tienen desactivada la opción display_errors. De lo contrario inmediatamente php les advertiría que algo anda mal.

Moraleja: durante el desarrollo no desactivar los mensajes de error.

// Saludos
__________________

Menos reyes y más elefantes
http://clubdelphi.com/correo_contacto_clubdelphi.png
Responder Con Cita
  #7  
Antiguo 12-05-2006
dec dec is offline
Moderador
 
Registrado: dic 2004
Posts: 11.598
dec Va por buen camino
Hola,

Cita:
Empezado por Román
Moraleja: durante el desarrollo no desactivar los mensajes de error.
Nada que objetar: llevas razón.

Cita:
Empezado por PHP
Notice: Use of undefined constant SelectTipo - assumed 'SelectTipo' in c:\localhost\www\test.php on line 10
__________________
David Esperalta
www.davidesperalta.com

Última edición por dec fecha: 12-05-2006 a las 07:49:39.
Responder Con Cita
  #8  
Antiguo 12-05-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 258
elcigarra Va por buen camino
Como diría mi abuelo: ...A la flauta !!!
Me temo que sí puede ser la mayúscula, lástima que ahora no puedo probarlo... En todo caso les aviso.
Responder Con Cita
  #9  
Antiguo 13-05-2006
Avatar de Perberos
Perberos Perberos is offline
Miembro
 
Registrado: may 2006
Posts: 17
Perberos Va por buen camino
me encanta jugar con las comillas y reformatear el codigo :P
Código PHP:
$msg .= "<b>Tipo:</b> ".$_POST['selectTipo']."\n<br>"
Código PHP:
$msg .= '<b>Tipo:</b> '.$_POST["selectTipo"].'\n<br>'
Código PHP:
$msg .= <<<END
<b>Tipo:</b> $_POST[selectTipo]
<br>
END; 
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
valor de SELECT COUNT maruenda SQL 15 25-05-2007 22:58:38
Problemas para capturar valor de OnKeyPress CamiloU Varios 7 07-04-2006 18:57:00
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06
Select Max siempre devuelve valor FernanGil Conexión con bases de datos 3 06-10-2003 15:55:36


La franja horaria es GMT +2. Ahora son las 02:39:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi