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 03-09-2004
Luis Abraham Luis Abraham is offline
Miembro
 
Registrado: oct 2003
Ubicación: Guadalajara, Jalisco, México
Posts: 16
Poder: 0
Luis Abraham Va por buen camino
Error al pasar variables

Que tal Foro !!!

Estoy comenzando con PHP (de nuevo) y me estoy apoyando con un tutorial del cual saco algunos ejemplos para probarlos yo mismo, pero al llegar a la parte de los formularios me tope con un error.
Estoy utilizando Apache 2.0.5 y PHP 5.0.1 y el codigo es como sigue:

Este es el código de mi Formulario.

Código:
<form action="Formul1.php" method="post" name="myform">
Escribe tu nombre: 
<input type = "text" name = "nombre" value = "" size = "15">
<br>
Escribe tu clave: <input type="password" name="clave" value = ""><br>
Elige tu color de coche favorito:<br>
<input type = "radio" name = "color" value = "Rojo">Rojo<br>
<input type = "radio" name = "color" value = "Verde">Verde<br>
<input type = "radio" name = "color" value = "Azul">Azul<br>
Elige los extras:<br>
<input type = "checkbox" name = "acondicionado" value = "Aire">Aire acondicionado<br>
<input type = "checkbox" name = "tapiceria" value = "Tapiceria">Tapiceria en piel<br>
<input type = "checkbox" name = "llantas" value = "Aluminio">Llantas de aluminio<br>
¿Cual es el precio máximo que estarías dispuesto a pagar?<br>
<select name = "precio">
  <option>6,001 - 8,000 euros</option>
  <option>8,001 - 10,000 euros</option>
  <option>10,001 - 12,000 euros</option>
  <option>12,001 - 14,000 euros</option>
  <option>M&aacute;s de 14,000 euros</option>
</select>
<br>
<textarea rows = "5" cols = "50" name = "texto"></textarea>
<input name="Submit" type = "submit" value = "Enviar">
<input name="Reset" type = "reset" value = "Borrar">
</form>
Y este el el código php de mi página donde cacho los valores.

Código PHP:
<?php
  
echo "El method que ha usado fue: "$_SERVER['REQUEST_METHOD'], "<br>";

  echo 
$_POST['nombre'], "<br>";
  echo 
$_POST['clave'], "<br>";
  echo 
$_POST['color'], "<br>";
  echo 
$_POST['acondicionado'], "<br>";
  echo 
$_POST['tapiceria'], "<br>";
  echo 
$_POST['llantas'], "<br>";
  echo 
$_POST['precio'], "<br>";
  echo 
$_POST['texto'], "<br>";
?>
El problema viene cuando dejo los checkbox desactivados, ya que obtengo el siguiente error por cada checkbok desactivado:

Notice: Undefined index: (acondicionado, tapiceria o llantas, segun sea el caso) in C:\Archivos de programa\Apache Group\Apache2\htdocs\Tutorial\Formul1.php on line Número de linea

Lo raro es que si dejo los text y el textarea en blanco no ocurre el error.

Hace ya casi 2 años que uticé PHP y no recuerdo que me haya sucedido esto, lo raro es que si ejecutamos el ejemplo desde el tutorial esto no ocurre, sino que simplemente no muestras nada y por si le quieren echar un ojo este es el link:

http://www.rinconastur.com/php/ejemplo9b.php

No si se deba a la nueva versión del PHP o a algún error de configuración que haya podido cometer.

Bueno, ya no les echo tanto rollo y les agradezco de antemano cualquier ayuda que me puedan brindar.
__________________
Saludos desde Guadalajara, Jalisco, México

Última edición por Luis Abraham fecha: 03-09-2004 a las 05:55:40.
Responder Con Cita
  #2  
Antiguo 03-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
A vista rápida, el código me parece correcto.

He seguido el vínculo que has dejado, y todo parece funcionar correctamente... como supongo que lo has solucionado ya, es importante que vuelvas aca y nos cuentes de que se trataba el problema, para que si alguien un día enfrenta una situación similar tenga este punto de partida.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 03-09-2004
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
Un checkbox no seleccionado no manda ningún valor como fácilmente puedes comprobar:

Código PHP:
<form method='get' action="">
<
input type="checkbox" name="tapiz">
<
input type="submit">
</
form
Verás que en la barra de direcciones del navegador sólo aparece

pagina.htm?

a diferencia de

pagina.htm?tapiz=on

cuando lo seleccionas.

No me preguntes por qué es así porque no lo sé. Es cosa del HTML y no de PHP.

Lo que tienes que hacer entonces es preguntar si existe la variable con la función isset.

Por cierto, cuando coloques código trata de poner sólo lo estrictamente necesario. En este caso hubiera bastado la parte de los checkboxes, lo demás sale sobrando y hace que la lectura sea más pesada.

// Saludos

Última edición por roman fecha: 03-09-2004 a las 07:43:41.
Responder Con Cita
  #4  
Antiguo 09-09-2004
Luis Abraham Luis Abraham is offline
Miembro
 
Registrado: oct 2003
Ubicación: Guadalajara, Jalisco, México
Posts: 16
Poder: 0
Luis Abraham Va por buen camino
Unhappy

Que tal foro !!!

A decir verdad jachguate no lo he podido resolver, he utilizado la función isset y las variables si existen pero el error no desaparece.

Lo que mas raro se me hace es por que no marca el error con el ejemplo del vinculo.

