Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Error al pasar variables (https://www.clubdelphi.com/foros/showthread.php?t=13909)

Luis Abraham 03-09-2004 04:49:59

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.

jachguate 03-09-2004 06:36:40

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.

;)

roman 03-09-2004 06:41:33

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

Luis Abraham 08-09-2004 23:14:33

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.

roman 08-09-2004 23:29:12

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

Luis Abraham 09-09-2004 00:22:18

Funciona !!!! :)

Tu si sabes roman :cool:

Muchas gracias por la ayuda !!!

roman 09-09-2004 00:54:43

¿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

Luis Abraham 09-09-2004 01:33:30

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 !!!

Luis Abraham 09-09-2004 03:58:37

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

kayetano 09-09-2004 07:33:23

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.

roman 09-09-2004 08:04:46

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 :o

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

// Saludos

Luis Abraham 10-09-2004 04:37:15

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 !!!


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

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