Club Delphi  
    FTP   CCD     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 Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 19
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
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 12-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.decsoftutils.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: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #5  
Antiguo 12-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.decsoftutils.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: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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 23:58:38
Problemas para capturar valor de OnKeyPress CamiloU Varios 7 07-04-2006 19:57:00
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 09:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 19:57:06
Select Max siempre devuelve valor FernanGil Conexión con bases de datos 3 06-10-2003 16:55:36


La franja horaria es GMT +2. Ahora son las 14:45:04.


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