Foros del Web » Programando para Internet » PHP »

¿Algun error en este script?

Estas en el tema de ¿Algun error en este script? en el foro de PHP en Foros del Web. Hola, tengo hecho este script en el que sale un pequeño formulario que servirá para dar formato a un nombre insertado. Es decir, si se ...
  #1 (permalink)  
Antiguo 03/05/2004, 07:59
 
Fecha de Ingreso: septiembre-2003
Mensajes: 320
Antigüedad: 14 años, 3 meses
Puntos: 3
¿Algun error en este script?

Hola, tengo hecho este script en el que sale un pequeño formulario que servirá para dar formato a un nombre insertado.
Es decir, si se mete "pEriQUIn RODRIgUEz", el resultado, después de haber pulsado el botón para dar formato, será "Periquín Rodriguez".
Antes me funcionaba bien, con el programa Top php Studio 1.19, pero éste me caducó, y ahora, con el Zend Studio 3.0.1, no funciona bien...
Me aparecen 4 notificaciones (que las entiendo, pero no se como resolverlas):

1) C:\AppServ\www\formateo_nombres.php línea 10 - Undefined index: formateo

2) C:\AppServ\www\formateo_nombres.php línea 11 - Undefined index: nombre

3) C:\AppServ\www\formateo_nombres.php línea 27 - Undefined variable: nombre

4) C:\AppServ\www\formateo_nombres.php línea 37 - Undefined variable: resul


<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<?

LINEA 10: $boton=$_POST['formateo'];
LINEA 11: $texto=$_POST['nombre'];

if (!empty($boton)){

$resul = ucwords(strtolower($nombre));
#echo $resul;
}
#$texto2=$resul;
echo "<form name='form1' method='POST' action='$_SERVER[PHP_SELF]'>";
?>

<table width="80%" border="2" cellpadding="2">
<tr>
<td>
<div align="right">Nombre a formatear:</div>
</td>
<td>
LINEA 27: <?echo "<input type='text' name='nombre' value='$nombre'>"; ?>
</td>
</tr>
<tr>
<td>
<div align="right">Resultado formateado:</div>
</td>
<td>

<?
LINEA 37: echo "<input type='text' value='$resul'>";
#echo $resul;?>
</td>
</tr>
<tr>
<td colspan="2">
<center><input type="submit" name="formateo" value="Dar Formato"></center>
</td>
</tr>
</table>
</form>
</body>
</html>
  #2 (permalink)  
Antiguo 03/05/2004, 09:24
 
Fecha de Ingreso: septiembre-2003
Mensajes: 320
Antigüedad: 14 años, 3 meses
Puntos: 3
Vale, he cambiado lo que puse en las lineas 10 y 11 (más bien las puese como comentario) y en la siguiente, puse:

if (!empty($_POST['formateo'])){
....

Con lo cual las dos primeras notificaciones ya no me salen. Pero la tercera y la cuarta, se mantienen.
Son las concernientes a:

<?echo "<input type='text' name='nombre' value='$nombre'>"; ?>

y a:

<? echo "<input type='text' value='$resul'>";?>

¿Qué puede ser? Me estoy volviendo pelín loco.......
  #3 (permalink)  
Antiguo 03/05/2004, 09:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Debes usar los arrays superglobales donde lo requieras .. o bien hacer cosas tipo:


Código PHP:
if (!empty($_POST['formateo'])){
$formateo=$_POST['formateo'];
} else {
$formateo='';

Pero .. sería recomendable que hicieras algo tipo:

Código PHP:
<? echo "<input type='text' value='";
if (!empty(
$_POST['formateo'])){
echo 
$_POST['formateo'];
}
echo 
"'>";?>
Y lo mismo para las variables externas (a tu script) que en algún momento no están definidas pero en otro momento serán definidas (como es tu caso).

También puedes bajar el nivel de "avisos" de PHP con error_reporting() (o para todo script que ejecutes en el servidor con la misma directiva de mismo nombre de tu php.ini).

pero . .Por lo menos, el mensaje de error te hizo ver y aprender como debes validar tus variables (su existencia) mínimo .. lo cual es una buena "práctica" ... aunque en la práctica resulte "engorroso" hacerlo.

Estos procesos se pueden automatizar con uso de arrays o del própio uso del array que es $_POST y similares "superglobales" donde lo recorrerías con un bucle ... como se describe en este mensaje:

http://www.forosdelweb.com/s/msg199765.html


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 22:50.