Intente cambiando de Off a On la directiva register_globals del php.ini pensando en que pudiera ser por ahi, pero obtube el mismo resultado, asi que si saben algo al respecto les agradecere su ayuda.

Bueno, muchas por los comentarios y si encuentro la solucion les avisare.
__________________
Saludos desde Guadalajara, Jalisco, México
Responder Con Cita
  #5  
Antiguo 09-09-2004
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
Al código que originalmente pusiste le agregué los isset()

Código PHP:
<?
  
echo "El method que ha usado fue: "$_SERVER ['REQUEST_METHOD'], "<br>"

  echo 
$_POST['nombre'], "<br>"
  echo 
$_POST['clave'], "<br>"

  if (isset(
$color)) echo $_POST['color'], "<br>"
  if (isset(
$acondicionado)) echo $_POST['acondicionado'], "<br>"
  if (isset(
$tapiceria)) echo $_POST['tapiceria'], "<br>"
  if (isset(
$llantas)) echo $_POST['llantas'], "<br>"

  echo 
$_POST['precio'], "<br>"
  echo 
$_POST['texto'], "<br>"
?>
y me funciona sin problemas.

Por cierto, no debe extrañarte que en el enlace que indicas sí funcione. A fin de cuentas, cuando ves esa página estás viendo ya el resultado y no el código original de php.

Y aún suponiendo que ahí tengan el código sin isset() es posible que hayan suprimido los mensajes de advertencia con error_reporting().

// Saludos
Responder Con Cita
  #6  
Antiguo 09-09-2004
Luis Abraham Luis Abraham is offline
Miembro
 
Registrado: oct 2003
Ubicación: Guadalajara, Jalisco, México
Posts: 16
Poder: 0
Luis Abraham Va por buen camino
Thumbs up

Funciona !!!!

Tu si sabes roman

Muchas gracias por la ayuda !!!
__________________
Saludos desde Guadalajara, Jalisco, México
Responder Con Cita
  #7  
Antiguo 09-09-2004
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
¿Y qué era lo que estaba mal? ¿No sería que en lugar de


Código PHP:
isset($color
ponías

Código PHP:
isset('color'
?

// Saludos
Responder Con Cita
  #8  
Antiguo 09-09-2004
Luis Abraham Luis Abraham is offline
Miembro
 
Registrado: oct 2003
Ubicación: Guadalajara, Jalisco, México
Posts: 16
Poder: 0
Luis Abraham Va por buen camino
Smile

El código era el siguiente:

Código PHP:
echo  $_POST['color'],"<br>";
if (isset(
$color));
  echo 
"La variable si existe"
por lo tanto el error seguia apareciendo y el texto "La variable si existe" se imprimia siempre, pero acabo de ver que cometí un error muy tonto al poner ; al final del if() .

Pero a base de cometer errores tambien se aprende.

Muchas Gracias roman !!!
__________________
Saludos desde Guadalajara, Jalisco, México
Responder Con Cita
  #9  
Antiguo 09-09-2004
Luis Abraham Luis Abraham is offline
Miembro
 
Registrado: oct 2003
Ubicación: Guadalajara, Jalisco, México
Posts: 16
Poder: 0
Luis Abraham Va por buen camino
Unhappy

Sigue el problema !!!

Utilizando la funcion isset() como tu bien me recomendaste roman se evita que el error se produzca cuando los checkbox y radios estan desactivados, pero ahora resulta que cuando los activo tampoco muestra nada, es decir que hace exactamente lo mismo que cuando estan desactivados.

Por otro lado volviendo al codigo inicial en el cual no utilizo isset() no pasa esto, es decir que si los activo no se produce el error y si me imprime los valores de las variables.

¿Que es lo que esta mal? :S
__________________
Saludos desde Guadalajara, Jalisco, México
Responder Con Cita
  #10  
Antiguo 09-09-2004
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Haber si fuera por esto:
Código PHP:
echo  $_POST['color'],"<br>";
if (isset( 
$_POST['color']))
  echo 
"La variable si existe"
Recuerda que la variable '$color' no existe como tal, debes acceder a este valor a través de $_POST['color']. Por lo que he estado leyendo entiendo que register_globals = off, aunque me extraña mucho que unas veces utilicéis el array $_POST y otras veces accedáis directamente a la variable por su nombre.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente

Última edición por kayetano fecha: 09-09-2004 a las 10:13:15.
Responder Con Cita
  #11  
Antiguo 09-09-2004
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 kayetano
aunque me extraña mucho que unas veces utilicéis el array $_POST y otras veces accedáis directamente a la variable por su nombre.
Mea culpa

Es que quedé tan acostumbrado a acceder a las variables por su nombre que aun me cuesta trabajo usar los arreglos como $_POST.

// Saludos
Responder Con Cita
  #12  
Antiguo 10-09-2004
Luis Abraham Luis Abraham is offline
Miembro
 
Registrado: oct 2003
Ubicación: Guadalajara, Jalisco, México
Posts: 16
Poder: 0
Luis Abraham Va por buen camino
Thumbs up

Como dijo kayetano en otro hilo
Cita:
Empezado por kayetano
Hay veces que lo más claro es lo que menos se ve
Asi fue como quedo:
Código PHP:
if (isset($_POST['color'])) echo $_POST['color'], "<br>"
Muchas gracias a todos por su tiempo y su valiosa ayuda !!!
__________________
Saludos desde Guadalajara, Jalisco, México
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


La franja horaria es GMT +2. Ahora son las 19:54:51.


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